summaryrefslogtreecommitdiff
path: root/git-am.sh
diff options
context:
space:
mode:
authorThomas Rast <trast@student.ethz.ch>2010-03-12 17:04:29 (GMT)
committerJunio C Hamano <gitster@pobox.com>2010-03-13 05:55:39 (GMT)
commit96e19488f1e8f3964f5f329248852864b4ee4541 (patch)
tree9f5b3f875f308d7e30bf2c3ac56a12519b8ed125 /git-am.sh
parent6f6bee3ba9260137f27bdcad2f8d0fac026f2b6d (diff)
downloadgit-96e19488f1e8f3964f5f329248852864b4ee4541.zip
git-96e19488f1e8f3964f5f329248852864b4ee4541.tar.gz
git-96e19488f1e8f3964f5f329248852864b4ee4541.tar.bz2
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 <trast@student.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-am.sh')
-rwxr-xr-xgit-am.sh10
1 files changed, 10 insertions, 0 deletions
diff --git a/git-am.sh b/git-am.sh
index 2f46fda..1056e7d 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"