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

[PATCH] rehabilitate 'git index-pack' inside the object store

From
Nicolas Pitre <nico@cam.org>
Date
Oct 21, 2008, 01:17 UTC
Message-ID
<alpine.LFD.2.00.0810202110380.26244@xanadu.home>

Before commit d0b92a3f6e it was possible to run 'git index-pack' directly in the .git/objects/pack/ directory. Restore that ability.

Signed-off-by: Nicolas Pitre <nico@cam.org>
---
diff --git a/index-pack.c b/index-pack.c
index 0a917d7..79f6fd6 100644
--- a/index-pack.c
+++ b/index-pack.c
@@ -878,10 +877,26 @@ int main(int argc, char **argv)
 	char *index_name_buf = NULL, *keep_name_buf = NULL;
 	struct pack_idx_entry **idx_objects;
 	unsigned char pack_sha1[20];
-	int nongit = 0;
 
-	setup_git_directory_gently(&nongit);
-	git_config(git_index_pack_config, NULL);
+	/*
+	 * We wish to read the repository's config file if any, and
+	 * for that it is necessary to call setup_git_directory_gently().
+	 * However if the cwd was inside .git/objects/pack/ then we need
+	 * to go back there or all the pack name arguments will be wrong.
+	 * And in that case we cannot rely on any prefix returned by 
+	 * setup_git_directory_gently() either.
+	 */
+	{
+		char cwd[PATH_MAX+1];
+		int nongit;
+
+		if (!getcwd(cwd, sizeof(cwd)-1))
+			die("Unable to get current working directory");
+		setup_git_directory_gently(&nongit);
+		git_config(git_index_pack_config, NULL);
+		if (chdir(cwd))
+			die("Cannot come back to cwd");
+	}
 
 	for (i = 1; i < argc; i++) {
 		char *arg = argv[i];
Next: Junio C Hamano
Message 1 of 11 in “rehabilitate 'git index-pack' inside the object store”
  1. rehabilitate 'git index-pack' inside the object storeNicolas Pitre, Oct 21, 2008
  2. (squash) add index-pack with git-dir testJunio C Hamano, Oct 21, 2008
  3. Nguyen Thai Ngoc DuyOct 21, 2008
  4. Jeff KingOct 21, 2008
  5. Nicolas PitreOct 21, 2008
  6. Johannes SchindelinOct 21, 2008
  7. Jeff KingOct 21, 2008
  8. new plan for cleaning up the worktree mess, was Re: [PATCH] rehabilitate 'git index-pack' inside the object storeJohannes Schindelin, Oct 21, 2008
  9. Nguyen Thai Ngoc DuyOct 28, 2008
  10. Nguyen Thai Ngoc DuyOct 22, 2008
  11. Nguyen Thai Ngoc DuyOct 22, 2008

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.