From: Junio C Hamano Date: Tue, 06 Jul 2010 03:02:54 GMT Subject: Re: [PATCH] pack-refs: remove newly empty directories Message-ID: <7vsk3x5n35.fsf@alter.siamese.dyndns.org> In-Reply-To: <1278368848-7037-1-git-send-email-price@ksplice.com> Greg Price writes: > diff --git a/pack-refs.c b/pack-refs.c > index 7f43f8a..33d7358 100644 > --- a/pack-refs.c > +++ b/pack-refs.c > @@ -63,11 +63,19 @@ static int handle_one_ref(const char *path, const unsigned char *sha1, > /* make sure nobody touched the ref, and unlink */ > static void prune_ref(struct ref_to_prune *r) > { > + char *p, *q; > struct ref_lock *lock = lock_ref_sha1(r->name + 5, r->sha1); > > if (lock) { > unlink_or_warn(git_path("%s", r->name)); > unlock_ref(lock); > + > + /* remove the directory if empty */ > + for (q = p = r->name; *p; p++) > + if (*p == '/') > + q = p; > + *q = '\0'; > + rmdir(r->name); > } > } Will this keep refs/heads/p/q that is empty after packing p/q/r/s branch that happens to be the only branch whose name begins with p/? I do not want a careless loop that will remove refs/heads after packing "master" that happens to be the only local branch, but still...