45 lines
924 B
Bash
45 lines
924 B
Bash
#!/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 maked 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
|