threads / discuss / 43869

diff --diff-filter on modified but locally deleted files

Subject: diff --diff-filter on modified but locally deleted files

## tl;dr

3 messages between Aug 17, 2016 and Aug 17, 2016.

replies: 2people: 2as markdown or json

Robert Dailey· Aug 17, 2016, 18:04 UTC · lore

My use case is that I do a merge from branch A to branch B. Branch A modified a file which is already deleted on B some time before the merge.

When I do a `git status -sb`, these locally deleted but remotely modified files show up as "DU".

I want to invoke git status or diff (or something else) to get a list of these specific conflicts (locally deleted, remotely modified). I tried this:

$ git diff --diff-filter=D --name-status

This gave me no results. I also tried adding --cached, didn't make a difference. If I just do this:

$ git diff --name-status

This lists those files as just U instead of DU. So I'm not sure where the "D" is coming from in this case.

Is there a way I can get a list of these specific conflicts? I'd like to rely on working/index status for this if possible, since as I resolve these conflicts I want the list to shorten and only show unresolved conflicts of this type. Which rules out a diff range between B...A that I could do.

Junio C Hamano· Aug 17, 2016, 18:34 UTC · re: Robert Dailey · lore

Re: diff --diff-filter on modified but locally deleted files

Robert Dailey <rcdailey.lists@gmail.com> writes:
Show 9 quoted lines
> My use case is that I do a merge from branch A to branch B. Branch A
> modified a file which is already deleted on B some time before the
> merge.
>
> When I do a `git status -sb`, these locally deleted but remotely
> modified files show up as "DU".
>
> I want to invoke git status or diff (or something else) to get a list
> of these specific conflicts (locally deleted, remotely modified).

As far as "git diff [--cached]" (which is "compare HEAD with the working tree through index") is concerned, these paths are in the "U"nmerged category, so you'd give "U" to diff-filter to view them. Of course, that would give you other kinds of unmerged entries.

If you know they show up as DU, why not "grep DU" in that output?
Robert Dailey· Aug 17, 2016, 18:47 UTC · re: Junio C Hamano · lore

Re: diff --diff-filter on modified but locally deleted files

On Wed, Aug 17, 2016 at 1:34 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 18 quoted lines
> Robert Dailey <rcdailey.lists@gmail.com> writes:
>
>> My use case is that I do a merge from branch A to branch B. Branch A
>> modified a file which is already deleted on B some time before the
>> merge.
>>
>> When I do a `git status -sb`, these locally deleted but remotely
>> modified files show up as "DU".
>>
>> I want to invoke git status or diff (or something else) to get a list
>> of these specific conflicts (locally deleted, remotely modified).
>
> As far as "git diff [--cached]" (which is "compare HEAD with the
> working tree through index") is concerned, these paths are in the
> "U"nmerged category, so you'd give "U" to diff-filter to view them.
> Of course, that would give you other kinds of unmerged entries.
>
> If you know they show up as DU, why not "grep DU" in that output?

I'm happy to do that and in fact considered it, but since --diff-filter exists, I figured it might solve the problem. I also need a better understanding of how diff-filter works since it technically has 2 sides during a merge conflict. I guess it functions only on the right (local) side.

Thanks Junio.

← back to recent threads