Re: diff-filter can't identify renaming if not done directly
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Dec 4, 2020, 20:07 UTC
- Message-ID
- <xmqqh7p1e3mr.fsf@gitster.c.googlers.com>
- In-Reply-To
- <X8pmURHeWcNLwmvs@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 34 quoted lines
> On Fri, Dec 04, 2020 at 03:59:03PM +0100, Sofia Syria wrote: > >> quick question about using diff-filter in linux. In the scenario >> that in my repository, I first copy file1 to file2, then move file2 to >> file3 and delete file1, "git diff" returns: >> >> diff --git a/file1 b/file3 >> similarity index 100% >> rename from file1 >> rename to file3 >> >> but running "git diff --diff-filter=r" doesn't return anything. Only >> flag "t" will return the change. Can this be considered as a bug? > > Lowercase filters exclude particular types. From "git help diff": > > --diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]] > Select only files that are Added (A), Copied (C), Deleted > (D), Modified (M), Renamed (R), have their type (i.e. regular > file, symlink, submodule, ...) changed (T), are Unmerged (U), > are Unknown (X), or have had their pairing Broken (B). Any > combination of the filter characters (including none) can be > used. When * (All-or-none) is added to the combination, all > paths are selected if there is any file that matches other > criteria in the comparison; if there is no file that matches > other criteria, nothing is selected. > > Also, these upper-case letters can be downcased to exclude. > E.g. --diff-filter=ad excludes added and deleted paths. > > So "--diff-filter=R" asks to see only renames. But "--diff-filter=r" > asks to exclude them. And "--diff-filter=t" excludes typechanges, which > means that renames are still OK. Doing "--diff-filter=a", etc, would > still show it as well.
Correct. I should have scanned my inbox to find that the same question was asked twice and one of the copies already got a good answer.