* [PATCH] Allow removing files in a subdirectory.
@ 2005-05-01 11:16 Junio C Hamano
0 siblings, 0 replies; only message in thread
From: Junio C Hamano @ 2005-05-01 11:16 UTC (permalink / raw)
To: Linus Torvalds; +Cc: git
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);
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-05-01 11:10 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-05-01 11:16 [PATCH] Allow removing files in a subdirectory Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox