On Mon, Jul 5, 2010 at 11:02 PM, Junio C Hamano <gitster@pobox.com> wrote:
It will. I could fix that with something like this (untested):
/* Remove empty parents, but spare refs/ and immediate subdirs.
Note, munges *name. */
static void try_remove_empty_parents(char *name)
{
char *p, *q;
int i;
p = name;
for (i = 0; i < 2; i++) { /* refs/{heads,tags,...}/ */
while (*p && *p != '/')
p++;
if (*p)
p++;
}
for (q = p; *q; q++)
;
while (1) {
for ( ; q > p && *q != '/'; q--)
;
if (q == p)
break;
*q = '\0';
if (rmdir(git_path("%s", name)))
break;
}
}and then
if (lock) {
unlink_or_warn(git_path("%s", r->name));
unlock_ref(lock);
+ try_remove_empty_parents(r->name);
}Sound reasonable?
Greg