Looks like this time it is not cygwin, the you-know-what actually does return a permission error. Signed-off-by: Alex Riesen <raa.lkml@xxxxxxxxx> --- I am very tempted to conditionally #define gitunlink to say something rude about win32 and delete c:\boot.ini instead. It will even work, in most setups. merge-recursive.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/merge-recursive.c b/merge-recursive.c index 595b022..ae4032b 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -610,16 +610,19 @@ static void update_file_flags(const unsigned char *sha, die(msg, path, ""); } if (unlink(path)) { - if (errno == EISDIR) { + struct stat st; + int err = errno; + if (err == EISDIR || + (err == EPERM && !lstat(path, &st) && S_ISDIR(st.st_mode))) { /* something else exists */ error(msg, path, ": perhaps a D/F conflict?"); update_wd = 0; goto update_index; } - if (errno != ENOENT) + if (err != ENOENT) die("failed to unlink %s " "in preparation to update: %s", - path, strerror(errno)); + path, strerror(err)); } if (mode & 0100) mode = 0777; -- 1.5.1.1.876.ge36f76 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html