Solaris 5.8 returns ENOTDIR for inappropriate renames.
The reflog code clears empty directories when rename returns either EISDIR or ENOTDIR. Seems to be the only place. Signed-off-by: Jason Riedy <ejr@cs.berkeley.edu> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
2aad957a51
commit
d9e74d5745
7
refs.c
7
refs.c
@ -837,7 +837,12 @@ int rename_ref(const char *oldref, const char *newref, const char *logmsg)
|
||||
|
||||
retry:
|
||||
if (log && rename(git_path("tmp-renamed-log"), git_path("logs/%s", newref))) {
|
||||
if (errno==EISDIR) {
|
||||
if (errno==EISDIR || errno==ENOTDIR) {
|
||||
/*
|
||||
* rename(a, b) when b is an existing
|
||||
* directory ought to result in ISDIR, but
|
||||
* Solaris 5.8 gives ENOTDIR. Sheesh.
|
||||
*/
|
||||
if (remove_empty_directories(git_path("logs/%s", newref))) {
|
||||
error("Directory not empty: logs/%s", newref);
|
||||
goto rollback;
|
||||
|
Loading…
Reference in New Issue
Block a user