#!/bin/sh # # https://gist.github.com/mezis/1605647 # by Julien Letessier (mezis) # # Custom Git merge driver - merges PO files using msgcat(1) # # - Install gettext # # - Place this script in your PATH # # - Add this to your .git/config : # # [merge "pofile"] # name = Gettext merge driver # driver = git merge-po %O %A %B # # - Add this to .gitattributes : # # *.po merge=pofile # *.pot merge=pofile # # - When merging branches, conflicts in PO files will be marked with "#-#-#-#" # # 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