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

[PATCH] Allow removing files in a subdirectory.

From
Junio C Hamano <junkio@cox.net>
Date
May 1, 2005, 11:16 UTC
Message-ID
<7vu0lnxkla.fsf@assigned-by-dhcp.cox.net>

I found this during a conflict merge testing. The original did not have either DF (a file) or DF/DF (a file DF/DF under a directory DF). One side created DF, the other created DF/DF. I first resolved DF as a new file by taking what the first side did. After that, the entry DF/DF cannot be resolved by running git-update-cache --remove although it does not exist on the filesystem.

    $ /bin/ls -F
    AN  DF  MN  NM  NN  SS  Z/
    $ git-ls-files --stage | grep DF
    100644 71420ab81e254145d26d6fc0cddee64c1acd4787 0 DF
    100644 68a6d8b91da11045cf4aa3a5ab9f2a781c701249 2 DF/DF
    $ git-update-cache --remove DF/DF
    fatal: Unable to add DF/DF to database

It turns out that the errno from open() in this case was not ENOENT but ENOTDIR, which the code did not check. Here is a fix.

Signed-off-by: Junio C Hamano <junkio@cox.net>
---
BTW, Linus do you want the updates to my merge-test-script-from-hell? 

update-cache.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-)

# - [PATCH] Resurrect diff-tree-helper -R # + [PATCH] Allow removing files in a subdirectory. --- k/update-cache.c +++ l/update-cache.c

@@ -111,7 +111,7 @@ static int add_file_to_cache(char *path)
 
 	fd = open(path, O_RDONLY);
 	if (fd < 0) {
-		if (errno == ENOENT) {
+		if (errno == ENOENT || errno == ENOTDIR) {
 			if (allow_remove)
 				return remove_file_from_cache(path);
 		}
Message 1 of 1 in “Allow removing files in a subdirectory.”
  1. Allow removing files in a subdirectory.Junio C Hamano, May 1, 2005

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.