git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: diff-index --cc no longer permitted, gitk is now broken (slightly)

From
Sergey Organov <sorganov@gmail.com>
Date
Sep 8, 2021, 13:43 UTC
Message-ID
<87pmtjkwsj.fsf@osv.gnss.ru>
In-Reply-To
<xmqqy288b64q.fsf@gitster.g>
Junio C Hamano <gitster@pobox.com> writes:
Show 9 quoted lines
> Sergey Organov <sorganov@gmail.com> writes:
>
>> Here is a patch that fixes diff-index to accept --cc again:
>
> Sorry for the delay; I did not notice there was a patch buried in a
> discussion thread.
>
> We might later need to do this suppression in more codepaths if we
> find more regressions, but let's have one fix at a time.

I'm pretty positive there should be nothing left. This commit was diff-index specific, and doesn't affect anything else. Nowhere in entire series the semantics of --cc itself has been changed, it has been only disabled as particular option in diff-index command-line parsing. Overall, this is pretty local change.

Show 10 quoted lines
>
> Will queue.
>
>>  builtin/diff-index.c |  6 +++---
>>  diff-merges.c        | 14 ++++----------
>>  diff-merges.h        |  2 +-
>
> This would deserve new tests that cover the existing use cases,
> given that both of us (and other reviewers in the original thread)
> did not notice how big a regression we are causing.

I don't see it as a "big regression", but no wonder the breakage was entirely unexpected, see below.

>
> We care about --cc naturally falling back to -p when there is only
> one other thing to compare with, and also we care about --cc that
> allows us to compare during conflict resolution, at least, I think.

The problem here is not with -c/--cc itself, it is rather with diff-index. It's neither documented nor tested nor obvious what -c/--cc should mean in diff-index, given -c/--cc description (e.g., in "git help log"):

       -c
           With this option, diff output for a merge commit shows the
           differences [...]

How an option to deal with merge commits is applicable to diff-index, that:

    git-diff-index - Compare a tree to the working tree or index
???

Besides, nobody yet told us why gitk uses --cc option in invocation of 'diff-index' in the first place. Does it actually *rely* on particular undocumented behavior of "diff-index --cc", or is it just a copy-paste *leftover*?

Overall, the original commit had a mistake, as the commit that was meant to be pure refactoring had changed observable behavior, even if undocumented. However, the essence of the commit, disabling of "diff for merge /commits/" options in diff-index that does not deal with /commits/, could still be the right thing to do long term.

Thanks, -- Sergey Organov

Previous: Sergey OrganovNext: Johannes Sixt
Message 14 of 29 in “diff-index --cc no longer permitted, gitk is now broken (slightly)”
  1. Johannes SixtAug 30, 2021
  2. Sergey OrganovAug 30, 2021
  3. Jeff KingAug 30, 2021
  4. Sergey OrganovAug 30, 2021
  5. Johannes SixtAug 30, 2021
  6. Sergey OrganovAug 30, 2021
  7. Junio C HamanoAug 30, 2021
  8. Sergey OrganovAug 30, 2021
  9. Junio C HamanoAug 30, 2021
  10. Sergey OrganovAug 30, 2021
  11. Sergey OrganovSep 1, 2021
  12. Junio C HamanoSep 7, 2021
  13. Sergey OrganovSep 7, 2021
  14. Sergey OrganovSep 8, 2021
  15. Johannes SixtSep 8, 2021
  16. Sergey OrganovSep 8, 2021
  17. Junio C HamanoSep 9, 2021
  18. Sergey OrganovSep 9, 2021
  19. Sergey OrganovSep 16, 2021
  20. Junio C HamanoSep 16, 2021
  21. Sergey OrganovSep 16, 2021
  22. Junio C HamanoSep 16, 2021
  23. Sergey OrganovSep 17, 2021
  24. Junio C HamanoSep 17, 2021
  25. Sergey OrganovSep 17, 2021
  26. Philip OakleySep 17, 2021
  27. Sergey OrganovSep 17, 2021
  28. Sergey OrganovSep 18, 2021
  29. Johannes SixtSep 7, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.