1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-10-30 13:57:54 +01:00
git/git-merge-one-file-script
Linus Torvalds 839a7a06f3 Add the simple scripts I used to do a merge with content conflicts.
They sure as hell aren't perfect, but they allow you to do:

	./git-pull-script {other-git-directory}

to do the initial merge, and if that had content clashes, you do

	merge-cache ./git-merge-one-file-script -a

which tries to auto-merge. When/if the auto-merge fails, it will
leave the last file in your working directory, and you can edit
it and then when you're happy you can do "update-cache filename"
on it. Re-do the merge-cache thing until there are no files left
to be merged, and now you can write the tree and commit:

	write-tree
	commit-tree .... -p $(cat .git/HEAD) -p $(cat .git/MERGE_HEAD)

and you're done.
2005-04-18 12:15:10 -07:00

35 lines
629 B
Bash
Executable file

#!/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"