# Meaning of double + and - in Gitk's diff pane

6 messages from 2011-03-21 to 2011-03-21. Participants: Dirk Süsserott, Junio C Hamano.
Thread: https://gitlist.dev/t/26819

## Dirk Süsserott, 2011-03-21 18:38

Subject: Meaning of double + and - in Gitk's diff pane
Message-ID: <4D879B25.9090300@dirk.my1.cc>
URL: https://gitlist.dev/e/4D879B25.9090300%40dirk.my1.cc

```
Hello,

I regularly use gitk to get an overview. Great tool.
But sometimes it shows me in the diff pane lines preceeded
with two + or - signs or they are colored in blue or black
or printed in bold. I think this is true for merge commits
with conflicts.

The simple red - and green + lines are obvious, but is
anywhere documented what exactly the other fonts and colors
mean? I tried to "Ask The Audience" (which is Google), but
try searching for plus and minus! It's pointless.

Dirk

```

## Junio C Hamano, 2011-03-21 19:37

Subject: Re: Meaning of double + and - in Gitk's diff pane
Message-ID: <7vr5a0p8n1.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vr5a0p8n1.fsf%40alter.siamese.dyndns.org
In-Reply-To: <4D879B25.9090300@dirk.my1.cc>

```
Dirk Süsserott <newsletter@dirk.my1.cc> writes:

> I regularly use gitk to get an overview. Great tool.
> But sometimes it shows me in the diff pane lines preceeded
> with two + or - signs or they are colored in blue or black
> or printed in bold. I think this is true for merge commits
> with conflicts.

Look at the bottom summary of this message for a brief summary:

  http://thread.gmane.org/gmane.comp.version-control.git/15486/focus=15527

If you want to know more about how the multi-way diff is condensed, you
would find this message from Linus in the same thread illuminating:

  http://thread.gmane.org/gmane.comp.version-control.git/15486/focus=15600

(Ignore the bottom part where Linus complains about gitk output---the old
implementation in gitk has gone long time ago).

And also this one, again from Linus:

  http://thread.gmane.org/gmane.comp.version-control.git/15486/focus=15491

```

## Dirk Süsserott, 2011-03-21 19:45

Subject: Re: Meaning of double + and - in Gitk's diff pane
Message-ID: <4D87AAD6.6000704@dirk.my1.cc>
URL: https://gitlist.dev/e/4D87AAD6.6000704%40dirk.my1.cc
In-Reply-To: <7vr5a0p8n1.fsf@alter.siamese.dyndns.org>

```
Am 21.03.2011 20:37 schrieb Junio C Hamano:
> Dirk Süsserott<newsletter@dirk.my1.cc>  writes:
>
>> I regularly use gitk to get an overview. Great tool.
>> But sometimes it shows me in the diff pane lines preceeded
>> with two + or - signs or they are colored in blue or black
>> or printed in bold. I think this is true for merge commits
>> with conflicts.
>
> Look at the bottom summary of this message for a brief summary:
>
>    http://thread.gmane.org/gmane.comp.version-control.git/15486/focus=15527
>
> If you want to know more about how the multi-way diff is condensed, you
> would find this message from Linus in the same thread illuminating:
>
>    http://thread.gmane.org/gmane.comp.version-control.git/15486/focus=15600
>
> (Ignore the bottom part where Linus complains about gitk output---the old
> implementation in gitk has gone long time ago).
>
> And also this one, again from Linus:
>
>    http://thread.gmane.org/gmane.comp.version-control.git/15486/focus=15491
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

Junio, thanks. When I've found the time, I'll probably condense Linus'
explanations and submit a documentation patch. It's not explained
in the actual git docs, right?

```

## Junio C Hamano, 2011-03-21 19:49

Subject: Re: Meaning of double + and - in Gitk's diff pane
Message-ID: <7vaagop83d.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vaagop83d.fsf%40alter.siamese.dyndns.org
In-Reply-To: <4D87AAD6.6000704@dirk.my1.cc>

```
Dirk Süsserott <newsletter@dirk.my1.cc> writes:

> Am 21.03.2011 20:37 schrieb Junio C Hamano:
>> Dirk Süsserott<newsletter@dirk.my1.cc>  writes:
>>
>>> I regularly use gitk to get an overview. Great tool.
>>> But sometimes it shows me in the diff pane lines preceeded
>>> with two + or - signs or they are colored in blue or black
>>> or printed in bold. I think this is true for merge commits
>>> with conflicts.
>>
>> Look at the bottom summary of this message for a brief summary:
>>
>>    http://thread.gmane.org/gmane.comp.version-control.git/15486/focus=15527
>>
>> If you want to know more about how the multi-way diff is condensed, you
>> would find this message from Linus in the same thread illuminating:
>>
>>    http://thread.gmane.org/gmane.comp.version-control.git/15486/focus=15600
>>
>> (Ignore the bottom part where Linus complains about gitk output---the old
>> implementation in gitk has gone long time ago).
>>
>> And also this one, again from Linus:
>>
>>    http://thread.gmane.org/gmane.comp.version-control.git/15486/focus=15491
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe git" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>
> Junio, thanks. When I've found the time, I'll probably condense Linus'
> explanations and submit a documentation patch. It's not explained
> in the actual git docs, right?

How about checking "git diff"?  The same conclusion should be in there, as
I wrote the implementation, docs and the messages there.

```

## Dirk Süsserott, 2011-03-21 19:57

Subject: Re: Meaning of double + and - in Gitk's diff pane
Message-ID: <4D87AD9D.7080501@dirk.my1.cc>
URL: https://gitlist.dev/e/4D87AD9D.7080501%40dirk.my1.cc
In-Reply-To: <7vaagop83d.fsf@alter.siamese.dyndns.org>

```
Am 21.03.2011 20:49 schrieb Junio C Hamano:
>>
>> Junio, thanks. When I've found the time, I'll probably condense Linus'
>> explanations and submit a documentation patch. It's not explained
>> in the actual git docs, right?
>
> How about checking "git diff"?  The same conclusion should be in there, as
> I wrote the implementation, docs and the messages there.
>

Uhh, sorry, I missed that. That was actually what I was searching for.
Thanks.

```

## Junio C Hamano, 2011-03-21 20:40

Subject: Re: Meaning of double + and - in Gitk's diff pane
Message-ID: <7vwrjsnr5z.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vwrjsnr5z.fsf%40alter.siamese.dyndns.org
In-Reply-To: <4D87AD9D.7080501@dirk.my1.cc>

```
Dirk Süsserott <newsletter@dirk.my1.cc> writes:

> Am 21.03.2011 20:49 schrieb Junio C Hamano:
>>>
>>> Junio, thanks. When I've found the time, I'll probably condense Linus'
>>> explanations and submit a documentation patch. It's not explained
>>> in the actual git docs, right?
>>
>> How about checking "git diff"?  The same conclusion should be in there, as
>> I wrote the implementation, docs and the messages there.
>>
> Uhh, sorry, I missed that. That was actually what I was searching for.

Hmm... re-reading "git diff --help" and looking at the section on combined
diff, I notice that we talk about how to understand its output, but we
don't say under what rule the --cc option condenses what would be produced
with the -c option.  Perhaps we would need a patch after all at the end of
Documentation/diff-generate-patch.txt file.

Here is a quick attempt.

 Documentation/diff-generate-patch.txt |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/Documentation/diff-generate-patch.txt b/Documentation/diff-generate-patch.txt
index c57460c..20a603d 100644
--- a/Documentation/diff-generate-patch.txt
+++ b/Documentation/diff-generate-patch.txt
@@ -183,3 +183,21 @@ parents).  When shown by `git diff-files -c`, it compares the
 two unresolved merge parents with the working tree file
 (i.e. file1 is stage 2 aka "our version", file2 is stage 3 aka
 "their version").
+
+The "combined" format (`-c` option) shows the diff to the result (i.e. the
+result of the merge, or the file in the working tree during a conflict
+resolution) from two or more originals (i.e. parents of the merge or
+branches being merged) combined, but it often shows many trivial changes
+that the result takes the change from a single original verbatim.  The
+"dense combined" format (`--cc` option) removes such hunks with only
+"trivial" changes. A hunk that has only two versions (or less) in the
+original (in a usual two-parent merge, this always is the case, simply
+because there are only two originals) and whose result matches exactly one
+of the originals, is considered "trivial" and is omitted from the output
+in the "dense combined" format.  In the previous illustration of a
+combined diff on `describe.c` file, there are two originals, one that had
+the describe function with a single `char *arg` parameter, and the other
+with two parameters, but the result matches neither of them, hence it is
+not "trivial" and the hunk appears in the output.
+
+

```
