[PATCH v2 1/3] fast-import: do not write null_sha1 as a merge parent
From: Dmitry Ivankov <hidden>
Date: 2016-06-15 22:54:11
Subsystem:
the rest · Maintainer:
Linus Torvalds
null_sha1 is used in fast-import to indicate "empty" branches and should never be actually written out as a commit parent. 'merge' command lacks is_null_sha1 checks and must be fixed. It looks like using null_sha1 or empty branches in 'from' command is legal and/or an intended option (it has been here from the very beginning and survived). So leave it allowed for 'merge' command too, and just like with 'from' command silently skip null_sha1 parents. Add a simple test for null_sha1 merge parents. Signed-off-by: Dmitry Ivankov <redacted> --- fast-import.c | 3 ++- t/t9300-fast-import.sh | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletions(-)
diff --git a/fast-import.c b/fast-import.c
index eed97c8..419e435 100644
--- a/fast-import.c
+++ b/fast-import.c@@ -2734,7 +2734,8 @@ static void parse_new_commit(void) strbuf_addf(&new_data, "parent %s\n", sha1_to_hex(b->sha1)); while (merge_list) { struct hash_list *next = merge_list->next; - strbuf_addf(&new_data, "parent %s\n", sha1_to_hex(merge_list->sha1)); + if (!is_null_sha1(merge_list->sha1)) + strbuf_addf(&new_data, "parent %s\n", sha1_to_hex(merge_list->sha1)); free(merge_list); merge_list = next; }
diff --git a/t/t9300-fast-import.sh b/t/t9300-fast-import.sh
index c17f52e..5716420 100755
--- a/t/t9300-fast-import.sh
+++ b/t/t9300-fast-import.sh@@ -850,6 +850,27 @@ INPUT_END test_expect_success \ 'J: tag must fail on empty branch' \ 'test_must_fail git fast-import <input' + +cat >input <<INPUT_END +reset refs/heads/J3 + +reset refs/heads/J4 +from 0000000000000000000000000000000000000000 + +commit refs/heads/J5 +committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE +data <<COMMIT +Merge J3, J4 into fresh J5. +COMMIT +merge refs/heads/J3 +merge refs/heads/J4 + +INPUT_END +test_expect_success \ + 'J: allow merge with empty branch' \ + 'git fast-import <input && + git rev-parse --verify J5 && + test_must_fail git rev-parse --verify J5^' ### ### series K ###
--
1.7.3.4