#!/bin/bash
#
# Author: Bernie Innocenti <bernie@codewiz.org>
# Please, send any improvements back to me
#
# == Installation ==
# 1. Put this script in your $PATH
# 2. Append this snippet to your ~/.gitconfig :
#
#  [merge "gpg"]
#    name = merge gpg-encrypted files
#    driver = gpg-merge %O %A %B
#    recursive = binary
#

if [ $# != 3 ]; then
	echo >&2 "Usage: gpg-merge %O %A %B"
	echo >&2 "%O: original, %A: current version, %B: other branch version"
	exit 1
fi
orig=/tmp/gpg-merge-orig.$$
current=/tmp/gpg-merge-current.$$
branch=/tmp/gpg-merge-branch.$$

gpg -d <"$1" >$orig    || exit 1
gpg -d <"$2" >$current || exit 1
gpg -d <"$3" >$branch  || exit 1

oldtime=`stat --format='%Y' $current`
vimdiff $current $branch || exit 1
newtime=`stat --format='%Y' $current`

if [ $oldtime == $newtime ]; then
	echo >&2 "$current not changed, aborting merge"
	exit 1
fi

gpg -e -a -r bernie <$current >$2 || exit 1
rm "$orig" "$current" "$branch"

exit 0
