From 96e19488f1e8f3964f5f329248852864b4ee4541 Mon Sep 17 00:00:00 2001 From: Thomas Rast Date: Fri, 12 Mar 2010 18:04:29 +0100 Subject: rebase: invoke post-rewrite hook We have to deal with two separate code paths: a normal rebase, which actually goes through git-am; and rebase {-m|-s}. The only small issue with both is that they need to remember the original sha1 across a possible conflict resolution. rebase -m already puts this information in $dotest/current, and we just introduce a similar file for git-am. Note that in git-am, the hook really only runs when coming from git-rebase: the code path that sets the $dotest/original-commit file is guarded by a test for $dotest/rebasing. Signed-off-by: Thomas Rast Signed-off-by: Junio C Hamano --- git-am.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'git-am.sh') diff --git a/git-am.sh b/git-am.sh index 2f46fda47..1056e7db6 100755 --- a/git-am.sh +++ b/git-am.sh @@ -573,6 +573,7 @@ do echo "Patch is empty. Was it split wrong?" stop_here $this } + rm -f "$dotest/original-commit" if test -f "$dotest/rebasing" && commit=$(sed -e 's/^From \([0-9a-f]*\) .*/\1/' \ -e q "$dotest/$msgnum") && @@ -580,6 +581,7 @@ do then git cat-file commit "$commit" | sed -e '1,/^$/d' >"$dotest/msg-clean" + echo "$commit" > "$dotest/original-commit" else { sed -n '/^Subject/ s/Subject: //p' "$dotest/info" @@ -766,6 +768,10 @@ do git update-ref -m "$GIT_REFLOG_ACTION: $FIRSTLINE" HEAD $commit $parent || stop_here $this + if test -f "$dotest/original-commit"; then + echo "$(cat "$dotest/original-commit") $commit" >> "$dotest/rewritten" + fi + if test -x "$GIT_DIR"/hooks/post-applypatch then "$GIT_DIR"/hooks/post-applypatch @@ -774,6 +780,10 @@ do go_next done +if test -s "$dotest"/rewritten && test -x "$GIT_DIR"/hooks/post-rewrite; then + "$GIT_DIR"/hooks/post-rewrite rebase < "$dotest"/rewritten +fi + git gc --auto rm -fr "$dotest" -- cgit v1.2.1 From eb2151bb8938a8e2af86e3ed34243af7b1c95786 Mon Sep 17 00:00:00 2001 From: Thomas Rast Date: Fri, 12 Mar 2010 18:04:33 +0100 Subject: rebase: support automatic notes copying Luckily, all the support already happens to be there. Signed-off-by: Thomas Rast Signed-off-by: Junio C Hamano --- git-am.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'git-am.sh') diff --git a/git-am.sh b/git-am.sh index 1056e7db6..7644474bc 100755 --- a/git-am.sh +++ b/git-am.sh @@ -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 -- cgit v1.2.1