git-merge-po 924 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/bin/sh
  2. #
  3. # https://gist.github.com/mezis/1605647
  4. # by Julien Letessier (mezis)
  5. #
  6. # Custom Git merge driver - merges PO files using msgcat(1)
  7. #
  8. # - Install gettext
  9. #
  10. # - Place this script in your PATH
  11. #
  12. # - Add this to your .git/config :
  13. #
  14. # [merge "pofile"]
  15. # name = Gettext merge driver
  16. # driver = git merge-po %O %A %B
  17. #
  18. # - Add this to .gitattributes :
  19. #
  20. # *.po merge=pofile
  21. # *.pot merge=pofile
  22. #
  23. # - When merging branches, conflicts in PO files will be maked with "#-#-#-#"
  24. #
  25. O=$1
  26. A=$2
  27. B=$3
  28. # Extract the PO header from the current branch (top of file until first empty line)
  29. header=$(mktemp /tmp/merge-po.XXXX)
  30. sed -e '/^$/q' < $A > $header
  31. # Merge files, then repair header
  32. temp=$(mktemp /tmp/merge-po.XXXX)
  33. msgcat -o $temp $A $B
  34. msgcat --use-first -o $A $header $temp
  35. # Clean up
  36. rm $header $temp
  37. # Check for conflicts
  38. conflicts=$(grep -c "#-#" $A)
  39. test $conflicts -gt 0 && exit 1
  40. exit 0