git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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".

  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).