Merge branch 'ks/recursive-rename-add-identical'

* ks/recursive-rename-add-identical:
  RE: [PATCH] Avoid rename/add conflict when contents are identical
This commit is contained in:
Junio C Hamano 2010-09-15 12:39:12 -07:00
commit 9f0ccb5b0a
2 changed files with 41 additions and 0 deletions

View File

@ -955,6 +955,12 @@ static int process_renames(struct merge_options *o,
ren1->pair->two : NULL,
branch1 == o->branch1 ?
NULL : ren1->pair->two, 1);
} else if ((dst_other.mode == ren1->pair->two->mode) &&
sha_eq(dst_other.sha1, ren1->pair->two->sha1)) {
/* Added file on the other side
identical to the file being
renamed: clean merge */
update_file(o, 1, ren1->pair->two->sha1, ren1->pair->two->mode, ren1_dst);
} else if (!sha_eq(dst_other.sha1, null_sha1)) {
const char *new_path;
clean_merge = 0;

View File

@ -23,6 +23,8 @@ test_expect_success 'setup 1' '
git branch df-3 &&
git branch remove &&
git branch submod &&
git branch copy &&
git branch rename &&
echo hello >>a &&
cp a d/e &&
@ -248,6 +250,22 @@ test_expect_success 'setup 7' '
git commit -m "make d/ a submodule"
'
test_expect_success 'setup 8' '
git checkout rename &&
git mv a e &&
git add e &&
test_tick &&
git commit -m "rename a->e"
'
test_expect_success 'setup 9' '
git checkout copy &&
cp a e &&
git add e &&
test_tick &&
git commit -m "copy a->e"
'
test_expect_success 'merge-recursive simple' '
rm -fr [abcd] &&
@ -580,4 +598,21 @@ test_expect_failure 'merge-recursive simple w/submodule result' '
test_cmp expected actual
'
test_expect_success 'merge-recursive copy vs. rename' '
git checkout -f copy &&
git merge rename &&
( git ls-tree -r HEAD && git ls-files -s ) >actual &&
(
echo "100644 blob $o0 b"
echo "100644 blob $o0 c"
echo "100644 blob $o0 d/e"
echo "100644 blob $o0 e"
echo "100644 $o0 0 b"
echo "100644 $o0 0 c"
echo "100644 $o0 0 d/e"
echo "100644 $o0 0 e"
) >expected &&
test_cmp expected actual
'
test_done