git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Keeping reflogs on branch deletion

From
Brian Downing <bdowning@lavos.net>
Date
Feb 14, 2008, 14:01 UTC
Message-ID
<20080214140152.GT27535@lavos.net>
In-Reply-To
<7vr6fgkxt2.fsf@gitster.siamese.dyndns.org>
On Wed, Feb 13, 2008 at 07:43:21PM -0800, Junio C Hamano wrote:
Show 8 quoted lines
> 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@lavos.net> 1202996833 -0600 branch: Created from ubuntu-dapper 4685dfedd47683a476e75166b5c273c0269b7e54 0000000000000000000000000000000000000000 Brian Downing <bdowning@lavos.net> 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
Previous: Junio C HamanoNext: Nicolas Pitre
Message 6 of 15 in “A couple branch questions”
  1. Jay SoffianFeb 14, 2008
  2. David SymondsFeb 14, 2008
  3. Bill LearFeb 14, 2008
  4. David SymondsFeb 14, 2008
  5. Junio C HamanoFeb 14, 2008
  6. Keeping reflogs on branch deletionBrian Downing, Feb 14, 2008
  7. Nicolas PitreFeb 14, 2008
  8. Johannes SchindelinFeb 14, 2008
  9. Jeff KingFeb 14, 2008
  10. Nicolas PitreFeb 14, 2008
  11. Jeff KingFeb 14, 2008
  12. Nicolas PitreFeb 14, 2008
  13. Jeff KingFeb 14, 2008
  14. Wincent ColaiutaFeb 14, 2008
  15. Jakub NarebskiFeb 14, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.