Git development
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Felipe Contreras <felipe.contreras@gmail.com>
Cc: git@vger.kernel.org, Ramkumar Ramachandra <artagnon@gmail.com>,
	Duy Nguyen <pclouds@gmail.com>
Subject: Re: [PATCH v6] Add new git-related helper to contrib
Date: Wed, 22 May 2013 16:42:44 -0700	[thread overview]
Message-ID: <7vzjvmh98r.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <7v4nduipvb.fsf@alter.siamese.dyndns.org> (Junio C. Hamano's message of "Wed, 22 May 2013 15:58:16 -0700")

Junio C Hamano <gitster@pobox.com> writes:

>>> The person who moved the code will be on the list regardless,
>>
>> That is exactly the point I have been trying to raise.  Does the
>> person appear in the list when you run blame with -CCC?  You ask for
>
> s/person/commit/;
>
>> the body of the function, and the -C mode of blame sees through the
>> block-of-line movement across file boundaries, and goes straight to
>> the last commit that touched the body of the function in its original
>> file, no?

-- >8 --
cd /var/tmp/
git init blame
cd blame

cp /src/git/COPYING COPYING
git add COPYING
git commit -m initial

sed -ne 120,140p COPYING >EXTRACTING
git add EXTRACTING
git commit -m second

git blame -C -C -C EXTRACTING
-- 8< --

will show that all lines from EXTRACTING came from the original
revision of COPYING, and we will miss the line-move event.

"blame -C" with a single -C does not look at the files that did not
change in the commit that added these lines to EXTRACTING
(i.e. COPYING), so the digging stops there.

After this, if you do this:

-- >8 --
echo >>COPYING
git commit --amend -a --no-edit

git blame -C EXTRACTING
-- 8< --

then the commit that did add these lines to EXTRACTING touched
COPYING, and the origin of these lines are traced to it (this is
designed to be useful in a typical "refactor by moving code";
"cut and paste without changing the original" people need heavier
copy detection with more -C).

IIRC, git-gui runs two blames, one without any -C and one with (I do
not offhand recall how many -C it uses) to show both.

HTH.

  reply	other threads:[~2013-05-22 23:42 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-19 15:53 [PATCH v6] Add new git-related helper to contrib Felipe Contreras
2013-05-20  1:47 ` Eric Sunshine
2013-05-22 19:23 ` Junio C Hamano
2013-05-22 19:54   ` Junio C Hamano
2013-05-22 22:23   ` Felipe Contreras
2013-05-22 22:38     ` Junio C Hamano
2013-05-22 22:43       ` Felipe Contreras
2013-05-22 22:53         ` Junio C Hamano
2013-05-22 22:58           ` Junio C Hamano
2013-05-22 23:42             ` Junio C Hamano [this message]
2013-05-22 23:57               ` Felipe Contreras
2013-05-23  0:08                 ` Junio C Hamano
2013-05-23  4:07                   ` Felipe Contreras
2013-05-23  5:22                     ` Felipe Contreras
2013-05-23 16:54                       ` Junio C Hamano
2013-05-23 18:34                         ` Junio C Hamano
2013-05-23 21:33                         ` Felipe Contreras
2013-05-23 21:52                           ` Junio C Hamano
2013-05-23 21:58                             ` Felipe Contreras
2013-05-23 22:44                               ` Junio C Hamano
2013-05-23 22:59                                 ` Felipe Contreras
2013-05-23 23:47                                   ` Junio C Hamano
2013-05-24  0:22                                     ` Felipe Contreras
2013-05-23  3:23               ` Felipe Contreras
2013-05-23  3:50                 ` Felipe Contreras
2013-05-23 17:05                   ` Junio C Hamano
2013-05-22 23:19           ` Felipe Contreras

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=7vzjvmh98r.fsf@alter.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=artagnon@gmail.com \
    --cc=felipe.contreras@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=pclouds@gmail.com \
    /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