On Wed, Feb 13, 2008 at 07:43:21PM -0800, Junio C Hamano wrote: > People often mistake that the safety of "branch -d" is to not > lose the commit (i.e. not making it unreachable), but that is > not the case. That safety already exists in HEAD reflogs. > > The "branch -d" safety is about not losing the particular point. > The information we really are trying to protect is "this branch > points at _that commit_", which is just as important if not > more. This actually brings up something I've been intending to ask. When deleting a branch, is there any reason we can't add a deletion entry into the reflog and keep the reflog around? This would seem to be a lot safer; I know I've been burned by expecting the reflog safety net to be there, and surprised that it's not when I've deleted a branch. I expect that the reflog entry would look something like this: 0000000000000000000000000000000000000000 4685dfedd47683a476e75166b5c273c0269b7e54 Brian Downing <bdowning@xxxxxxxxx> 1202996833 -0600 branch: Created from ubuntu-dapper 4685dfedd47683a476e75166b5c273c0269b7e54 0000000000000000000000000000000000000000 Brian Downing <bdowning@xxxxxxxxx> 1202996863 -0600 branch: Deleted A couple of problems I've noticed that would have to be fixed for this to work: * git log -g (and anything else that can take a reflog) would have to be fixed or modified to allow for taking branches that no longer exist: :; ls .git/logs/refs/heads/foo .git/logs/refs/heads/foo :; git log -g foo fatal: ambiguous argument 'foo': unknown revision or path not in the working tree. Use '--' to separate paths from revisions My uneducated suspicion is that this may be somewhat hard. * If the above did work, it would be nice for the deletion entry to result in a nice "branch was deleted" entry in log -g output. Today, that entry is missing in its entirety. -bcd - 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