From: Dmitry Gutov <dmitry@gutov.dev>
To: David Koppelman <koppel@ece.lsu.edu>, 39044@debbugs.gnu.org
Subject: bug#39044: 27.0.50; On git log-view-diff does not work for moved files.
Date: Thu, 14 Dec 2023 03:23:35 +0200 [thread overview]
Message-ID: <82fa7939-8914-0dd4-ef6c-e3d100aa1dc6@gutov.dev> (raw)
In-Reply-To: <9961b9c6-e39b-d6f9-5d5b-a0e3de5b12c7@yandex.ru>
On 13/05/2020 04:36, Dmitry Gutov wrote:
> On 08.01.2020 22:48, David Koppelman wrote:
>>
>> With (setq vc-git-print-log-follow t) visit a file in a git repo that
>> was moved from some other directory and which had changes when in that
>> other directory. Start log view, C-x v =, move the cursor to a commit
>> made in the file's former location, and press d (log-view-diff). Rather
>> than showing a diff, a message reporting no changes is shown.
>
> I usually give up and press 'D' in those cases (diff for the whole tree).
>
>> This flaw was noted in bug 8756, covering vc-diff/log-view, but was
>> left to a follow on bug.
>> (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=8756).
>>
>> Interestingly, vc-annotate has no trouble with renames. See
>> commit d1e4c4037e88f3256db19813805d03f8ad0291fa.
>
> vc-annotate is fine because 'git blame' includes the previous file name
> in the output. Not so for 'git log' by default.
>
> Looking at this issue for some time, I haven't found an easier way to do
> this rather than:
>
> 1. When vc-git-print-log-follow=t, also add the --name-status argument
> to the command invocation.
>
> 2. Hide this new text from the user using font lock by adding some rules
> to vc-git-log-view-mode.
>
> 3. _Probably_ teach log-view-current-file how to determine the current
> file name. _Maybe_ via log-view-file-re. Some come would also need to
> set log-view-per-file-logs to t for per-file Git logs. It could also be
> made into a backend method instead.
>
> See also bug#13004 for the same problem when using Hg. It could use the
> same approach, but the solution is more questionable since '--stat'
> seems to noticeably slow it down.
I have now posted a somewhat related solution to
https://debbugs.gnu.org/55871#41.
Except it requires vc-git-print-log-follow to be disabled, and has
virtually no runtime overhead. And it works when a fileset contains
several files, not just for singles (a rare case, though).
Feedback welcome.
And maybe these bug reports should be merged, actually, since the
complaint is more or less the same.
next prev parent reply other threads:[~2023-12-14 1:23 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-08 20:48 bug#39044: 27.0.50; On git log-view-diff does not work for moved files David Koppelman
2020-05-13 1:36 ` Dmitry Gutov
2023-12-14 1:23 ` Dmitry Gutov [this message]
2023-12-15 20:48 ` Dmitry Gutov
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=82fa7939-8914-0dd4-ef6c-e3d100aa1dc6@gutov.dev \
--to=dmitry@gutov.dev \
--cc=39044@debbugs.gnu.org \
--cc=koppel@ece.lsu.edu \
/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.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).