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

[PATCH 2/3] Use cd_to_toplevel in scripts that implement it by hand.

From
Junio C Hamano <junkio@cox.net>
Date
Jan 12, 2007, 20:55 UTC
Message-ID
<7vfyagrmlu.fsf_-_@assigned-by-dhcp.cox.net>
In-Reply-To
<7vy7o8rnyw.fsf_-_@assigned-by-dhcp.cox.net>

This converts scripts that do "cd $(rev-parse --show-cdup)" by hand to use cd_to_toplevel.

I think git-fetch does not have to go to the toplevel, but that should be dealt with in a separate patch.

Signed-off-by: Junio C Hamano <junkio@cox.net>
---
 git-checkout.sh |    6 +-----
 git-commit.sh   |   22 ++++++++--------------
 git-fetch.sh    |    6 +-----
 git-reset.sh    |    6 +-----
 4 files changed, 11 insertions(+), 29 deletions(-)
diff --git a/git-checkout.sh b/git-checkout.sh
index a2b8e4f..66e40b9 100755
--- a/git-checkout.sh
+++ b/git-checkout.sh
@@ -135,11 +135,7 @@ fi
 
 # We are switching branches and checking out trees, so
 # we *NEED* to be at the toplevel.
-cdup=$(git-rev-parse --show-cdup)
-if test ! -z "$cdup"
-then
-	cd "$cdup"
-fi
+cd_to_toplevel
 
 [ -z "$new" ] && new=$old && new_name="$old_name"
 
diff --git a/git-commit.sh b/git-commit.sh
index eddd863..9fdf234 100755
--- a/git-commit.sh
+++ b/git-commit.sh
@@ -316,22 +316,16 @@ esac
 ################################################################
 # Prepare index to have a tree to be committed
 
-TOP=`git-rev-parse --show-cdup`
-if test -z "$TOP"
-then
-	TOP=./
-fi
-
 case "$all,$also" in
 t,)
 	save_index &&
 	(
-		cd "$TOP"
-		GIT_INDEX_FILE="$NEXT_INDEX"
-		export GIT_INDEX_FILE
+		cd_to_toplevel &&
+		GIT_INDEX_FILE="$NEXT_INDEX" &&
+		export GIT_INDEX_FILE &&
 		git-diff-files --name-only -z |
 		git-update-index --remove -z --stdin
-	)
+	) || exit
 	;;
 ,t)
 	save_index &&
@@ -339,11 +333,11 @@ t,)
 
 	git-diff-files --name-only -z -- "$@"  |
 	(
-		cd "$TOP"
-		GIT_INDEX_FILE="$NEXT_INDEX"
-		export GIT_INDEX_FILE
+		cd_to_toplevel &&
+		GIT_INDEX_FILE="$NEXT_INDEX" &&
+		export GIT_INDEX_FILE &&
 		git-update-index --remove -z --stdin
-	)
+	) || exit
 	;;
 ,)
 	case "$#" in
diff --git a/git-fetch.sh b/git-fetch.sh
index c58704d..87b940b 100755
--- a/git-fetch.sh
+++ b/git-fetch.sh
@@ -5,12 +5,8 @@ USAGE='<fetch-options> <repository> <refspec>...'
 SUBDIRECTORY_OK=Yes
 . git-sh-setup
 set_reflog_action "fetch $*"
+cd_to_toplevel ;# probably unnecessary...
 
-TOP=$(git-rev-parse --show-cdup)
-if test ! -z "$TOP"
-then
-	cd "$TOP"
-fi
 . git-parse-remote
 _x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
 _x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"
diff --git a/git-reset.sh b/git-reset.sh
index b9045bc..91c7e6e 100755
--- a/git-reset.sh
+++ b/git-reset.sh
@@ -53,11 +53,7 @@ then
 	exit
 fi
 
-TOP=$(git-rev-parse --show-cdup)
-if test ! -z "$TOP"
-then
-	cd "$TOP"
-fi
+cd_to_toplevel
 
 if test "$reset_type" = "--hard"
 then
-- 
1.5.0.rc1.g397d
Previous: Junio C HamanoNext: Junio C Hamano
Message 14 of 28 in “What's in git.git and announcing GIT v1.5.0-rc1”
  1. Junio C HamanoJan 12, 2007
  2. reflog-expire: brown paper bag fix.Junio C Hamano, Jan 12, 2007
  3. Shawn O. PearceJan 12, 2007
  4. Andy ParkinsJan 12, 2007
  5. Friendlier error message for commands that can't be run from a subdirectory.koreth@midwinter.com, Jan 12, 2007
  6. Steven GrimmJan 12, 2007
  7. Change to the repository's root directory if needed.koreth@midwinter.com, Jan 12, 2007
  8. Junio C HamanoJan 12, 2007
  9. Steven GrimmJan 12, 2007
  10. Junio C HamanoJan 12, 2007
  11. Explain "Not a git repository: '.git'".Junio C Hamano, Jan 12, 2007
  12. Junio C HamanoJan 12, 2007
  13. 1/3 Define cd_to_toplevel shell function in git-sh-setupJunio C Hamano, Jan 12, 2007
  14. 2/3 Use cd_to_toplevel in scripts that implement it by hand.Junio C Hamano, Jan 12, 2007
  15. 3/3 Allow whole-tree operations to be started from a subdirectoryJunio C Hamano, Jan 12, 2007
  16. Andy ParkinsJan 13, 2007
  17. Josef WeidendorferJan 14, 2007
  18. Shawn O. PearceJan 14, 2007
  19. Josef WeidendorferJan 14, 2007
  20. Junio C HamanoJan 14, 2007
  21. Steven GrimmJan 14, 2007
  22. Junio C HamanoJan 14, 2007
  23. Steven GrimmJan 14, 2007
  24. Steven GrimmJan 14, 2007
  25. Junio C HamanoJan 14, 2007
  26. Junio C HamanoJan 14, 2007
  27. Andreas EricssonJan 16, 2007
  28. lamikrJan 14, 2007

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.