From: Shawn O. Pearce Date: Tue, 07 Dec 2010 18:23:42 GMT Subject: Re: [PATCH] logging branch deletion to help recovering from mistakes Message-ID: <20101207182342.GA3725@spearce.org> In-Reply-To: <20101207182040.GA26770@sigill.intra.peff.net> Jeff King wrote: > On Tue, Dec 07, 2010 at 10:14:19AM -0800, Shawn O. Pearce wrote: > > > Per check-ref-format, ref names cannot contain two dots. We could > > archive ref logs by renaming them, $GIT_DIR/logs/refs/heads/foo > > becomes $GIT_DIR/logs/refs/heads/foo..deleted-1. If foo is created > > and deleted again, it becomes foo..deleted-2. ... > > A different approach might be to have $GIT_DIR/logs/refs/REF_ATTIC, > > That seems a lot less efficient, as we have to linearly search all of > REF_ATTIC to get: > > 1. the reflog for one deleted branch > > 2. the list of deleted branches > > Neither of those is probably particularly performance critical, but it > just seems like keeping the logs in files indexed by the original ref > names is a more natural fit. Yea, I'm leaning more towards the foo..deleted-n idea too, for the same reasons. It also makes it easier to GC a deleted branch's reflog, we can examine the last record's timestamp in a reasonable time bound and unlink the log if its really freaking old. -- Shawn.