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:
|
retry:
|
||||||
if (log && rename(git_path("tmp-renamed-log"), git_path("logs/%s", newref))) {
|
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))) {
|
if (remove_empty_directories(git_path("logs/%s", newref))) {
|
||||||
error("Directory not empty: logs/%s", newref);
|
error("Directory not empty: logs/%s", newref);
|
||||||
goto rollback;
|
goto rollback;
|
||||||
|
Loading…
Reference in New Issue
Block a user