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

[PATCH 3/4] Add set_git_dir() function

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Aug 1, 2007, 00:29 UTC
Message-ID
<Pine.LNX.4.64.0708010129310.14781@racer.site>
In-Reply-To
<Pine.LNX.4.64.0708010058130.14781@racer.site>

With the function set_git_dir() you can reset the path that will be used for git_path(), git_dir() and friends.

The responsibility to close files and throw away information from the old git_dir lies with the caller.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 cache.h       |    1 +
 environment.c |    8 ++++++++
 2 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/cache.h b/cache.h
index 98af530..e1f94cb 100644
--- a/cache.h
+++ b/cache.h
@@ -214,6 +214,7 @@ extern char *get_object_directory(void);
 extern char *get_refs_directory(void);
 extern char *get_index_file(void);
 extern char *get_graft_file(void);
+extern int set_git_dir(const char *path);
 
 #define ALTERNATE_DB_ENVIRONMENT "GIT_ALTERNATE_OBJECT_DIRECTORIES"
 
diff --git a/environment.c b/environment.c
index f83fb9e..a571fae 100644
--- a/environment.c
+++ b/environment.c
@@ -107,3 +107,11 @@ char *get_graft_file(void)
 		setup_git_env();
 	return git_graft_file;
 }
+
+int set_git_dir(const char *path)
+{
+	if (setenv(GIT_DIR_ENVIRONMENT, path, 1))
+		return error("Could not set GIT_DIR to '%s'", path);
+	setup_git_env();
+	return 0;
+}
-- 
1.5.3.rc3.94.g3024
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 21 of 30 in “work-tree clean ups”
  1. 0/9 work-tree clean upsJohannes Schindelin, Jul 29, 2007
  2. 1/9 Add is_absolute_path() and make_absolute_path()Johannes Schindelin, Jul 29, 2007
  3. 2/9 Add functions get_relative_cwd() and is_inside_dir()Johannes Schindelin, Jul 29, 2007
  4. 3/9 white space fixes in setup.cJohannes Schindelin, Jul 29, 2007
  5. 4/9 Clean up work-tree handlingJohannes Schindelin, Jul 29, 2007
  6. 5/9 Add set_git_dir() functionJohannes Schindelin, Jul 29, 2007
  7. 6/9 work-trees are allowed inside a git-dirJohannes Schindelin, Jul 29, 2007
  8. 7/9 init: use get_git_work_tree() instead of rolling our ownJohannes Schindelin, Jul 29, 2007
  9. 8/9 Fix t1501 for updated work-tree logicJohannes Schindelin, Jul 29, 2007
  10. 9/9 Fix t1500 for sane work-tree behaviorJohannes Schindelin, Jul 29, 2007
  11. Die if core.bare = true and core.worktree is setJohannes Schindelin, Jul 29, 2007
  12. Johannes SchindelinAug 1, 2007
  13. 1/4 Add is_absolute_path() and make_absolute_path()Johannes Schindelin, Aug 1, 2007
  14. 2/4 Add functions get_relative_cwd() and is_inside_dir()Johannes Schindelin, Aug 1, 2007
  15. Junio C HamanoAug 1, 2007
  16. Junio C HamanoAug 1, 2007
  17. Johannes SchindelinAug 1, 2007
  18. Make get_relative_cwd() not accept NULL for a directoryJohannes Schindelin, Aug 1, 2007
  19. Junio C HamanoAug 1, 2007
  20. get_relative_cwd(): clarify why it handles dir == NULLJohannes Schindelin, Aug 1, 2007
  21. 3/4 Add set_git_dir() functionJohannes Schindelin, Aug 1, 2007
  22. 4/4 Clean up work-tree handlingJohannes Schindelin, Aug 1, 2007
  23. Junio C HamanoAug 1, 2007
  24. Johannes SchindelinAug 1, 2007
  25. Junio C HamanoAug 2, 2007
  26. Junio C HamanoAug 1, 2007
  27. Johannes SchindelinAug 1, 2007
  28. Junio C HamanoAug 1, 2007
  29. Johannes SchindelinAug 1, 2007
  30. Johannes SchindelinAug 1, 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.