git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Nicolas Pitre <nico@cam.org>
Cc: "Stephen R. van den Berg" <srb@cuci.nl>,
	Jakub Narebski <jnareb@gmail.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	git@vger.kernel.org
Subject: Re: [RFC] origin link for cherry-pick and revert
Date: Thu, 11 Sep 2008 14:05:20 -0700	[thread overview]
Message-ID: <7vy71ys8a7.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <alpine.LFD.1.10.0809111222170.23787@xanadu.home> (Nicolas Pitre's message of "Thu, 11 Sep 2008 13:02:36 -0400 (EDT)")

Nicolas Pitre <nico@cam.org> writes:

> Still, in your case, you probably won't get rid of your stable branches, 
> hence the reachability argument is rather weak for your usage scenario, 
> meaning that you could as well have that info in the free form text 
> (like cherry-pick -x), and even generate a special graft file from that 
> locally for visualization/blame purposes.  Sure the indirection will add 
> some overhead, but I doubt it'll be measurable.

I keep hearing "blame" in this discussion, but I do not understand why
people think blame should _follow_ this "origin" information (in the usual
sense of "following").

Suppose you cherry-pick an existing commit from unrelated context:

         ...---A---B
                    . (origin)
                     .
        ...---o---X---Y---Z

i.e. on top of X the difference to bring A to B is applied to produce Y,
and a new development Z is made on top.  You start digging from Z.

Without any "origin", here is how blame works:

 * What Z did is blamed on Z; what Z did not change is passed to Y;

 * Y needs to:
 
   (1) take responsibility for what it changed; and/or

   (2) the remaining contents came from X --- pass the blame to it.

Let's see how we would want "origin" get involved.  Instead of the above,
what Y would do would be:

   (1) if the contents (excluding the part Z changed) is different from X,
       instead of taking the blame itself, give the _final_ blame to B.

   (2) the remainder is passed to X as usual.

This is different from the normal "following" in that B is not allowed to
pass the blame to its parents (should it be allowed to pass it to its
"origin"?), because the _only thing_ cherry-pick did was to transport what
B did (relative to A) to the unrelated history that led to X.

IOW, you did not look at the contents outside "diff A..B" when you made
the cherry-pick.  There could well be parts of the content that are common
across all of A, Y, X and Z, but as far as Y and Z are concerned, they did
not get any part of that common common content from A (otherwise "origin"
is no different from "parent", but you did not merge).

The output from "origin" aware blame would be identical to the normal
blame, except that lines that usually are labeled with Y are labeled with
B.  However:

   (1) If you _are_ interested in the line that says Y, you can look at
       the commit object Y and see "cherry-pick -x" information to learn
       it came from B already; and

   (2) More importantly, if you want to dig deeper by peeling the blamed
       line (I think gitweb allows this, and probably git-gui), you
       shouldn't peel that line blamed on B to start running blame at A.
       That would continue digging the history of A, which is wrong when
       you are examining the history that led to Z.

So please leave "blame" out of this discussion.

  parent reply	other threads:[~2008-09-11 21:06 UTC|newest]

Thread overview: 137+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-09 13:22 [RFC] origin link for cherry-pick and revert Stephen R. van den Berg
2008-09-09 13:38 ` Paolo Bonzini
2008-09-09 14:04   ` Stephen R. van den Berg
2008-09-09 13:48 ` Stephen R. van den Berg
2008-09-09 15:44 ` Jakub Narebski
2008-09-09 16:38   ` Steven Grimm
2008-09-09 19:43   ` Stephen R. van den Berg
2008-09-09 19:59     ` Jeff King
2008-09-09 20:25       ` Stephen R. van den Berg
2008-09-09 20:42       ` Junio C Hamano
2008-09-09 20:47         ` Shawn O. Pearce
2008-09-09 20:50         ` Jeff King
2008-09-09 22:35           ` Jakub Narebski
2008-09-09 23:07             ` Jakub Narebski
2008-09-10  8:10               ` Paolo Bonzini
2008-09-10  0:13         ` Stephen R. van den Berg
2008-09-10  1:59           ` Junio C Hamano
2008-09-10  5:38             ` Stephen R. van den Berg
2008-09-09 21:05       ` Junio C Hamano
2008-09-09 21:09         ` Jeff King
2008-09-09 23:36           ` Stephen R. van den Berg
2008-09-09 20:54     ` Jakub Narebski
2008-09-09 23:08       ` Stephen R. van den Berg
2008-09-09 23:35     ` Linus Torvalds
2008-09-09 23:58       ` Stephen R. van den Berg
2008-09-10  0:23         ` Linus Torvalds
2008-09-10  5:42           ` Stephen R. van den Berg
2008-09-10 15:30             ` Linus Torvalds
2008-09-10 23:09               ` Stephen R. van den Berg
2008-09-11  0:39                 ` Linus Torvalds
2008-09-11  6:22                   ` Stephen R. van den Berg
2008-09-11  8:20                     ` Jakub Narebski
2008-09-11 12:31                       ` Stephen R. van den Berg
2008-09-11 13:51                         ` Theodore Tso
2008-09-11 15:32                           ` Stephen R. van den Berg
2008-09-11 18:00                             ` Theodore Tso
2008-09-11 19:03                               ` Stephen R. van den Berg
2008-09-11 19:33                                 ` Nicolas Pitre
2008-09-11 19:44                                   ` Stephen R. van den Berg
2008-09-11 20:03                                     ` Nicolas Pitre
2008-09-11 20:24                                       ` Stephen R. van den Berg
2008-09-11 20:05                                     ` Jakub Narebski
2008-09-11 20:22                                       ` Stephen R. van den Berg
2008-09-12  0:30                                         ` A Large Angry SCM
2008-09-12  5:39                                           ` Stephen R. van den Berg
2008-09-11 20:04                                 ` Theodore Tso
2008-09-11 21:46                                   ` Jeff King
2008-09-11 22:56                                     ` Stephen R. van den Berg
2008-09-11 23:01                                       ` Jeff King
2008-09-11 23:17                                         ` Stephen R. van den Berg
2008-09-11 23:10                                     ` Linus Torvalds
2008-09-11 23:26                                       ` Jeff King
2008-09-11 23:36                                       ` Stephen R. van den Berg
2008-09-11 15:02                         ` Nicolas Pitre
2008-09-11 16:00                           ` Stephen R. van den Berg
2008-09-11 17:02                             ` Nicolas Pitre
2008-09-11 18:44                               ` Stephen R. van den Berg
2008-09-11 20:00                                 ` Nicolas Pitre
2008-09-11 21:05                               ` Junio C Hamano [this message]
2008-09-11 22:32                                 ` Stephen R. van den Berg
2008-09-11 22:40                                   ` Stephen R. van den Berg
2008-09-11 12:28                     ` A Large Angry SCM
2008-09-11 12:39                       ` Stephen R. van den Berg
2008-09-12  0:03                         ` A Large Angry SCM
2008-09-12  0:13                           ` Stephen R. van den Berg
2008-09-11 15:39                     ` Linus Torvalds
2008-09-11 16:01                       ` Paolo Bonzini
2008-09-11 16:23                         ` Linus Torvalds
2008-09-11 20:16                           ` Stephen R. van den Berg
2008-09-11 16:53                       ` Jakub Narebski
2008-09-11 19:23                       ` Stephen R. van den Berg
2008-09-11 19:45                         ` Nicolas Pitre
2008-09-11 19:55                           ` Stephen R. van den Berg
2008-09-11 20:27                             ` Nicolas Pitre
2008-09-12  8:50                               ` Stephen R. van den Berg
2008-09-11 21:01                             ` Theodore Tso
2008-09-12  8:40                               ` Stephen R. van den Berg
2008-09-10  8:30           ` Paolo Bonzini
2008-09-10 15:32             ` Linus Torvalds
2008-09-10 15:37               ` Paolo Bonzini
2008-09-10 15:43                 ` Linus Torvalds
2008-09-10 15:46                   ` Linus Torvalds
2008-09-10 15:57                     ` Paolo Bonzini
2008-09-10 23:15                       ` Stephen R. van den Berg
2008-09-10 16:23                     ` Jakub Narebski
2008-09-11 23:28                       ` Sam Vilain
2008-09-11 23:44                         ` Linus Torvalds
2008-09-12  2:24                           ` Sam Vilain
2008-09-12  5:47                           ` Stephen R. van den Berg
2008-09-12  6:19                             ` Rogan Dawes
2008-09-12  6:56                               ` Stephen R. van den Berg
2008-09-12 14:58                             ` Theodore Tso
2008-09-12 15:05                               ` Paolo Bonzini
2008-09-12 15:11                               ` Jakub Narebski
2008-09-12 15:40                                 ` Paolo Bonzini
2008-09-12 16:00                                   ` Theodore Tso
2008-09-12 15:54                               ` Stephen R. van den Berg
2008-09-12 16:19                                 ` Jeff King
2008-09-12 16:43                                   ` Stephen R. van den Berg
2008-09-12 18:44                                     ` Theodore Tso
2008-09-12 20:56                                       ` Stephen R. van den Berg
2008-09-15 12:21                                 ` Sam Vilain
2008-09-09 23:59       ` Jakub Narebski
2008-09-09 21:13 ` Petr Baudis
2008-09-09 22:56   ` Stephen R. van den Berg
2008-09-09 23:05     ` Petr Baudis
2008-09-09 23:32       ` Stephen R. van den Berg
2008-09-10  9:35       ` [RFC] origin link for cherry-pick and revert, and more about porcelain-level metadata Paolo Bonzini
2008-09-10 10:44         ` Petr Baudis
2008-09-10 11:49           ` Stephen R. van den Berg
2008-09-10 12:30             ` Petr Baudis
2008-09-10 13:14               ` Stephen R. van den Berg
2008-09-10 14:33         ` Dmitry Potapov
2008-09-10 15:15           ` Stephen R. van den Berg
2008-09-10 15:24             ` Paolo Bonzini
2008-09-10 12:21     ` [RFC] origin link for cherry-pick and revert Theodore Tso
2008-09-10 14:16       ` Stephen R. van den Berg
2008-09-10 15:10         ` Jeff King
2008-09-10 21:50           ` Stephen R. van den Berg
2008-09-10 21:54             ` Jeff King
2008-09-10 22:34               ` Stephen R. van den Berg
2008-09-10 22:55                 ` Jeff King
2008-09-10 23:19                   ` Stephen R. van den Berg
2008-09-11  5:16                     ` Paolo Bonzini
2008-09-11  7:55                       ` Stephen R. van den Berg
2008-09-11  8:45                         ` Paolo Bonzini
2008-09-11 12:33                         ` A Large Angry SCM
2008-09-11  2:46                   ` Nicolas Pitre
2008-09-10 16:18         ` Theodore Tso
2008-09-10 16:40         ` Petr Baudis
2008-09-10 17:58           ` Paolo Bonzini
2008-09-10 22:44             ` Stephen R. van den Berg
2008-09-10  8:45   ` Paolo Bonzini
2008-09-23 13:51   ` Recording "partial merges" (was: Re: [RFC] origin link for cherry-pick and revert) Peter Krefting
2008-09-10 20:32 ` [RFC] origin link for cherry-pick and revert Miklos Vajna
2008-09-10 20:55   ` Nicolas Pitre
2008-09-10 21:06     ` Miklos Vajna

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=7vy71ys8a7.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=jnareb@gmail.com \
    --cc=nico@cam.org \
    --cc=srb@cuci.nl \
    --cc=torvalds@linux-foundation.org \
    /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).