From: Max Pollard <hidden> Date: 2016-06-15 22:44:08
Hi all,
If I do the following:
$ git init
$ echo "The brown fox is getting old" > a.txt
$ git add a.txt
$ git commit -m "Commit a.txt"
$ cp a.txt b.txt
$ git add b.txt
$ git commit -m "Copy a.txt to b.txt"
$ git log b.txt
I only see the log corresponding to the 2nd commit (v1.5.3.5). Is it possible
to have the above command keep going and show the history of a.txt? Or at
least somehow indicate that b.txt originated from a.txt?
Thanks,
MP
____________________________________________________________________________________
Never miss a thing. Make Yahoo your home page.
http://www.yahoo.com/r/hs
On Tue, 29 Jan 2008 09:48:05 -0800 (PST)
Max Pollard [off-list ref] wrote:
If I do the following:
$ git init
$ echo "The brown fox is getting old" > a.txt
$ git add a.txt
$ git commit -m "Commit a.txt"
$ cp a.txt b.txt
$ git add b.txt
$ git commit -m "Copy a.txt to b.txt"
$ git log b.txt
I only see the log corresponding to the 2nd commit (v1.5.3.5). Is it possible
to have the above command keep going and show the history of a.txt? Or at
least somehow indicate that b.txt originated from a.txt?
Hi Max,
Not sure it will leave you feeling totally satisfied but the
following command will at least show you the copy which
occurred in that commit:
$ git log --full-diff -C --find-copies-harder --stat -- b.txt
commit 578ecbc516e70ce7178545233192a08369a07101
Author: xyz <x@y.z>
Date: Tue Jan 29 13:11:16 2008 -0500
Copy a.txt to b.txt
a.txt => b.txt | 0
1 files changed, 0 insertions(+), 0 deletions(-)
If you had done a rename instead of a copy, then "git log --follow b.txt" would
have done what you're looking for, but there is no corresponding option to
follow copies.
HTH,
Sean
From: Max Pollard <hidden> Date: 2016-06-15 22:44:08
--- Sean wrote:
On Tue, 29 Jan 2008 09:48:05 -0800 (PST)
Max Pollard wrote:
quoted
I only see the log corresponding to the 2nd commit (v1.5.3.5). Is it
possible to have the above command keep going and show the history of
a.txt? Or at least somehow indicate that b.txt originated from a.txt?
Hi Max,
Not sure it will leave you feeling totally satisfied but the
following command will at least show you the copy which
occurred in that commit:
$ git log --full-diff -C --find-copies-harder --stat -- b.txt
commit 578ecbc516e70ce7178545233192a08369a07101
Author: xyz <x@y.z>
Date: Tue Jan 29 13:11:16 2008 -0500
Copy a.txt to b.txt
a.txt => b.txt | 0
1 files changed, 0 insertions(+), 0 deletions(-)
If you had done a rename instead of a copy, then "git log --follow b.txt"
would have done what you're looking for, but there is no corresponding option
to follow copies.
Many thanks for that Sean. I saw all the options in the manual, but couldn't
figure out how to put them together.
This is exactly the information I wanted. It appears to identify copies in
both text & binary files even if contents of b.txt are modified before commit
(or at least modified in ways the copy-detection logic can identify copies).
MP
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
From: Junio C Hamano <hidden> Date: 2016-06-15 22:44:08
Max Pollard [off-list ref] writes:
If I do the following:
$ git init
$ echo "The brown fox is getting old" > a.txt
$ git add a.txt
$ git commit -m "Commit a.txt"
$ cp a.txt b.txt
$ git add b.txt
$ git commit -m "Copy a.txt to b.txt"
$ git log b.txt
I only see the log corresponding to the 2nd commit (v1.5.3.5).
That is what you are asking "git log" to show. "git log b.txt"
means "please simplify the history by throwing away commits that
do not have changes to paths that match b.txt, and then show the
resulting log with the change pertaining to that path". The
first commit does not change a path called b.txt (in other
words, "git show --stat HEAD^" will not give diffstat for "b.txt"),
so that commit is not shown.
$ git log --pretty=oneline --name-status -C -C
From: Max Pollard <hidden> Date: 2016-06-15 22:44:08
--- Junio C Hamano wrote:
Max Pollard writes:
quoted
I only see the log corresponding to the 2nd commit (v1.5.3.5).
That is what you are asking "git log" to show. "git log b.txt"
means "please simplify the history by throwing away commits that
do not have changes to paths that match b.txt, and then show the
resulting log with the change pertaining to that path". The
first commit does not change a path called b.txt (in other
words, "git show --stat HEAD^" will not give diffstat for "b.txt"),
so that commit is not shown.
$ git log --pretty=oneline --name-status -C -C
Got it - many thanks. So -C -C is the answer, with --name-status or --stat to
actually show the result. From the code, a status like Cxxx appears to contain
the "similarity percentage" in xxx; so that C100 would mean an exact copy...
MP
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ