diff options
| author | Junio C Hamano <gitster@pobox.com> | 2018-05-08 15:59:33 +0900 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2018-05-08 15:59:33 +0900 |
| commit | ad3207e6ff019060e4f634a5455aa0ae248e3a7a (patch) | |
| tree | 8a5d3a7ffb087a491ecb6d4db68078144e4df495 | |
| parent | Merge branch 'tz/doc-git-urls-reference' (diff) | |
| parent | fast-export: fix regression skipping some merge-commits (diff) | |
| download | git-ad3207e6ff019060e4f634a5455aa0ae248e3a7a.tar.gz git-ad3207e6ff019060e4f634a5455aa0ae248e3a7a.zip | |
Merge branch 'ma/fast-export-skip-merge-fix'
"git fast-export" had a regression in v2.15.0 era where it skipped
some merge commits in certain cases, which has been corrected.
* ma/fast-export-skip-merge-fix:
fast-export: fix regression skipping some merge-commits
| -rw-r--r-- | builtin/fast-export.c | 5 | ||||
| -rwxr-xr-x | t/t9350-fast-export.sh | 18 |
2 files changed, 22 insertions, 1 deletions
diff --git a/builtin/fast-export.c b/builtin/fast-export.c index a15898d641..530df12f05 100644 --- a/builtin/fast-export.c +++ b/builtin/fast-export.c @@ -651,8 +651,11 @@ static void handle_tail(struct object_array *commits, struct rev_info *revs, struct commit *commit; while (commits->nr) { commit = (struct commit *)object_array_pop(commits); - if (has_unshown_parent(commit)) + if (has_unshown_parent(commit)) { + /* Queue again, to be handled later */ + add_object_array(&commit->object, NULL, commits); return; + } handle_commit(commit, revs, paths_of_changed_objects); } } diff --git a/t/t9350-fast-export.sh b/t/t9350-fast-export.sh index d5679ffb87..6a392e87bc 100755 --- a/t/t9350-fast-export.sh +++ b/t/t9350-fast-export.sh @@ -538,4 +538,22 @@ test_expect_success 'when using -C, do not declare copy when source of copy is a test_cmp expected actual ' +test_expect_success 'merge commit gets exported with --import-marks' ' + test_create_repo merging && + ( + cd merging && + test_commit initial && + git checkout -b topic && + test_commit on-topic && + git checkout master && + test_commit on-master && + test_tick && + git merge --no-ff -m Yeah topic && + + echo ":1 $(git rev-parse HEAD^^)" >marks && + git fast-export --import-marks=marks master >out && + grep Yeah out + ) +' + test_done |
