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

[PATCH] builtin-rm: fix index lock file path

From
OMOlivier Marin <dkr+ml.git@free.fr>
Date
Jul 19, 2008, 16:21 UTC
Message-ID
<48821485.6050507@free.fr>
In-Reply-To
<20080719082314.GA15419@mail.local.tull.net>
From: Olivier Marin <dkr@freesurf.fr>

When hold_locked_index() is called with a relative git_dir and you are outside the work tree, the lock file become relative to the current directory. So when later setup_work_tree() change the current directory it breaks lock file path and commit_locked_index() fails.

This patch move index locking code after setup_work_tree() call to make lock file relative to the working tree as it should be and add a test case.

Noticed by Nick Andrew.
Signed-off-by: Olivier Marin <dkr@freesurf.fr>
---
 builtin-rm.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/builtin-rm.c b/builtin-rm.c
index 56454ec..ee8247b 100644
--- a/builtin-rm.c
+++ b/builtin-rm.c
@@ -146,11 +146,6 @@ int cmd_rm(int argc, const char **argv, const char *prefix)
 
 	git_config(git_default_config, NULL);
 
-	newfd = hold_locked_index(&lock_file, 1);
-
-	if (read_cache() < 0)
-		die("index file corrupt");
-
 	argc = parse_options(argc, argv, builtin_rm_options, builtin_rm_usage, 0);
 	if (!argc)
 		usage_with_options(builtin_rm_usage, builtin_rm_options);
@@ -158,6 +153,11 @@ int cmd_rm(int argc, const char **argv, const char *prefix)
 	if (!index_only)
 		setup_work_tree();
 
+	newfd = hold_locked_index(&lock_file, 1);
+
+	if (read_cache() < 0)
+		die("index file corrupt");
+
 	pathspec = get_pathspec(prefix, argv);
 	seen = NULL;
 	for (i = 0; pathspec[i] ; i++)
-- 
1.5.6.3.440.g489d7
Previous: Nick AndrewNext: Olivier Marin
Message 2 of 3 in “Out-of-repository file remove error”
  1. Nick AndrewJul 19, 2008
  2. builtin-rm: fix index lock file pathOlivier Marin, Jul 19, 2008
  3. builtin-rm: fix index lock file pathOlivier Marin, Jul 19, 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.