/ src / po / git-merge-po
git-merge-po
 1  #!/bin/bash
 2  #
 3  # Custom Git merge driver - merges PO files using msgcat(1)
 4  #
 5  # To use this,
 6  #  git config merge.pofile.name "Gettext merge driver"
 7  #  git config merge.pofile.driver "src/po/git-merge-po %O %A %B"
 8  #
 9  # - When merging branches, conflicts in PO files will be maked with "#-#-#-#"
10  #
11  set -x
12  O="$1"
13  A="$2"
14  B="$3"
15  
16  # Extract the PO header from the current branch (top of file until first empty line)
17  header="$(mktemp /tmp/merge-po.XXXX)"
18  sed -e '/^$/q' < "$A" > "$header"
19  
20  # Merge files, then repair header
21  temp="$(mktemp /tmp/merge-po.XXXX)"
22  msgcat -o "$temp" "$A" "$B"
23  msgcat --use-first -o "$A" "$header" "$temp"
24  
25  # Clean up
26  rm "$header" "$temp"
27  
28  # Check for conflicts
29  conflicts=$(grep -c "#-#" "$A")
30  test "$conflicts" -gt 0 && exit 1
31  exit 0