All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Elijah Newren via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, Jonathan Nieder <jrnieder@gmail.com>,
	Derrick Stolee <dstolee@microsoft.com>,
	Junio C Hamano <gitster@pobox.com>,
	Elijah Newren <newren@gmail.com>
Subject: Re: [PATCH 07/11] t6428: new test for SKIP_WORKTREE handling and conflicts
Date: Mon, 08 Mar 2021 14:03:31 +0100	[thread overview]
Message-ID: <874khlkdb0.fsf@evledraar.gmail.com> (raw)
In-Reply-To: <6ccb24b557fc9c9d8e3d307d3e142d8393920414.1614905738.git.gitgitgadget@gmail.com>


On Fri, Mar 05 2021, Elijah Newren via GitGitGadget wrote:

> From: Elijah Newren <newren@gmail.com>
>
> If there is a conflict during a merge for a SKIP_WORKTREE entry, we
> expect that file to be written to the working copy and have the
> SKIP_WORKTREE bit cleared in the index.  If the user had manually
> created a file in the working tree despite SKIP_WORKTREE being set, we
> do not want to clobber their changes to that file, but want to move it
> out of the way.  Add tests that check for these behaviors.
>
> Signed-off-by: Elijah Newren <newren@gmail.com>
> ---
>  t/t6428-merge-conflicts-sparse.sh | 158 ++++++++++++++++++++++++++++++
>  1 file changed, 158 insertions(+)
>  create mode 100755 t/t6428-merge-conflicts-sparse.sh
>
> diff --git a/t/t6428-merge-conflicts-sparse.sh b/t/t6428-merge-conflicts-sparse.sh
> new file mode 100755
> index 000000000000..1bb52ff6f38c
> --- /dev/null
> +++ b/t/t6428-merge-conflicts-sparse.sh
> @@ -0,0 +1,158 @@
> +#!/bin/sh
> +
> +test_description="merge cases"
> +
> +# The setup for all of them, pictorially, is:
> +#
> +#      A
> +#      o
> +#     / \
> +#  O o   ?
> +#     \ /
> +#      o
> +#      B
> +#
> +# To help make it easier to follow the flow of tests, they have been
> +# divided into sections and each test will start with a quick explanation
> +# of what commits O, A, and B contain.
> +#
> +# Notation:
> +#    z/{b,c}   means  files z/b and z/c both exist
> +#    x/d_1     means  file x/d exists with content d1.  (Purpose of the
> +#                     underscore notation is to differentiate different
> +#                     files that might be renamed into each other's paths.)
> +
> +. ./test-lib.sh
> +. "$TEST_DIRECTORY"/lib-merge.sh
> +
> +
> +# Testcase basic, conflicting changes in 'numerals'
> +
> +test_setup_numerals () {
> +	test_create_repo numerals_$1 &&
> +	(
> +		cd numerals_$1 &&
> +
> +		>README &&
> +		test_write_lines I II III >numerals &&
> +		git add README numerals &&
> +		test_tick &&
> +		git commit -m "O" &&

As an aside this could use the --printf option to test_commit I've got
in next, but that's also a bit painful to use since you can't use
test_write_lines.

I've wanted to just support something like this for this use-case of
using an existing file:

    test_write_lines A B C D >lines &&
    test_commit --add O lines &&


> +
> +		git branch O &&
> +		git branch A &&
> +		git branch B &&
> +
> +		git checkout A &&
> +		test_write_lines I II III IIII >numerals &&
> +		git add numerals &&
> +		test_tick &&
> +		git commit -m "A" &&
> +
> +		git checkout B &&
> +		test_write_lines I II III IV >numerals &&
> +		git add numerals &&
> +		test_tick &&
> +		git commit -m "B" &&
> +
> +		cat <<-EOF >expected-index &&
> +		H README
> +		M numerals
> +		M numerals
> +		M numerals
> +		EOF
> +
> +		cat <<-EOF >expected-merge
> +		I
> +		II
> +		III
> +		<<<<<<< HEAD
> +		IIII
> +		=======
> +		IV
> +		>>>>>>> B^0
> +		EOF
> +
> +	)
> +}
> +
> +test_expect_merge_algorithm success failure 'conflicting entries written to worktree even if sparse' '
> +	test_setup_numerals plain &&

A small nit, but makes it easier to debug things: I think having what
you have in "test_setup_numerals" above in a test_expect_success is a
better pattern, then if it fails we can see where exactly.

Then instead of calling "test_setup_numerals" here you'd do:

    cp -R template plain &&

To just copy over that existing setup template, or re-use it and have
have the tests call a small helper to "test_when_finish" reset --hard
back as appropriate.

  reply	other threads:[~2021-03-08 13:04 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-05  0:55 [PATCH 00/11] Complete merge-ort implementation...almost Elijah Newren via GitGitGadget
2021-03-05  0:55 ` [PATCH 01/11] merge-ort: use STABLE_QSORT instead of QSORT where required Elijah Newren via GitGitGadget
2021-03-05  0:55 ` [PATCH 02/11] merge-ort: add a special minimal index just for renormalization Elijah Newren via GitGitGadget
2021-03-05  0:55 ` [PATCH 03/11] merge-ort: add a function for initializing our special attr_index Elijah Newren via GitGitGadget
2021-03-08 12:46   ` Ævar Arnfjörð Bjarmason
2021-03-05  0:55 ` [PATCH 04/11] merge-ort: have ll_merge() calls use the attr_index for renormalization Elijah Newren via GitGitGadget
2021-03-08 12:49   ` Ævar Arnfjörð Bjarmason
2021-03-09  4:27     ` Elijah Newren
2021-03-05  0:55 ` [PATCH 05/11] merge-ort: let renormalization change modify/delete into clean delete Elijah Newren via GitGitGadget
2021-03-08 12:55   ` Ævar Arnfjörð Bjarmason
2021-03-05  0:55 ` [PATCH 06/11] merge-ort: support subtree shifting Elijah Newren via GitGitGadget
2021-03-05  0:55 ` [PATCH 07/11] t6428: new test for SKIP_WORKTREE handling and conflicts Elijah Newren via GitGitGadget
2021-03-08 13:03   ` Ævar Arnfjörð Bjarmason [this message]
2021-03-08 20:52     ` Elijah Newren
2021-03-05  0:55 ` [PATCH 08/11] merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries Elijah Newren via GitGitGadget
2021-03-08 13:06   ` Ævar Arnfjörð Bjarmason
2021-03-08 20:54     ` Elijah Newren
2021-03-05  0:55 ` [PATCH 09/11] t: mark several submodule merging tests as fixed under merge-ort Elijah Newren via GitGitGadget
2021-03-08 13:07   ` Ævar Arnfjörð Bjarmason
2021-03-05  0:55 ` [PATCH 10/11] merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict Elijah Newren via GitGitGadget
2021-03-08 13:11   ` Ævar Arnfjörð Bjarmason
2021-03-08 21:51     ` Elijah Newren
2021-03-05  0:55 ` [PATCH 11/11] merge-recursive: add a bunch of FIXME comments documenting known bugs Elijah Newren via GitGitGadget
2021-03-08 13:12   ` Ævar Arnfjörð Bjarmason
2021-03-08 14:43 ` [PATCH 00/11] Complete merge-ort implementation...almost Ævar Arnfjörð Bjarmason
2021-03-08 22:13   ` Elijah Newren
2021-03-09  6:24 ` [PATCH v2 00/10] " Elijah Newren via GitGitGadget
2021-03-09  6:24   ` [PATCH v2 01/10] merge-ort: use STABLE_QSORT instead of QSORT where required Elijah Newren via GitGitGadget
2021-03-09  6:24   ` [PATCH v2 02/10] merge-ort: add a special minimal index just for renormalization Elijah Newren via GitGitGadget
2021-03-11 14:48     ` Derrick Stolee
2021-03-09  6:24   ` [PATCH v2 03/10] merge-ort: have ll_merge() use a special attr_index " Elijah Newren via GitGitGadget
2021-03-11 14:52     ` Derrick Stolee
2021-03-09  6:24   ` [PATCH v2 04/10] merge-ort: let renormalization change modify/delete into clean delete Elijah Newren via GitGitGadget
2021-03-09  6:24   ` [PATCH v2 05/10] merge-ort: support subtree shifting Elijah Newren via GitGitGadget
2021-03-09  6:24   ` [PATCH v2 06/10] t6428: new test for SKIP_WORKTREE handling and conflicts Elijah Newren via GitGitGadget
2021-03-11 14:55     ` Derrick Stolee
2021-03-09  6:24   ` [PATCH v2 07/10] merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries Elijah Newren via GitGitGadget
2021-03-09  6:24   ` [PATCH v2 08/10] t: mark several submodule merging tests as fixed under merge-ort Elijah Newren via GitGitGadget
2021-03-11 15:15     ` Derrick Stolee
2021-03-09  6:24   ` [PATCH v2 09/10] merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict Elijah Newren via GitGitGadget
2021-03-09  6:24   ` [PATCH v2 10/10] merge-recursive: add a bunch of FIXME comments documenting known bugs Elijah Newren via GitGitGadget
2021-03-11 15:20   ` [PATCH v2 00/10] Complete merge-ort implementation...almost Derrick Stolee
2021-03-11 16:42     ` Elijah Newren
2021-03-17 21:42   ` Elijah Newren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=874khlkdb0.fsf@evledraar.gmail.com \
    --to=avarab@gmail.com \
    --cc=dstolee@microsoft.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=gitster@pobox.com \
    --cc=jrnieder@gmail.com \
    --cc=newren@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.