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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.