Merge branch 'sb/test-cherry-pick-submodule-getting-in-a-way'

The three-way merge performed by "git cherry-pick" was confused
when a new submodule was added in the meantime, which has been
fixed (or "papered over").

* sb/test-cherry-pick-submodule-getting-in-a-way:
  merge-recursive: handle addition of submodule on our side of history
  t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure
This commit is contained in:
Junio C Hamano 2017-11-27 11:06:34 +09:00
Родитель c5e763083f c641ca6707
Коммит f70a50fc48
2 изменённых файлов: 39 добавлений и 2 удалений

Просмотреть файл

@ -1901,8 +1901,9 @@ static int process_entry(struct merge_options *o,
oid = b_oid;
conf = _("directory/file");
}
if (dir_in_way(path, !o->call_depth,
S_ISGITLINK(a_mode))) {
if (dir_in_way(path,
!o->call_depth && !S_ISGITLINK(a_mode),
0)) {
char *new_path = unique_path(o, path, add_branch);
clean_merge = 0;
output(o, 1, _("CONFLICT (%s): There is a directory with name %s in %s. "

Просмотреть файл

@ -10,4 +10,40 @@ KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1
KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1
test_submodule_switch "git cherry-pick"
test_expect_success 'unrelated submodule/file conflict is ignored' '
test_create_repo sub &&
touch sub/file &&
git -C sub add file &&
git -C sub commit -m "add a file in a submodule" &&
test_create_repo a_repo &&
(
cd a_repo &&
>a_file &&
git add a_file &&
git commit -m "add a file" &&
git branch test &&
git checkout test &&
mkdir sub &&
>sub/content &&
git add sub/content &&
git commit -m "add a regular folder with name sub" &&
echo "123" >a_file &&
git add a_file &&
git commit -m "modify a file" &&
git checkout master &&
git submodule add ../sub sub &&
git submodule update sub &&
git commit -m "add a submodule info folder with name sub" &&
git cherry-pick test
)
'
test_done