From: Sitaram Chamarty <sitaramc@gmail.com>
To: Johan Herland <johan@herland.net>, Jeremy Morton <admin@game-point.net>
Cc: Git mailing list <git@vger.kernel.org>
Subject: Re: Recording the current branch on each commit?
Date: Mon, 28 Apr 2014 08:00:13 +0530 [thread overview]
Message-ID: <535DBD35.4080507@gmail.com> (raw)
In-Reply-To: <CALKQrgemFx=2JaC1BaRqCwEV+knC8QftxcZ7K0AsT9azzuyVdA@mail.gmail.com>
On 04/28/2014 01:03 AM, Johan Herland wrote:
> On Sun, Apr 27, 2014 at 7:38 PM, Jeremy Morton <admin@game-point.net> wrote:
>> On 27/04/2014 10:09, Johan Herland wrote:
>>> On Sun, Apr 27, 2014 at 1:56 AM, Jeremy Morton<admin@game-point.net>
>>> wrote:
>>>> Currently, git records a checksum, author, commit date/time, and commit
>>>> message with every commit (as get be seen from 'git log'). I think it
>>>> would
>>>> be useful if, along with the Author and Date, git recorded the name of
>>>> the
>>>> current branch on each commit.
>>>
>>> This has been discussed multiple times in the past. One example here:
>>> http://thread.gmane.org/gmane.comp.version-control.git/229422
>>>
>>> I believe the current conclusion (if any) is that encoding such
>>> information as a _structural_ part of the commit object is not useful.
>>> See the old thread(s) for the actual pro/con arguments.
>>
>> As far as I can tell from that discussion, the general opposition to
>> encoding the branch name as a structural part of the commit object is that,
>> for some people's workflows, it would be unhelpful and/or misleading. Well
>> fair enough then - why don't we make it a setting that is off by default,
>> and can easily be switched on? That way the people for whom tagging the
>> branch name would be useful have a very easy way to switch it on.
>
> Obviously, the feature would necessarily have to be optional, simply
> because Git would have to keep understanding the old commit object
> format for a LONG time (probably indefinitely), and there's nothing
> you can do to prevent others from creating old-style commit objects.
>
> Which brings us to another big con at this point: The cost of changing
> the commit object format. One can argue for or against a new commit
> object format, but the simple truth at this point is that changing the
> structure of the commit object is expensive. Even if we were all in
> agreement about the change (and so far we are not), there are multiple
> Git implementations (libgit2, jgit, dulwich, etc.) that would all have
> to learn the new commit object, not to mention that bumping
> core.repositoryformatversion would probably make your git repo
> incompatible with a huge number of existing deployments for the
> foreseeable future.
>
> Therefore, the most pragmatic and constructive thing to do at this
> point, is IMHO to work within the confines of the existing commit
> object structure. I actually believe using commit message trailers
> like "Made-on-branch: frotz" in addition to some helpful
> infrastructure (hooks, templates, git-interpret-trailers, etc.) should
> get you pretty much exactly what you want. And if this feature turns
> out to be extremely useful for a lot of users, we can certainly
> consider changing the commit object format in the future.
>
>> I know
>> that for the workflows I personally have used in the past, such tagging
>> would be very useful. Quite often I have been looking through the Git log
>> and wondered what feature a commit was "part of", because I have feature
>> branches. Just knowing that branch name would be really useful, but the
>> branch has since been deleted... and in the case of a ff-merge (which I
>> thought was recommended in Git if possible), the branch name is completely
>> gone.
>
> True. The branch name is - for better or worse - simply not considered
> very important by Git, and a Git commit is simply not considered (by
> Git at least) to "be part of" or otherwise "belong to" any branch.
> Instead the commit history/graph is what Git considers important, and
> the branch names are really just more-or-less ephemeral pointers into
> that graph.
>
> AFAIK, recording the current branch name in commits was not considered
> to the worth including in Linus' original design, and since then it
> seems to only have come up a few times on the mailing list. This is
> quite central to Git's design, and changing it at this point should
> not be done lightly.
>
> IINM, Mercurial does this differently, so that may be a better fit for
> the workflows where keeping track of branch names is very important.
>
>>> That said, you are of course free to add this information to your own
>>> commit messages, by appending something like "Made-on-branch: frotz".
>>> In a company setting, you can even create a commit message template or
>>> (prepare-)commit-msg hook to have this line created automatically for
>>> you and your co-workers. You could even append such information
>>> retroactively to existing commits with "git notes". There is also the
>>> current interpret-trailers effort by Christian Couder [1] that should
>>> be useful in creating and managing such lines.
>>>
>>> [1]: http://thread.gmane.org/gmane.comp.version-control.git/245874
>>
>> Well I guess that's another way of doing it. So, why aren't Author and Date
>> trailers? They don't seem any more fundamental to me than branch name. I
>> mean the only checkin information you really *need* is the checksum, and
>> commit's parents. The Author and Date are just extra pieces of information
>> you might find useful sometimes, right? A bit like some people might find
>> branch checkin name useful sometimes...?
>
> Yeah, sure. Author and Date (and Committer, for that matter) is just
> metadata, and the current branch name is simply just another kind of
> metadata. All of them are more-or-less free-form text fields, and off
no they're not. In strictly controlled environments they form part of
the audit record for the source code.
Yes they can be faked (explicitly), but -- again in strictly controlled
environments -- that can be limited to "before it was first pushed".
next prev parent reply other threads:[~2014-04-28 2:30 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-26 23:56 Recording the current branch on each commit? Jeremy Morton
2014-04-27 8:51 ` Robin Rosenberg
2014-04-27 17:27 ` Jeremy Morton
2014-04-27 21:40 ` James Denholm
2014-04-27 22:12 ` Jeremy Morton
2014-04-27 22:31 ` James Denholm
2014-04-28 8:32 ` Felipe Contreras
2014-04-28 8:49 ` Jeremy Morton
2014-04-28 9:02 ` David Kastrup
2014-04-28 9:10 ` Jeremy Morton
2014-04-28 9:23 ` David Kastrup
2014-04-29 21:58 ` David Lang
2014-04-28 17:31 ` Junio C Hamano
2014-04-27 9:09 ` Johan Herland
2014-04-27 17:38 ` Jeremy Morton
2014-04-27 19:33 ` Johan Herland
2014-04-27 20:55 ` Jeremy Morton
2014-04-27 23:39 ` Johan Herland
2014-04-28 6:45 ` Christian Couder
2014-04-28 9:01 ` Jeremy Morton
2014-04-28 9:09 ` Johan Herland
2014-04-28 9:16 ` Jeremy Morton
2014-04-29 22:14 ` David Lang
2014-04-28 9:01 ` Felipe Contreras
2014-04-28 9:17 ` Jeremy Morton
2014-04-28 9:17 ` Felipe Contreras
2014-04-28 9:35 ` Jeremy Morton
2014-04-28 17:10 ` Felipe Contreras
2014-04-28 9:39 ` David Kastrup
2014-04-28 17:22 ` Felipe Contreras
2014-04-28 23:03 ` James Denholm
2014-04-28 23:09 ` Felipe Contreras
2014-04-28 23:40 ` Junio C Hamano
2014-04-28 23:50 ` Felipe Contreras
2014-04-29 0:10 ` Junio C Hamano
2014-04-29 0:59 ` Felipe Contreras
2014-04-29 1:29 ` James Denholm
2014-04-29 3:32 ` Felipe Contreras
2014-04-29 6:53 ` James Denholm
2014-04-29 8:28 ` Felipe Contreras
2014-04-29 9:00 ` David Kastrup
2014-04-29 9:25 ` Felipe Contreras
2014-04-29 9:47 ` David Kastrup
2014-04-29 9:54 ` Felipe Contreras
2014-04-29 10:14 ` David Kastrup
2014-04-29 10:17 ` Felipe Contreras
2014-04-29 10:37 ` David Kastrup
2014-04-29 11:46 ` Felipe Contreras
2014-04-29 10:59 ` James Denholm
2014-04-29 11:47 ` Felipe Contreras
2014-04-29 12:25 ` James Denholm
2014-04-29 13:31 ` Felipe Contreras
2014-04-29 21:04 ` James Denholm
2014-04-29 21:45 ` Felipe Contreras
2014-04-29 22:25 ` James Denholm
2014-04-29 23:05 ` Felipe Contreras
2014-04-30 0:22 ` James Denholm
2014-04-30 0:44 ` Felipe Contreras
2014-04-30 1:11 ` James Denholm
2014-04-29 21:48 ` Piotr Krukowiecki
2014-04-29 8:34 ` Robin Rosenberg
2014-04-28 2:30 ` Sitaram Chamarty [this message]
2014-04-28 8:52 ` Jeremy Morton
2014-04-28 10:03 ` Sitaram Chamarty
2014-04-28 6:07 ` David Kastrup
2014-04-28 10:03 ` Sitaram Chamarty
2014-04-28 16:38 ` Johan Herland
2014-04-28 8:57 ` Felipe Contreras
2014-04-28 8:50 ` Felipe Contreras
-- strict thread matches above, loose matches on Subject: below --
2014-04-28 6:36 Max Kirillov
2014-04-28 18:15 ` Junio C Hamano
2014-04-30 4:04 ` Max Kirillov
2014-04-28 6:42 Max Kirillov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=535DBD35.4080507@gmail.com \
--to=sitaramc@gmail.com \
--cc=admin@game-point.net \
--cc=git@vger.kernel.org \
--cc=johan@herland.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).