From 057218422892984e6d2eecff3a7605040b65fdf2 Mon Sep 17 00:00:00 2001 From: Kirill Smelkov Date: Thu, 18 Sep 2008 20:29:30 +0400 Subject: [PATCH] tg import: fix + make more robust a5bf892d0900cbf9949f628c3e05db599341a02c (tg import: Check out new files as we go) broke tg-import. This is how it fails after that change: $ tg import Z~~..Z tg: ---- Importing e3e8c1382fe4cedca31e955910914ae0033455eb to t/Z tg: Automatically marking dependency on master tg: Creating t/Z base from master... Switched to a new branch "t/Z" tg: Topic branch t/Z set up. Please fill .topmsg now and make initial commit. tg: To abort: git rm -f .top* && git checkout master && tg delete t/Z fatal: pathspec '.topdeps' did not match any files That's why, when we do git read-tree -u -m it _kills_ .topmsg and .topdep both in index and in working tree! Also, imagine that we are going to import patch C onto A o---B---A \ C With read-tree we'll *override* any change in common files between A and B, so I think read-tree is wrong here (it was ok if we are importing on top of B). What is right it seems, is to work on diff level -- to use cherry-pick. And since cherry-pick does not kill our already-in-index .topmsg and .topdeps we automatically fix the breakage. Signed-off-by: Kirill Smelkov --- tg-import.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tg-import.sh b/tg-import.sh index 68477f0..799efc9 100644 --- a/tg-import.sh +++ b/tg-import.sh @@ -61,7 +61,7 @@ process_commit() branch_name=$(get_branch_name "$commit") info "---- Importing $commit to $branch_prefix$branch_name" tg create "$branch_prefix""$branch_name" - git read-tree -u -m "$commit" + git cherry-pick --no-commit "$commit" get_commit_msg "$commit" > .topmsg git add -f .topmsg .topdeps git commit -C "$commit" -- 2.30.2