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

Re: Tracking branch history

From
Junio C Hamano <junkio@cox.net>
Date
May 15, 2006, 06:27 UTC
Message-ID
<7vac9jx0nq.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<20060515055830.GC28068@spearce.org>
Shawn Pearce <spearce@spearce.org> writes:
Show 14 quoted lines
> This is all well and good but its sort of useless without the diffcore
> being able to lookup what SHA1 was valid on a given branch at a given
> point in time.  :-)
>
> I'm thinking about extending the 'extended SHA1' syntax to accept
> a date (or date expression) as a suffix:
>
> 	HEAD@'2 hours ago'
> 	HEAD@'2006-04-20'
> 	HEAD@'2006-04-20 14:12'
>
> etc... This would be merged into get_sha1 (sha1_name.c) so its
> usable pretty much anywhere.  Does this seem reasonable?  If so
> I'll work up a patch for it.
HEAD?

Are you going to hook into symbolic-ref as well to track branch switching?

Since there is no reverse pointer to tell which symbolic reference is pointing at branch heads,and there are symbolic references like refs/remotes/origin/HEAD that point at refs/remotes/origin/master, detecting that such and such symbolic refs are pointing at a branch that is advanced by a call to update-ref and update the log for the symbolic refs that point at it becomes rather expensive. So probably you would need a separate log format that tracks which concrete ref a symbolic ref was pointing at at any given time and use that to keep track of them.

I personally doubt it is worth the trouble. I switch branches between master, next and the topics all the time, and never is interested in which branch I happened to be on 30 minutes ago.

The time-warp format would make sense for individual branches, like refs/heads/master, though.

sha1_name.c and sha1_file.c were supposed to be real core, but get_sha1() is looking more and more Porcelainish these days, and I do not have much problem with being able to say "tip of this branch, two hours ago".

I am not sure about the syntax though. We would want to be able to say "start from the commit that was at the tip of 'master' branch two days ago, grab its tree and look at arch/sparc64 directory", so things like

            "master@2006-05-14 14:12"
            "master@2006-05-14 14:12^{tree}"
            "master@two days ago:arch/sparc64"
would need to be supported.
Previous: Shawn PearceNext: Shawn Pearce
Message 16 of 21 in “Tracking branch history”
  1. Daniel BarkalowMay 12, 2006
  2. Linus TorvaldsMay 12, 2006
  3. Linus TorvaldsMay 13, 2006
  4. Daniel BarkalowMay 13, 2006
  5. Shawn PearceMay 13, 2006
  6. Linus TorvaldsMay 13, 2006
  7. Junio C HamanoMay 13, 2006
  8. Shawn PearceMay 13, 2006
  9. Shawn PearceMay 13, 2006
  10. Linus TorvaldsMay 13, 2006
  11. Junio C HamanoMay 13, 2006
  12. Shawn PearceMay 13, 2006
  13. Junio C HamanoMay 14, 2006
  14. Shawn PearceMay 15, 2006
  15. Shawn PearceMay 15, 2006
  16. Junio C HamanoMay 15, 2006
  17. Shawn PearceMay 15, 2006
  18. Shawn PearceMay 15, 2006
  19. Linus TorvaldsMay 13, 2006
  20. ElrondMay 13, 2006
  21. Junio C HamanoMay 14, 2006

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.