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

Re: Feature request: "author branch" in commit object

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 3, 2013, 18:08 UTC
Message-ID
<7vppuzfrde.fsf@alter.siamese.dyndns.org>
In-Reply-To
<CADL+T9Z=SrVyMMnYk3M7Dmb4c5xGiQtCTiDYaceKwB2-51TV-g@mail.gmail.com>
Ed Hutchins <eh@demeterr.com> writes:
Show 8 quoted lines
> I'm not trying to change the way git does things (which works perfectly
> well), I'm asking for some extra information to be added to the commit
> so that analysis of the ancestry graph can be tied to the branch topics
> that the original author was working from. Currently if you have a
> rebase-branch/ff-merge-to-master workflow, the graph of commits looks
> like a single user produced all of the code. It would be very useful for
> both forensic and display purposes to categorize those commits by their
> original topics, but that history is lost in such a workflow.

I am not following that "a single user" part. As long as these topics are done by different people, the authorship remains separate, no matter what the shape of the graph is.

It all depends on what you show on the graph other than a circle and connecting lines, but I presume at least you would show the subject line. The graph would clearly show which groups of commits tackle what problems in your history, even if you excessively linearlized it by rebasing. You need subjects / commit log messages that are better than "bugfix", of course, for it to work, though.

> Arguing that branch names are local and thus meaningless misses
> the point: branches are *names* which were meaningful to the
> author at the time the branch was being worked on.
That is not necessarily true.

Most of my commits start their life on a single branch that is named after a very broad theme (or even on a detached HEAD) that ends up touching different parts of the system and then later split into separate topic branches that are named after more detailed single issues. The name of the branch that happened to have been used to create them have almost no meaning after I am done with multiple and independent (but related in the larger scheme of things) topics.

It is not just misleading but is actively wrong to recording the name of the original branch in commits and carrying them forward via rebase. If you want a record of what a group of commits were about, the right time to do so is when you merge.

Projects that care about the shape of the ancestry graph have an obvious option of not excessively/unnecessarily linearlizing their history. We even have the "--no-ff" mode of merge to create an otherwise unnecessary merge to mark the point where a topic is merged to the mainline, so that merge log messages can say what topic was merged (and also you can even have "merge.log").

Cleaning up a messy history created on a topic branch before presenting to others by lineralizing is one thing. It is a good practice. Requiring any update to fast-forward on top of the tip of the project is quite different. It does not make your history any easier to read. A topic that has been working fine on top of last week's trunk can have a subtle interaction with the work done by others on the trunk since it forked, and rebasing it on top of today's trunk, just before pushing it out on the trunk, risks breaking the topic in a subtle way without the person who does such a rebase without noticing, making later bisection harder.

Any option to encourage such an artificially linear history _is_ actively detrimental.

Previous: Ed HutchinsNext: Jakub Narebski
Message 12 of 17 in “Feature request: "author branch" in commit object”
  1. Ed HutchinsJul 2, 2013
  2. Fredrik GustafssonJul 2, 2013
  3. Junio C HamanoJul 2, 2013
  4. Ed HutchinsJul 2, 2013
  5. Antoine PelisseJul 3, 2013
  6. Ed HutchinsJul 3, 2013
  7. Junio C HamanoJul 3, 2013
  8. Andrew ArdillJul 4, 2013
  9. Johan HerlandJul 2, 2013
  10. Matthieu MoyJul 3, 2013
  11. Ed HutchinsJul 3, 2013
  12. Junio C HamanoJul 3, 2013
  13. Jakub NarebskiJul 3, 2013
  14. DanyJul 3, 2013
  15. DanyJul 3, 2013
  16. Matthieu MoyJul 4, 2013
  17. Philip OakleyJul 9, 2013

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.