git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/2] rebase -i --root: simplify code

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 26, 2009, 05:54 UTC
Message-ID
<7vtz7ma9z1.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<200901260053.06315.trast@student.ethz.ch>
Thomas Rast <trast@student.ethz.ch> writes:
Show 8 quoted lines
> Thomas Rast wrote:
>>           test ! -s "$DOTEST"/upstream && REBASE_ROOT=t
>
> Actually, I think that test never worked (and it's clearly my fault).
>
> The corresponding 'echo $UPSTREAM > "$DOTEST"/upstream' just expanded
> to 'echo > ...', resulting in a file containing a single newline, but
> never a zero-length file.  Duh.

Since you never use the value stored in "$DOTEST/upstream" for anything else anyway, how about doing something like this instead? It would make the meaning of the file used as a state variable much clearer.

It may break hooks and outside scripts that look at $DOTEST/upstream. I didn't check.

The hunk in the middle is to protect you against an environment variable UPSTREAM the user may have before starting "rebase -i". There could be other state variables you added in recent commit d911d14 (rebase -i: learn to rebase root commit, 2009-01-02) that needs similar protection. Please check.

 git-rebase--interactive.sh |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)
diff --git c/git-rebase--interactive.sh w/git-rebase--interactive.sh
index 21ac20c..17cf0e5 100755
--- c/git-rebase--interactive.sh
+++ w/git-rebase--interactive.sh
@@ -456,7 +456,7 @@ get_saved_options () {
 	test -d "$REWRITTEN" && PRESERVE_MERGES=t
 	test -f "$DOTEST"/strategy && STRATEGY="$(cat "$DOTEST"/strategy)"
 	test -f "$DOTEST"/verbose && VERBOSE=t
-	test ! -s "$DOTEST"/upstream && REBASE_ROOT=t
+	test -f "$DOTEST"/rebase-root && REBASE_ROOT=t
 }
 
 while test $# != 0
@@ -585,6 +585,7 @@ first and then run 'git rebase --continue' again."
 			test -z "$ONTO" && ONTO=$UPSTREAM
 			shift
 		else
+			UPSTREAM=
 			UPSTREAM_ARG=--root
 			test -z "$ONTO" &&
 				die "You must specify --onto when using --root"
@@ -611,7 +612,12 @@ first and then run 'git rebase --continue' again."
 			echo "detached HEAD" > "$DOTEST"/head-name
 
 		echo $HEAD > "$DOTEST"/head
-		echo $UPSTREAM > "$DOTEST"/upstream
+		case "$REBASE_ROOT" in
+		'')
+			rm -f "$DOTEST"/rebase-root ;;
+		*)
+			: >"$DOTEST"/rebase-root ;;
+		esac
 		echo $ONTO > "$DOTEST"/onto
 		test -z "$STRATEGY" || echo "$STRATEGY" > "$DOTEST"/strategy
 		test t = "$VERBOSE" && : > "$DOTEST"/verbose
Previous: Thomas RastNext: Thomas Rast
Message 5 of 22 in “rebase -i --root cleanups”
  1. 0/2 rebase -i --root cleanupsJohannes Schindelin, Jan 25, 2009
  2. 1/2 rebase -i --root: simplify codeJohannes Schindelin, Jan 25, 2009
  3. Thomas RastJan 25, 2009
  4. Thomas RastJan 25, 2009
  5. Junio C HamanoJan 26, 2009
  6. rebase -i: correctly remember --root flag across --continueThomas Rast, Jan 26, 2009
  7. Junio C HamanoJan 26, 2009
  8. Junio C HamanoJan 26, 2009
  9. Jeff KingJan 26, 2009
  10. Jeff KingJan 26, 2009
  11. Thomas RastJan 26, 2009
  12. Junio C HamanoJan 27, 2009
  13. Junio C HamanoJan 26, 2009
  14. Thomas RastJan 30, 2009
  15. 1/2 t3412: clean up GIT_EDITOR usageThomas Rast, Jan 30, 2009
  16. 2/2 t3412: use log|name-rev instead of log --graphThomas Rast, Jan 30, 2009
  17. Johannes SchindelinFeb 1, 2009
  18. Thomas RastFeb 2, 2009
  19. Johannes SchindelinJan 26, 2009
  20. 2/2 rebase -i --root: fix check for number of argumentsJohannes Schindelin, Jan 25, 2009
  21. Thomas RastJan 26, 2009
  22. Johannes SchindelinJan 26, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.