On Tue, Dec 7, 2010 at 9:06 AM, Jeff King <peff@xxxxxxxx> wrote: > On Mon, Dec 06, 2010 at 10:28:53PM -0800, Junio C Hamano wrote: > >> > Should this special log be mentioned in git-update-ref.txt or >> > gitrepository-layout.txt? >> >> Perhaps, but I wasn't sure if this patch itself is a good idea to begin >> with. Not the problem it tries to solve, but its approach. >> >> For example, this cannot be shown with "reflog show" or "log -g" due to >> the way these frontends locate the reflog file to read (the logic wants to >> have an underlying ref). > > Yeah, I think this is not _quite_ what people want in this area. A base > requirement from past discussions, I think, is that the whole reflog of > the deleted branch be saved rather than just the tip. And then "reflog > show" would make a lot more sense on such saved reflogs. Yup, that's what I recall too, folks (including myself) want to save the reflog of the deleted branch, so it can be recovered if the branch itself were to be recovered with an --undelete option. > I'm not sure in practice how important that distinction is, as we are > not saving deleted branch reflogs _at all_ right now, so the > requirements are mostly speculation at this point. > > The most recent discussion I recall is this one: > > http://thread.gmane.org/gmane.comp.version-control.git/144250/focus=145353 > > where the general idea was to just keep deleted reflogs around, append > to them if the branch was recreated, and use a consistent renaming > scheme to avoid D/F naming conflicts (e.g., "foo" is a deleted ref, and > you create "foo/bar"). 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. This still causes problems for git reflog show / git log -g because they want a current ref to enumerate the log of. A different approach might be to have $GIT_DIR/logs/refs/REF_ATTIC, and special case that in git reflog show / git log -g. When a ref is deleted, append its entire log onto REF_ATTIC, between two specially formatted marker lines. When recovering a branch, copy out the region from the REF_ATTIC log. -- Shawn. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html