diff options
author | Junio C Hamano <junkio@cox.net> | 2005-11-10 19:30:23 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-11-11 21:18:18 -0800 |
commit | fd66dbf5297a4badec8c2accf8a0f9bd72e3f693 (patch) | |
tree | 3cf84815426567391327f3feecec59f8ab9a610b /git-merge-one-file.sh | |
parent | e433705dd4dc52c45e5d82b615f07b5a4b27f185 (diff) | |
download | git-fd66dbf5297a4badec8c2accf8a0f9bd72e3f693.tar.gz |
merge-one-file: use empty- or common-base condintionally in two-stage merge.
If two sides added the same path completely different thing, it is
easier to see the merge pivoting on /dev/null. So check the size of
the common section we have found, and empty it if it is too small.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'git-merge-one-file.sh')
-rwxr-xr-x | git-merge-one-file.sh | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/git-merge-one-file.sh b/git-merge-one-file.sh index d9ee458150..b08597de29 100755 --- a/git-merge-one-file.sh +++ b/git-merge-one-file.sh @@ -64,7 +64,13 @@ case "${1:-.}${2:-.}${3:-.}" in # This extracts OUR file in $orig, and uses git-apply to # remove lines that are unique to ours. orig=`git-unpack-file $2` + sz0=`wc -c <"$orig"` diff -u -La/$orig -Lb/$orig $orig $src2 | git-apply --no-add + sz1=`wc -c <"$orig"` + + # If we do not have enough common material, it is not + # worth trying two-file merge using common subsections. + expr "$sz0" \< "$sz1" \* 2 >/dev/null || : >$orig ;; *) echo "Auto-merging $4." |