diff options
Diffstat (limited to 'git-merge-one-file-script')
-rwxr-xr-x | git-merge-one-file-script | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/git-merge-one-file-script b/git-merge-one-file-script new file mode 100755 index 0000000000..26dbe63e02 --- /dev/null +++ b/git-merge-one-file-script @@ -0,0 +1,35 @@ +#!/bin/sh +# +# This is the git merge script, called with +# +# $1 - original file (or empty string) +# $2 - file in branch1 (or empty string) +# $3 - file in branch2 (or empty string) +# $4 - pathname in repository +# +# +# Case 1: file removed in both +# +if [ -z "$2$3" ]; then + rm -- "$4" + update-cache --remove -- "$4" + exit 0 +fi +# +# Case 2: file exists in just one +# +if [ "$2$3" == "$3$2" ]; then + cat "$2$3" > "$4" + update-cache --add -- "$4" + exit 0 +fi +# +# Case 3: file exists in both +# +src="$1" +if [ -z "$1" ]; then + src=/dev/null +fi +echo "Auto-merging $4" +cp "$3" "$4" +merge "$4" "$src" "$2" && update-cache --add -- "$4" |