git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v6] Add new git-related helper to contrib

From
Junio C Hamano <gitster@pobox.com>
Date
May 22, 2013, 23:42 UTC
Message-ID
<7vzjvmh98r.fsf@alter.siamese.dyndns.org>
In-Reply-To
<7v4nduipvb.fsf@alter.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> writes:
Show 11 quoted lines
>>> 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.
Previous: Junio C HamanoNext: Felipe Contreras
Message 10 of 27 in “Add new git-related helper to contrib”
  1. Add new git-related helper to contribFelipe Contreras, May 19, 2013
  2. Eric SunshineMay 20, 2013
  3. Junio C HamanoMay 22, 2013
  4. Junio C HamanoMay 22, 2013
  5. Felipe ContrerasMay 22, 2013
  6. Junio C HamanoMay 22, 2013
  7. Felipe ContrerasMay 22, 2013
  8. Junio C HamanoMay 22, 2013
  9. Junio C HamanoMay 22, 2013
  10. Junio C HamanoMay 22, 2013
  11. Felipe ContrerasMay 22, 2013
  12. Junio C HamanoMay 23, 2013
  13. Felipe ContrerasMay 23, 2013
  14. Felipe ContrerasMay 23, 2013
  15. Junio C HamanoMay 23, 2013
  16. Junio C HamanoMay 23, 2013
  17. Felipe ContrerasMay 23, 2013
  18. Junio C HamanoMay 23, 2013
  19. Felipe ContrerasMay 23, 2013
  20. Junio C HamanoMay 23, 2013
  21. Felipe ContrerasMay 23, 2013
  22. Junio C HamanoMay 23, 2013
  23. Felipe ContrerasMay 24, 2013
  24. Felipe ContrerasMay 23, 2013
  25. Felipe ContrerasMay 23, 2013
  26. Junio C HamanoMay 23, 2013
  27. Felipe ContrerasMay 22, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.