diff options
author | Thomas Rast <trast@student.ethz.ch> | 2010-03-12 18:04:33 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-03-12 21:55:40 -0800 |
commit | eb2151bb8938a8e2af86e3ed34243af7b1c95786 (patch) | |
tree | 3662a91fb03bd6c76d6ff1caa3409eeacf72f18d | |
parent | 6956f858f6237d426fa422949033e3c558104802 (diff) | |
download | git-eb2151bb8938a8e2af86e3ed34243af7b1c95786.tar.gz |
rebase: support automatic notes copying
Luckily, all the support already happens to be there.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | git-am.sh | 5 | ||||
-rwxr-xr-x | git-rebase--interactive.sh | 4 | ||||
-rwxr-xr-x | git-rebase.sh | 1 | ||||
-rwxr-xr-x | t/t3400-rebase.sh | 17 | ||||
-rwxr-xr-x | t/t3404-rebase-interactive.sh | 24 |
5 files changed, 50 insertions, 1 deletions
@@ -780,8 +780,11 @@ do go_next done -if test -s "$dotest"/rewritten && test -x "$GIT_DIR"/hooks/post-rewrite; then +if test -s "$dotest"/rewritten; then + git notes copy --for-rewrite=rebase < "$dotest"/rewritten + if test -x "$GIT_DIR"/hooks/post-rewrite; then "$GIT_DIR"/hooks/post-rewrite rebase < "$dotest"/rewritten + fi fi git gc --auto diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index d72f549f61..f69c062def 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -570,6 +570,10 @@ do_next () { test ! -f "$DOTEST"/verbose || git diff-tree --stat $(cat "$DOTEST"/head)..HEAD } && + { + git notes copy --for-rewrite=rebase < "$REWRITTEN_LIST" || + true # we don't care if this copying failed + } && if test -x "$GIT_DIR"/hooks/post-rewrite && test -s "$REWRITTEN_LIST"; then "$GIT_DIR"/hooks/post-rewrite rebase < "$REWRITTEN_LIST" diff --git a/git-rebase.sh b/git-rebase.sh index 417a1a95cd..3a26321faa 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -154,6 +154,7 @@ move_to_original_branch () { finish_rb_merge () { move_to_original_branch + git notes copy --for-rewrite=rebase < "$dotest"/rewritten if test -x "$GIT_DIR"/hooks/post-rewrite && test -s "$dotest"/rewritten; then "$GIT_DIR"/hooks/post-rewrite rebase < "$dotest"/rewritten diff --git a/t/t3400-rebase.sh b/t/t3400-rebase.sh index 4e6a44b623..cca284004d 100755 --- a/t/t3400-rebase.sh +++ b/t/t3400-rebase.sh @@ -155,4 +155,21 @@ test_expect_success 'Rebase a commit that sprinkles CRs in' ' git diff --exit-code file-with-cr:CR HEAD:CR ' +test_expect_success 'rebase can copy notes' ' + git config notes.rewrite.rebase true && + git config notes.rewriteRef "refs/notes/*" && + test_commit n1 && + test_commit n2 && + test_commit n3 && + git notes add -m"a note" n3 && + git rebase --onto n1 n2 && + test "a note" = "$(git notes show HEAD)" +' + +test_expect_success 'rebase -m can copy notes' ' + git reset --hard n3 && + git rebase -m --onto n1 n2 && + test "a note" = "$(git notes show HEAD)" +' + test_done diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh index 4e3513709e..19668c2c92 100755 --- a/t/t3404-rebase-interactive.sh +++ b/t/t3404-rebase-interactive.sh @@ -553,4 +553,28 @@ test_expect_success 'reword' ' git show HEAD~2 | grep "C changed" ' +test_expect_success 'rebase -i can copy notes' ' + git config notes.rewrite.rebase true && + git config notes.rewriteRef "refs/notes/*" && + test_commit n1 && + test_commit n2 && + test_commit n3 && + git notes add -m"a note" n3 && + git rebase --onto n1 n2 && + test "a note" = "$(git notes show HEAD)" +' + +cat >expect <<EOF +an earlier note +a note +EOF + +test_expect_success 'rebase -i can copy notes over a fixup' ' + git reset --hard n3 && + git notes add -m"an earlier note" n2 && + GIT_NOTES_REWRITE_MODE=concatenate FAKE_LINES="1 fixup 2" git rebase -i n1 && + git notes show > output && + test_cmp expect output +' + test_done |