{"thread":{"id":"10015","subject":"[PATCH 0/5] Two real fixes, two minor fixes, and a style fix","startedAt":"2007-09-25T15:42:21Z","lastAt":"2007-09-26T11:18:51Z","messageCount":9,"participants":["Johannes Schindelin","Johannes Sixt"],"isPatch":true,"patchVersion":1,"patchTotal":5},"messages":[{"id":"54007","messageId":"Pine.LNX.4.64.0709251640360.28395@racer.site","threadId":"10015","inReplyTo":null,"subject":"[PATCH 0/5] Two real fixes, two minor fixes, and a style fix","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2007-09-25T15:42:21Z","receivedAt":"2007-09-25T15:42:21Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nthis patch series arose out of the comments to the simple fix I sent out \nearlier, which has now become the first patch of the series.\n\nCiao,\nDscho\n"},{"id":"54009","messageId":"Pine.LNX.4.64.0709251642290.28395@racer.site","threadId":"10015","inReplyTo":"Pine.LNX.4.64.0709251640360.28395@racer.site","subject":"[PATCH 1/5] rebase -i: commit when continuing after \"edit\"","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2007-09-25T15:42:36Z","receivedAt":"2007-09-25T15:42:36Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"\nWhen doing an \"edit\" on a commit, editing and git-adding some files,\n\"git rebase -i\" complained about a missing \"author-script\".  The idea was\nthat the user would call \"git commit --amend\" herself.\n\nBut we can be nice and do that for the user.\n\nNoticed by Dmitry Potapov.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n git-rebase--interactive.sh    |   17 +++++++++++------\n t/t3404-rebase-interactive.sh |   14 +++++++++++++-\n 2 files changed, 24 insertions(+), 7 deletions(-)\n\ndiff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh\nindex d2983d1..58f6f28 100755\n--- a/git-rebase--interactive.sh\n+++ b/git-rebase--interactive.sh\n@@ -77,15 +77,16 @@ mark_action_done () {\n }\n \n make_patch () {\n-\tparent_sha1=$(git rev-parse --verify \"$1\"^ 2> /dev/null)\n+\tparent_sha1=$(git rev-parse --verify \"$1\"^) ||\n+\t\tdie \"Cannot get patch for $1^\"\n \tgit diff \"$parent_sha1\"..\"$1\" > \"$DOTEST\"/patch\n+\ttest -f \"$DOTEST\"/message ||\n+\t\tgit cat-file commit \"$1\" | sed \"1,/^$/d\" > \"$DOTEST\"/message\n+\ttest -f \"$DOTEST\"/author-script ||\n+\t\tget_author_ident_from_commit \"$1\" > \"$DOTEST\"/author-script\n }\n \n die_with_patch () {\n-\ttest -f \"$DOTEST\"/message ||\n-\t\tgit cat-file commit $sha1 | sed \"1,/^$/d\" > \"$DOTEST\"/message\n-\ttest -f \"$DOTEST\"/author-script ||\n-\t\tget_author_ident_from_commit $sha1 > \"$DOTEST\"/author-script\n \tmake_patch \"$1\"\n \tdie \"$2\"\n }\n@@ -214,6 +215,7 @@ peek_next_command () {\n do_next () {\n \ttest -f \"$DOTEST\"/message && rm \"$DOTEST\"/message\n \ttest -f \"$DOTEST\"/author-script && rm \"$DOTEST\"/author-script\n+\ttest -f \"$DOTEST\"/amend && rm \"$DOTEST\"/amend\n \tread command sha1 rest < \"$TODO\"\n \tcase \"$command\" in\n \t\\#|'')\n@@ -233,6 +235,7 @@ do_next () {\n \t\tpick_one $sha1 ||\n \t\t\tdie_with_patch $sha1 \"Could not apply $sha1... $rest\"\n \t\tmake_patch $sha1\n+\t\t: > \"$DOTEST\"/amend\n \t\twarn\n \t\twarn \"You can amend the commit now, with\"\n \t\twarn\n@@ -332,7 +335,9 @@ do\n \t\tgit update-index --refresh &&\n \t\tgit diff-files --quiet &&\n \t\t! git diff-index --cached --quiet HEAD &&\n-\t\t. \"$DOTEST\"/author-script &&\n+\t\t. \"$DOTEST\"/author-script && {\n+\t\t\ttest ! -f \"$DOTEST\"/amend || git reset --soft HEAD^\n+\t\t} &&\n \t\texport GIT_AUTHOR_NAME GIT_AUTHOR_NAME GIT_AUTHOR_DATE &&\n \t\tgit commit -F \"$DOTEST\"/message -e\n \ndiff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh\nindex 718c9c1..1af73a4 100755\n--- a/t/t3404-rebase-interactive.sh\n+++ b/t/t3404-rebase-interactive.sh\n@@ -80,7 +80,7 @@ cat \"$1\".tmp\n action=pick\n for line in $FAKE_LINES; do\n \tcase $line in\n-\tsquash)\n+\tsquash|edit)\n \t\taction=\"$line\";;\n \t*)\n \t\techo sed -n \"${line}s/^pick/$action/p\"\n@@ -297,4 +297,16 @@ test_expect_success 'ignore patch if in upstream' '\n \ttest $HEAD = $(git rev-parse HEAD^)\n '\n \n+test_expect_success '--continue tries to commit, even for \"edit\"' '\n+\tparent=$(git rev-parse HEAD^) &&\n+\ttest_tick &&\n+\tFAKE_LINES=\"edit 1\" git rebase -i HEAD^ &&\n+\techo edited > file7 &&\n+\tgit add file7 &&\n+\tFAKE_COMMIT_MESSAGE=\"chouette!\" git rebase --continue &&\n+\ttest edited = $(git show HEAD:file7) &&\n+\tgit show HEAD | grep chouette &&\n+\ttest $parent = $(git rev-parse HEAD^)\n+'\n+\n test_done\n-- \n1.5.3.2.1057.gf4dc1\n"},{"id":"54008","messageId":"Pine.LNX.4.64.0709251642430.28395@racer.site","threadId":"10015","inReplyTo":"Pine.LNX.4.64.0709251640360.28395@racer.site","subject":"[PATCH 2/5] rebase -i: style fixes and minor cleanups","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2007-09-25T15:42:51Z","receivedAt":"2007-09-25T15:42:51Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"\nThis patch indents \";;\" consistently with the rest of git's shell scripts,\nand makes sure that \";;\" are before each \"esac\".\n\nIt introduces a helper function \"has_action\", to make it easier to read\nthe intentions of the code.\n\nErrors from \"git rev-parse --verify\" are no longer ignored.\n\nSpaces are quoted using single quotes instead of a backslash, for\nreadability.\n\nA \"test $preserve=f\" (missing spaces) was fixed; hashes are no longer\nwritten to \"$DOTEST\"/rewritten/ unnecessarily.\n\nWe used to quote the message for a squash, only to have \"echo\" unquote it.\nNow we use \"printf\" and do not need to quote to start with.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n git-rebase--interactive.sh |   48 +++++++++++++++++++++++++++----------------\n 1 files changed, 30 insertions(+), 18 deletions(-)\n\ndiff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh\nindex 58f6f28..c850411 100755\n--- a/git-rebase--interactive.sh\n+++ b/git-rebase--interactive.sh\n@@ -41,9 +41,10 @@ output () {\n \t\ttest $status != 0 &&\n \t\t\tcat \"$DOTEST\"/output\n \t\treturn $status\n-\t;;\n+\t\t;;\n \t*)\n \t\t\"$@\"\n+\t\t;;\n \tesac\n }\n \n@@ -63,6 +64,7 @@ comment_for_reflog () {\n \t''|rebase*)\n \t\tGIT_REFLOG_ACTION=\"rebase -i ($1)\"\n \t\texport GIT_REFLOG_ACTION\n+\t\t;;\n \tesac\n }\n \n@@ -96,13 +98,18 @@ die_abort () {\n \tdie \"$1\"\n }\n \n+has_action () {\n+\tgrep -vqe '^$' -e '^#' \"$1\"\n+}\n+\n pick_one () {\n \tno_ff=\n \tcase \"$1\" in -n) sha1=$2; no_ff=t ;; *) sha1=$1 ;; esac\n \toutput git rev-parse --verify $sha1 || die \"Invalid commit name: $sha1\"\n \ttest -d \"$REWRITTEN\" &&\n \t\tpick_one_preserving_merges \"$@\" && return\n-\tparent_sha1=$(git rev-parse --verify $sha1^ 2>/dev/null)\n+\tparent_sha1=$(git rev-parse --verify $sha1^) ||\n+\t\tdie \"Could not get the parent of $sha1\"\n \tcurrent_sha1=$(git rev-parse --verify HEAD)\n \tif test $no_ff$current_sha1 = $parent_sha1; then\n \t\toutput git reset --hard $sha1\n@@ -130,7 +137,7 @@ pick_one_preserving_merges () {\n \tfast_forward=t\n \tpreserve=t\n \tnew_parents=\n-\tfor p in $(git rev-list --parents -1 $sha1 | cut -d\\  -f2-)\n+\tfor p in $(git rev-list --parents -1 $sha1 | cut -d' ' -f2-)\n \tdo\n \t\tif test -f \"$REWRITTEN\"/$p\n \t\tthen\n@@ -142,41 +149,43 @@ pick_one_preserving_merges () {\n \t\t\t\t;; # do nothing; that parent is already there\n \t\t\t*)\n \t\t\t\tnew_parents=\"$new_parents $new_p\"\n+\t\t\t\t;;\n \t\t\tesac\n \t\tfi\n \tdone\n \tcase $fast_forward in\n \tt)\n \t\toutput warn \"Fast forward to $sha1\"\n-\t\ttest $preserve=f && echo $sha1 > \"$REWRITTEN\"/$sha1\n+\t\ttest $preserve = f || echo $sha1 > \"$REWRITTEN\"/$sha1\n \t\t;;\n \tf)\n \t\ttest \"a$1\" = a-n && die \"Refusing to squash a merge: $sha1\"\n \n-\t\tfirst_parent=$(expr \"$new_parents\" : \" \\([^ ]*\\)\")\n+\t\tfirst_parent=$(expr \"$new_parents\" : ' \\([^ ]*\\)')\n \t\t# detach HEAD to current parent\n \t\toutput git checkout $first_parent 2> /dev/null ||\n \t\t\tdie \"Cannot move HEAD to $first_parent\"\n \n \t\techo $sha1 > \"$DOTEST\"/current-commit\n \t\tcase \"$new_parents\" in\n-\t\t\\ *\\ *)\n+\t\t' '*' '*)\n \t\t\t# redo merge\n \t\t\tauthor_script=$(get_author_ident_from_commit $sha1)\n \t\t\teval \"$author_script\"\n-\t\t\tmsg=\"$(git cat-file commit $sha1 | \\\n-\t\t\t\tsed -e '1,/^$/d' -e \"s/[\\\"\\\\]/\\\\\\\\&/g\")\"\n+\t\t\tmsg=\"$(git cat-file commit $sha1 | sed -e '1,/^$/d')\"\n \t\t\t# NEEDSWORK: give rerere a chance\n \t\t\tif ! output git merge $STRATEGY -m \"$msg\" $new_parents\n \t\t\tthen\n-\t\t\t\techo \"$msg\" > \"$GIT_DIR\"/MERGE_MSG\n+\t\t\t\tprintf \"%s\\n\" \"$msg\" > \"$GIT_DIR\"/MERGE_MSG\n \t\t\t\tdie Error redoing merge $sha1\n \t\t\tfi\n \t\t\t;;\n \t\t*)\n \t\t\toutput git cherry-pick $STRATEGY \"$@\" ||\n \t\t\t\tdie_with_patch $sha1 \"Could not pick $sha1\"\n+\t\t\t;;\n \t\tesac\n+\t\t;;\n \tesac\n }\n \n@@ -213,12 +222,11 @@ peek_next_command () {\n }\n \n do_next () {\n-\ttest -f \"$DOTEST\"/message && rm \"$DOTEST\"/message\n-\ttest -f \"$DOTEST\"/author-script && rm \"$DOTEST\"/author-script\n-\ttest -f \"$DOTEST\"/amend && rm \"$DOTEST\"/amend\n+\trm -f \"$DOTEST\"/message \"$DOTEST\"/author-script \\\n+\t\t\"$DOTEST\"/amend || exit\n \tread command sha1 rest < \"$TODO\"\n \tcase \"$command\" in\n-\t\\#|'')\n+\t'#'*|'')\n \t\tmark_action_done\n \t\t;;\n \tpick)\n@@ -246,7 +254,7 @@ do_next () {\n \tsquash)\n \t\tcomment_for_reflog squash\n \n-\t\ttest -z \"$(grep -ve '^$' -e '^#' < $DONE)\" &&\n+\t\thas_action \"$DONE\" ||\n \t\t\tdie \"Cannot 'squash' without a previous commit\"\n \n \t\tmark_action_done\n@@ -256,11 +264,12 @@ do_next () {\n \t\t\tEDIT_COMMIT=\n \t\t\tUSE_OUTPUT=output\n \t\t\tcp \"$MSG\" \"$SQUASH_MSG\"\n-\t\t;;\n+\t\t\t;;\n \t\t*)\n \t\t\tEDIT_COMMIT=-e\n \t\t\tUSE_OUTPUT=\n-\t\t\ttest -f \"$SQUASH_MSG\" && rm \"$SQUASH_MSG\"\n+\t\t\trm -f \"$SQUASH_MSG\" || exit\n+\t\t\t;;\n \t\tesac\n \n \t\tfailed=f\n@@ -280,11 +289,13 @@ do_next () {\n \t\t\twarn\n \t\t\twarn \"Could not apply $sha1... $rest\"\n \t\t\tdie_with_patch $sha1 \"\"\n+\t\t\t;;\n \t\tesac\n \t\t;;\n \t*)\n \t\twarn \"Unknown command: $command $sha1 $rest\"\n \t\tdie_with_patch $sha1 \"Please fix this in the file $TODO.\"\n+\t\t;;\n \tesac\n \ttest -s \"$TODO\" && return\n \n@@ -475,17 +486,18 @@ EOF\n \t\t\t$UPSTREAM...$HEAD | \\\n \t\t\tsed -n \"s/^>/pick /p\" >> \"$TODO\"\n \n-\t\ttest -z \"$(grep -ve '^$' -e '^#' < $TODO)\" &&\n+\t\thas_action \"$TODO\" ||\n \t\t\tdie_abort \"Nothing to do\"\n \n \t\tcp \"$TODO\" \"$TODO\".backup\n \t\tgit_editor \"$TODO\" ||\n \t\t\tdie \"Could not execute editor\"\n \n-\t\ttest -z \"$(grep -ve '^$' -e '^#' < $TODO)\" &&\n+\t\thas_action \"$TODO\" ||\n \t\t\tdie_abort \"Nothing to do\"\n \n \t\toutput git checkout $ONTO && do_rest\n+\t\t;;\n \tesac\n \tshift\n done\n-- \n1.5.3.2.1057.gf4dc1\n"},{"id":"54010","messageId":"Pine.LNX.4.64.0709251642560.28395@racer.site","threadId":"10015","inReplyTo":"Pine.LNX.4.64.0709251640360.28395@racer.site","subject":"[PATCH 3/5] rebase -i: Fix numbers in progress report","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2007-09-25T15:43:04Z","receivedAt":"2007-09-25T15:43:04Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"\nInstead of counting all lines in done and todo, we now count the actions\nbefore outputting \"$Rebasing ($count/$total)\".\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n git-rebase--interactive.sh |    4 ++--\n 1 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh\nindex c850411..4f46a15 100755\n--- a/git-rebase--interactive.sh\n+++ b/git-rebase--interactive.sh\n@@ -72,8 +72,8 @@ mark_action_done () {\n \tsed -e 1q < \"$TODO\" >> \"$DONE\"\n \tsed -e 1d < \"$TODO\" >> \"$TODO\".new\n \tmv -f \"$TODO\".new \"$TODO\"\n-\tcount=$(($(wc -l < \"$DONE\")))\n-\ttotal=$(($count+$(wc -l < \"$TODO\")))\n+\tcount=$(($(grep -ve '^$' -e '^#' < \"$DONE\" | wc -l)))\n+\ttotal=$(($count+$(grep -ve '^$' -e '^#' < \"$TODO\" | wc -l)))\n \tprintf \"Rebasing (%d/%d)\\r\" $count $total\n \ttest -z \"$VERBOSE\" || echo\n }\n-- \n1.5.3.2.1057.gf4dc1\n"},{"id":"54011","messageId":"Pine.LNX.4.64.0709251643080.28395@racer.site","threadId":"10015","inReplyTo":"Pine.LNX.4.64.0709251640360.28395@racer.site","subject":"[PATCH 4/5] rebase -i: work on a detached HEAD","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2007-09-25T15:43:15Z","receivedAt":"2007-09-25T15:43:15Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"\nEarlier, rebase -i refused to rebase a detached HEAD.  Now it no longer\ndoes.\n\nIncidentally, this fixes \"git gc --auto\" shadowing the true exit status.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n git-rebase--interactive.sh    |   23 +++++++++++++++--------\n t/t3404-rebase-interactive.sh |    8 ++++++++\n 2 files changed, 23 insertions(+), 8 deletions(-)\n\ndiff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh\nindex 4f46a15..445a299 100755\n--- a/git-rebase--interactive.sh\n+++ b/git-rebase--interactive.sh\n@@ -312,17 +312,20 @@ do_next () {\n \telse\n \t\tNEWHEAD=$(git rev-parse HEAD)\n \tfi &&\n-\tmessage=\"$GIT_REFLOG_ACTION: $HEADNAME onto $SHORTONTO)\" &&\n-\tgit update-ref -m \"$message\" $HEADNAME $NEWHEAD $OLDHEAD &&\n-\tgit symbolic-ref HEAD $HEADNAME && {\n+\tcase $HEADNAME in\n+\trefs/*)\n+\t\tmessage=\"$GIT_REFLOG_ACTION: $HEADNAME onto $SHORTONTO)\" &&\n+\t\tgit update-ref -m \"$message\" $HEADNAME $NEWHEAD $OLDHEAD &&\n+\t\tgit symbolic-ref HEAD $HEADNAME\n+\t\t;;\n+\tesac && {\n \t\ttest ! -f \"$DOTEST\"/verbose ||\n \t\t\tgit diff --stat $(cat \"$DOTEST\"/head)..HEAD\n \t} &&\n \trm -rf \"$DOTEST\" &&\n+\tgit gc --auto &&\n \twarn \"Successfully rebased and updated $HEADNAME.\"\n \n-\tgit gc --auto\n-\n \texit\n }\n \n@@ -362,7 +365,11 @@ do\n \n \t\tHEADNAME=$(cat \"$DOTEST\"/head-name)\n \t\tHEAD=$(cat \"$DOTEST\"/head)\n-\t\tgit symbolic-ref HEAD $HEADNAME &&\n+\t\tcase $HEADNAME in\n+\t\trefs/*)\n+\t\t\tgit symbolic-ref HEAD $HEADNAME\n+\t\t\t;;\n+\t\tesac &&\n \t\toutput git reset --hard $HEAD &&\n \t\trm -rf \"$DOTEST\"\n \t\texit\n@@ -439,8 +446,8 @@ do\n \t\ttest -z \"$ONTO\" && ONTO=$UPSTREAM\n \n \t\t: > \"$DOTEST\"/interactive || die \"Could not mark as interactive\"\n-\t\tgit symbolic-ref HEAD > \"$DOTEST\"/head-name ||\n-\t\t\tdie \"Could not get HEAD\"\n+\t\tgit symbolic-ref HEAD > \"$DOTEST\"/head-name 2> /dev/null ||\n+\t\t\techo \"detached HEAD\" > \"$DOTEST\"/head-name\n \n \t\techo $HEAD > \"$DOTEST\"/head\n \t\techo $UPSTREAM > \"$DOTEST\"/upstream\ndiff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh\nindex 1af73a4..f2214dd 100755\n--- a/t/t3404-rebase-interactive.sh\n+++ b/t/t3404-rebase-interactive.sh\n@@ -309,4 +309,12 @@ test_expect_success '--continue tries to commit, even for \"edit\"' '\n \ttest $parent = $(git rev-parse HEAD^)\n '\n \n+test_expect_success 'rebase a detached HEAD' '\n+\tgrandparent=$(git rev-parse HEAD~2) &&\n+\tgit checkout $(git rev-parse HEAD) &&\n+\ttest_tick &&\n+\tFAKE_LINES=\"2 1\" git rebase -i HEAD~2 &&\n+\ttest $grandparent = $(git rev-parse HEAD~2)\n+'\n+\n test_done\n-- \n1.5.3.2.1057.gf4dc1\n"},{"id":"54012","messageId":"Pine.LNX.4.64.0709251643310.28395@racer.site","threadId":"10015","inReplyTo":"Pine.LNX.4.64.0709251640360.28395@racer.site","subject":"[PATCH 5/5] rebase -i: avoid exporting GIT_AUTHOR_* variables","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2007-09-25T15:43:44Z","receivedAt":"2007-09-25T15:43:44Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"\nIt is somewhat unsafe to export the GIT_AUTHOR_* variables, since a later\ncall to git-commit or git-merge could pick them up inadvertently.\n\nSo avoid the export, using a recipe provided by Johannes Sixt.\n\nIncidentally, this fixes authorship of merges with \"rebase --preserve -i\".\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n git-rebase--interactive.sh |   10 ++++++++--\n 1 files changed, 8 insertions(+), 2 deletions(-)\n\ndiff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh\nindex 445a299..e3e89dd 100755\n--- a/git-rebase--interactive.sh\n+++ b/git-rebase--interactive.sh\n@@ -174,7 +174,11 @@ pick_one_preserving_merges () {\n \t\t\teval \"$author_script\"\n \t\t\tmsg=\"$(git cat-file commit $sha1 | sed -e '1,/^$/d')\"\n \t\t\t# NEEDSWORK: give rerere a chance\n-\t\t\tif ! output git merge $STRATEGY -m \"$msg\" $new_parents\n+\t\t\tif ! GIT_AUTHOR_NAME=\"$GIT_AUTHOR_NAME\" \\\n+\t\t\t\tGIT_AUTHOR_EMAIL=\"$GIT_AUTHOR_EMAIL\" \\\n+\t\t\t\tGIT_AUTHOR_DATE=\"$GIT_AUTHOR_DATE\" \\\n+\t\t\t\toutput git merge $STRATEGY -m \"$msg\" \\\n+\t\t\t\t\t$new_parents\n \t\t\tthen\n \t\t\t\tprintf \"%s\\n\" \"$msg\" > \"$GIT_DIR\"/MERGE_MSG\n \t\t\t\tdie Error redoing merge $sha1\n@@ -281,7 +285,9 @@ do_next () {\n \t\tf)\n \t\t\t# This is like --amend, but with a different message\n \t\t\teval \"$author_script\"\n-\t\t\texport GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE\n+\t\t\tGIT_AUTHOR_NAME=\"$GIT_AUTHOR_NAME\" \\\n+\t\t\tGIT_AUTHOR_EMAIL=\"$GIT_AUTHOR_EMAIL\" \\\n+\t\t\tGIT_AUTHOR_DATE=\"$GIT_AUTHOR_DATE\" \\\n \t\t\t$USE_OUTPUT git commit -F \"$MSG\" $EDIT_COMMIT\n \t\t\t;;\n \t\tt)\n-- \n1.5.3.2.1057.gf4dc1\n"},{"id":"54092","messageId":"46FA358E.40500@viscovery.net","threadId":"10015","inReplyTo":"Pine.LNX.4.64.0709251643310.28395@racer.site","subject":"Re: [PATCH 5/5] rebase -i: avoid exporting GIT_AUTHOR_* variables","fromName":"Johannes Sixt","fromEmail":"j.sixt@viscovery.net","sentAt":"2007-09-26T10:33:50Z","receivedAt":"2007-09-26T10:33:50Z","isPatch":true,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"Johannes Schindelin schrieb:\n> diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh\n> index 445a299..e3e89dd 100755\n> --- a/git-rebase--interactive.sh\n> +++ b/git-rebase--interactive.sh\n> @@ -174,7 +174,11 @@ pick_one_preserving_merges () {\n>  \t\t\teval \"$author_script\"\n>  \t\t\tmsg=\"$(git cat-file commit $sha1 | sed -e '1,/^$/d')\"\n>  \t\t\t# NEEDSWORK: give rerere a chance\n> -\t\t\tif ! output git merge $STRATEGY -m \"$msg\" $new_parents\n> +\t\t\tif ! GIT_AUTHOR_NAME=\"$GIT_AUTHOR_NAME\" \\\n> +\t\t\t\tGIT_AUTHOR_EMAIL=\"$GIT_AUTHOR_EMAIL\" \\\n> +\t\t\t\tGIT_AUTHOR_DATE=\"$GIT_AUTHOR_DATE\" \\\n> +\t\t\t\toutput git merge $STRATEGY -m \"$msg\" \\\n> +\t\t\t\t\t$new_parents\n>  \t\t\tthen\n>  \t\t\t\tprintf \"%s\\n\" \"$msg\" > \"$GIT_DIR\"/MERGE_MSG\n>  \t\t\t\tdie Error redoing merge $sha1\n> @@ -281,7 +285,9 @@ do_next () {\n>  \t\tf)\n>  \t\t\t# This is like --amend, but with a different message\n>  \t\t\teval \"$author_script\"\n> -\t\t\texport GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE\n> +\t\t\tGIT_AUTHOR_NAME=\"$GIT_AUTHOR_NAME\" \\\n> +\t\t\tGIT_AUTHOR_EMAIL=\"$GIT_AUTHOR_EMAIL\" \\\n> +\t\t\tGIT_AUTHOR_DATE=\"$GIT_AUTHOR_DATE\" \\\n>  \t\t\t$USE_OUTPUT git commit -F \"$MSG\" $EDIT_COMMIT\n>  \t\t\t;;\n>  \t\tt)\n\nAccording to Herbert Xu's recent post \n(http://article.gmane.org/gmane.comp.version-control.git/59219) this won't \nexport the variables in all shells since 'output' is a shell function. :-(\n\n-- Hannes\n"},{"id":"54093","messageId":"Pine.LNX.4.64.0709261151300.28395@racer.site","threadId":"10015","inReplyTo":"46FA358E.40500@viscovery.net","subject":"Re: [PATCH 5/5] rebase -i: avoid exporting GIT_AUTHOR_* variables","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2007-09-26T10:51:53Z","receivedAt":"2007-09-26T10:51:53Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Wed, 26 Sep 2007, Johannes Sixt wrote:\n\n> Johannes Schindelin schrieb:\n> > diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh\n> > index 445a299..e3e89dd 100755\n> > --- a/git-rebase--interactive.sh\n> > +++ b/git-rebase--interactive.sh\n> > @@ -174,7 +174,11 @@ pick_one_preserving_merges () {\n> >  \t\t\teval \"$author_script\"\n> >  \t\t\tmsg=\"$(git cat-file commit $sha1 | sed -e '1,/^$/d')\"\n> >  \t\t\t# NEEDSWORK: give rerere a chance\n> > -\t\t\tif ! output git merge $STRATEGY -m \"$msg\"\n> > $new_parents\n> > +\t\t\tif ! GIT_AUTHOR_NAME=\"$GIT_AUTHOR_NAME\" \\\n> > +\t\t\t\tGIT_AUTHOR_EMAIL=\"$GIT_AUTHOR_EMAIL\" \\\n> > +\t\t\t\tGIT_AUTHOR_DATE=\"$GIT_AUTHOR_DATE\" \\\n> > +\t\t\t\toutput git merge $STRATEGY -m \"$msg\" \\\n> > +\t\t\t\t\t$new_parents\n> >  \t\t\tthen\n> >  \t\t\t\tprintf \"%s\\n\" \"$msg\" > \"$GIT_DIR\"/MERGE_MSG\n> >  \t\t\t\tdie Error redoing merge $sha1\n> > @@ -281,7 +285,9 @@ do_next () {\n> >  \t\tf)\n> >  \t\t\t# This is like --amend, but with a different message\n> >  \t\t\teval \"$author_script\"\n> > -\t\t\texport GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL\n> > GIT_AUTHOR_DATE\n> > +\t\t\tGIT_AUTHOR_NAME=\"$GIT_AUTHOR_NAME\" \\\n> > +\t\t\tGIT_AUTHOR_EMAIL=\"$GIT_AUTHOR_EMAIL\" \\\n> > +\t\t\tGIT_AUTHOR_DATE=\"$GIT_AUTHOR_DATE\" \\\n> >  \t\t\t$USE_OUTPUT git commit -F \"$MSG\" $EDIT_COMMIT\n> >  \t\t\t;;\n> >  \t\tt)\n> \n> According to Herbert Xu's recent post\n> (http://article.gmane.org/gmane.comp.version-control.git/59219) this won't\n> export the variables in all shells since 'output' is a shell function. :-(\n\nArgh.\n\nYou know, I am _so_ close to just scrap it and rewrite it in C.\n\nCiao,\nDscho\n"},{"id":"54094","messageId":"46FA401B.9000303@viscovery.net","threadId":"10015","inReplyTo":"86zlz9smqr.fsf@lola.quinscape.zz","subject":"Re: [PATCH 5/5] rebase -i: avoid exporting GIT_AUTHOR_* variables","fromName":"Johannes Sixt","fromEmail":"j.sixt@viscovery.net","sentAt":"2007-09-26T11:18:51Z","receivedAt":"2007-09-26T11:18:51Z","isPatch":true,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"David Kastrup schrieb:\n> If $USE_OUTPUT can be either shell function or executable or shell\n> function plus args, however...\n\nUTSL: $USE_OUTPUT is either 'output' (ie. a shell function) or empty.\n\n-- Hannes\n"}]}