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

[PATCH 8/9] Make setup_git_directory() auto-setup worktree if found

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Feb 27, 2008, 16:40 UTC
Message-ID
<20080227164027.GA28128@laptop>
In-Reply-To
<cover.1204130175.git.pclouds@gmail.com>
The semantic is simpler: if worktree is found, use it or die.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin-ls-files.c  |    4 ++--
 builtin-rev-parse.c |    7 +++++--
 builtin-rm.c        |    5 ++---
 setup.c             |    2 +-
 4 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/builtin-ls-files.c b/builtin-ls-files.c
index cf4c492..a53881d 100644
--- a/builtin-ls-files.c
+++ b/builtin-ls-files.c
@@ -566,8 +566,8 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix)
 		break;
 	}
 
-	if (require_work_tree && !is_inside_work_tree())
-		prefix = setup_work_tree(prefix);
+	if (require_work_tree && !get_git_work_tree())
+		die("This operation must be run in a work tree");
 	if (prefix_offset == -1)
 		prefix_offset = prefix ? strlen(prefix) : 0;
 
diff --git a/builtin-rev-parse.c b/builtin-rev-parse.c
index e82cac2..384e23f 100644
--- a/builtin-rev-parse.c
+++ b/builtin-rev-parse.c
@@ -359,15 +359,16 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix)
 	return 0;
 }
 
-int cmd_rev_parse(int argc, const char **argv, const char *prefix)
+int cmd_rev_parse(int argc, const char **argv, const char *unused_prefix)
 {
 	int i, as_is = 0, verify = 0;
 	unsigned char sha1[20];
+	const char *prefix = NULL;
 
 	if (argc > 1 && !strcmp("--parseopt", argv[1]))
 		return cmd_parseopt(argc - 1, argv + 1, prefix);
 
-	prefix = setup_git_directory();
+	setup_git_directory_gently(NULL);
 	git_config(git_default_config);
 	for (i = 1; i < argc; i++) {
 		const char *arg = argv[i];
@@ -487,6 +488,8 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
 						printf("%s\n", work_tree);
 					continue;
 				}
+				else
+					pfx = prefix = setup_work_tree(prefix);
 				while (pfx) {
 					pfx = strchr(pfx, '/');
 					if (pfx) {
diff --git a/builtin-rm.c b/builtin-rm.c
index 2c15d66..dedef9f 100644
--- a/builtin-rm.c
+++ b/builtin-rm.c
@@ -155,10 +155,9 @@ int cmd_rm(int argc, const char **argv, const char *prefix)
 	if (!argc)
 		usage_with_options(builtin_rm_usage, builtin_rm_options);
 
-	if (!index_only)
-		prefix = setup_work_tree(prefix);
-
 	pathspec = get_pathspec(prefix, argv);
+	if (!pathspec)
+		die("No valid pathspec");
 	seen = NULL;
 	for (i = 0; pathspec[i] ; i++)
 		/* nothing */;
diff --git a/setup.c b/setup.c
index 78ae2f9..f0de42f 100644
--- a/setup.c
+++ b/setup.c
@@ -444,5 +444,5 @@ int check_repository_format(void)
 const char *setup_git_directory(void)
 {
 	setup_git_directory_gently(NULL);
-	return is_inside_work_tree() ? setup_work_tree(NULL) : NULL;
+	return get_git_work_tree() ? setup_work_tree(NULL) : NULL;
 }
-- 
1.5.4.2.281.g28d0e
Previous: Nguyễn Thái Ngọc DuyNext: Nguyễn Thái Ngọc Duy
Message 21 of 24 in “"git read-tree -m" and the like require worktree”
  1. 1/9 "git read-tree -m" and the like require worktreeNguyễn Thái Ngọc Duy, Feb 27, 2008
  2. Junio C HamanoFeb 28, 2008
  3. Nguyen Thai Ngoc DuyFeb 28, 2008
  4. 2/9 Make sure setup_git_directory is called before accessing repositoryNguyễn Thái Ngọc Duy, Feb 27, 2008
  5. 3/9 Make get_git_dir() and 'git rev-parse --git-dir' absolute pathNguyễn Thái Ngọc Duy, Feb 27, 2008
  6. 4/9 Make setup_work_tree() return new prefixNguyễn Thái Ngọc Duy, Feb 27, 2008
  7. Johannes SchindelinFeb 28, 2008
  8. Nguyen Thai Ngoc DuyFeb 28, 2008
  9. Johannes SchindelinFeb 28, 2008
  10. 5/9 http-push: Avoid calling setup_git_directory() twiceNguyễn Thái Ngọc Duy, Feb 27, 2008
  11. Junio C HamanoFeb 28, 2008
  12. Nguyen Thai Ngoc DuyFeb 28, 2008
  13. 6/9 Completely move out worktree setup from setup_git_directory_gently()Nguyễn Thái Ngọc Duy, Feb 27, 2008
  14. Junio C HamanoFeb 28, 2008
  15. Nguyen Thai Ngoc DuyFeb 28, 2008
  16. Junio C HamanoFeb 28, 2008
  17. Nguyen Thai Ngoc DuyFeb 28, 2008
  18. Johannes SchindelinFeb 28, 2008
  19. Nguyen Thai Ngoc DuyFeb 28, 2008
  20. 7/9 builtin-archive: mark unused prefix "unused_prefix"Nguyễn Thái Ngọc Duy, Feb 27, 2008
  21. 8/9 Make setup_git_directory() auto-setup worktree if foundNguyễn Thái Ngọc Duy, Feb 27, 2008
  22. 9/9 Documentation: update api-builtin and api-setupNguyễn Thái Ngọc Duy, Feb 27, 2008
  23. Jonathan NiederApr 5, 2011
  24. Nguyen Thai Ngoc DuyApr 5, 2011

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.