#!/bin/bash # # Custom Git merge driver - merges PO files using msgcat(1) # # To use this, # git config merge.pofile.name "Gettext merge driver" # git config merge.pofile.driver "src/po/git-merge-po %O %A %B" # # - When merging branches, conflicts in PO files will be maked with "#-#-#-#" # set -x O="$1" A="$2" B="$3" # Extract the PO header from the current branch (top of file until first empty line) header="$(mktemp /tmp/merge-po.XXXX)" sed -e '/^$/q' < "$A" > "$header" # Merge files, then repair header temp="$(mktemp /tmp/merge-po.XXXX)" msgcat -o "$temp" "$A" "$B" msgcat --use-first -o "$A" "$header" "$temp" # Clean up rm "$header" "$temp" # Check for conflicts conflicts=$(grep -c "#-#" "$A") test "$conflicts" -gt 0 && exit 1 exit 0