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

Re: [PATCH 1/4] Add test for showing discarded changes with diff --cc

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 2, 2015, 20:55 UTC
Message-ID
<xmqqy4mai71d.fsf@gitster.dls.corp.google.com>
In-Reply-To
<1428006853-21212-2-git-send-email-max@max630.net>
Max Kirillov <max@max630.net> writes:
Show 16 quoted lines
> If a hunk has been changed in both branches and conflict resolution
> fully takes one of branches, discarding all changes that are in the
> other, then the merge is not shown in 3-way diff which git uses by
> default.
>
> The advice is to use flag --cc and and explicitly add the mergebase was
> given in $gmane/191557. It was discovered though that it does not always
> work. If the whole file has not changed at all compared to one of
> branches then no difference is shown for this file.
>
> This looks inconsistent and for particular scenario of viewing discarded
> changes is undesirable.
>
> Add the test which demonstrates the issue.
>
> Signed-off-by: Max Kirillov <max@max630.net>

Thanks. I will not have time to review this properly at the moment while preparing 2.4-rc1, and I do not want to spend time figuring out if the parent culling you are chaning was done deliberately (in which case this patch may be breaking things) or not.

So I'll give a preliminary nitpicks first ;-)
>> Subject: Re: [PATCH 1/4] Add test for showing discarded changes with diff --cc
Subject: t4059: test 'diff --cc' with a change from only few parents

or something? "<area>: <what you did>" without capitalization of the beginning of what you did and the full-stop at the end.

Show 26 quoted lines
> ---
>  t/t4059-diff-merge-with-base.sh | 100 ++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 100 insertions(+)
>  create mode 100755 t/t4059-diff-merge-with-base.sh
>
> diff --git a/t/t4059-diff-merge-with-base.sh b/t/t4059-diff-merge-with-base.sh
> new file mode 100755
> index 0000000..e650a33
> --- /dev/null
> +++ b/t/t4059-diff-merge-with-base.sh
> @@ -0,0 +1,100 @@
> +#!/bin/sh
> +
> +test_description='Diff aware of merge base'
> +
> +. ./test-lib.sh
> +
> +test_expect_success setup '
> +	mkdir short &&
> +	mkdir long &&
> +	for fn in win1 win2 merge delete base only1 only2; do
> +		test_seq 3 >short/$fn
> +		git add short/$fn &&
> +		test_seq 11 >long/$fn &&
> +		git add long/$fn
> +	done &&
Two nits:
 - Style: have "do" on its own line.  A good rule of thumb is that
   you shouldn't have to type ';' when you are writing a shell
   script, unless you are terminating a case arm with ';;'.
	for fn in ...
        do
        	...
	done
 - Correctness: aside from missing && after "test_seq 3", if the
   last step "git add long/$fn" failed in an earlier iteration, you
   would not notice any breakage.  Either
	(
                for fn in ...
                do
                        ... &&
                        ... &&
                        ... || exit $?
                done
	)
    or
	for fn in ...
        do
        	... &&
                ... &&
                ... || return $?
	done
    The latter is only valid in our test scripts, where the test
    framework gives you an artificial "caller" of the "subroutine"
    you are writing as the test body.
Show 20 quoted lines
> +	test_seq 11 | sed -e "s/^7/7change1/" -e "s/^11/11change2/" >long/base &&
> +	git add long/base &&
> + test_seq 11 | sed -e "s/^7/7change1/" -e "s/^11/11change2/" -e
> "s/^2/2change1/" >long/win1 &&
> +	git add long/win1 &&
> + test_seq 11 | sed -e "s/^7/7change1/" -e "s/^11/11change2/" -e
> "s/^2/2change2/" >long/win2 &&
> +	git add long/win2 &&
> + test_seq 11 | sed -e "s/^7/7change1/" -e "s/^11/11change2/" -e
> "s/^2/2merged/" >long/merge &&
> +	git add long/merge &&
> + test_seq 11 | sed -e "s/^7/7change1/" -e "s/^11/11change2/" -e
> "/^2/d" >long/delete &&
> +	git add long/delete &&
> + test_seq 11 | sed -e "s/^7/7change1/" -e "s/^11/11change2/" -e
> "s/^2/2change1/" >long/only1 &&
> +	git add long/only1 &&
> + test_seq 11 | sed -e "s/^7/7change1/" -e "s/^11/11change2/" -e
> "s/^2/2change2/" >long/only2 &&
> +	git add long/only2 &&
Patch is line-wrapped around here?
Previous: Max KirillovNext: Max Kirillov
Message 3 of 25 in “diff --cc: relax path filtering”
  1. 0/4 diff --cc: relax path filteringMax Kirillov, Apr 2, 2015
  2. 1/4 Add test for showing discarded changes with diff --ccMax Kirillov, Apr 2, 2015
  3. Junio C HamanoApr 2, 2015
  4. Max KirillovApr 3, 2015
  5. 2/4 combine-diff.c: refactor: extract insert_path()Max Kirillov, Apr 2, 2015
  6. 3/4 diff --cc: relax too strict paths pickingMax Kirillov, Apr 2, 2015
  7. Junio C HamanoApr 2, 2015
  8. 4/4 t4059: rewrite to be adaptive to hunk filteringMax Kirillov, Apr 2, 2015
  9. Jeff KingApr 2, 2015
  10. Max KirillovApr 3, 2015
  11. 0/4 diff --cc: relax path filteringMax Kirillov, Apr 3, 2015
  12. 1/4 t4059: test 'diff --cc' with a change from only few parentsMax Kirillov, Apr 3, 2015
  13. Junio C HamanoApr 11, 2015
  14. Junio C HamanoApr 11, 2015
  15. Junio C HamanoApr 11, 2015
  16. Max KirillovApr 12, 2015
  17. Junio C HamanoApr 12, 2015
  18. Max KirillovApr 14, 2015
  19. combine-diff.c: make intersect_paths() behave like hunk filteringMax Kirillov, Apr 14, 2015
  20. 2/4 combine-diff.c: refactor: extract insert_path()Max Kirillov, Apr 3, 2015
  21. Junio C HamanoApr 11, 2015
  22. 3/4 diff --cc: relax too strict paths pickingMax Kirillov, Apr 3, 2015
  23. 4/4 t4059: rewrite to be adaptive to hunk filteringMax Kirillov, Apr 3, 2015
  24. Junio C HamanoApr 12, 2015
  25. Max KirillovApr 14, 2015

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.