From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Jonathan <git.jonathan.bressat@gmail.com>
Cc: cogoni.guillaume@gmail.com, Matthieu.Moy@univ-lyon1.fr,
git@vger.kernel.org, guillaume.cogoni@gmail.com,
Jonathan <Jonathan.bressat@etu.univ-lyon1.fr>
Subject: Re: [PATCH 1/1] Merge with untracked file that are the same without failure and test
Date: Tue, 12 Apr 2022 21:21:39 +0200 [thread overview]
Message-ID: <220412.86czhmgl68.gmgdl@evledraar.gmail.com> (raw)
In-Reply-To: <20220412191556.21135-2-Jonathan.bressat@etu.univ-lyon1.fr>
On Tue, Apr 12 2022, Jonathan wrote:
> When doing a merge while there is untracked files with the same name
> as merged files, git refuses to proceed. This commit change this
> behavior and make git overwrite files if their contents are the same.
> This new behaviour is more pleasant for a user and will never be a
> frustrating moment.
>
> Add a if statement that check if the file has the same content as the
> merged file thanks to the function ie_modified() (read-cache.c).
> ie_modified () checks the status of both files, if they are different,
> it verifies their contents.
>
> Add new tests that need to pass to confirm that the new feature works.
>
> Co-authored-by: COGONI Guillaume <cogoni.guillaume@gmail.com>
> ---
> t/t7615-merge-untracked.sh | 79 ++++++++++++++++++++++++++++++++++++++
> unpack-trees.c | 4 ++
> 2 files changed, 83 insertions(+)
> create mode 100755 t/t7615-merge-untracked.sh
>
> diff --git a/t/t7615-merge-untracked.sh b/t/t7615-merge-untracked.sh
> new file mode 100755
> index 0000000000..71a34041d2
> --- /dev/null
> +++ b/t/t7615-merge-untracked.sh
> @@ -0,0 +1,79 @@
> +#!/bin/sh
> +
> +test_description='test when merge with untracked file'
> +
> +. ./test-lib.sh
> +
> +
Too much whitespace.
> +test_expect_success 'overwrite the file when fastforward and the same content' '
> + echo content >README.md &&
The coding style in this project is TAB-indent, not 4 spaces
> + test_commit "init" README.md &&
> + git branch A &&
> + git checkout -b B &&
> + echo content >file &&
> + git add file &&
> + git commit -m "tracked" &&
Can't these and a lot of the test also just use test_commit, you can do
this sort of thing with its multi-param invocation, if you're trying to
specifically avoid tags there's an option for that.
> + git switch A &&
> + echo content >file &&
> + git merge B
> +'
> +
> +test_expect_success 'merge fail with fastforward and different content' '
> + rm * &&
> + rm -r .git &&
Can we just set this up in a "git init repo" or whatever instead?
> + git init &&
> + echo content >README.md &&
> + test_commit "init" README.md &&
> + git branch A &&
> + git checkout -b B &&
> + echo content >file &&
> + git add file &&
> + git commit -m "tracked" &&
> + git switch A &&
> + echo dif >file &&
> + test_must_fail git merge B
And thendo this in a sub-shell?
> +'
> +
> +test_expect_success 'normal merge with untracked with the same content' '
> + rm * &&
> + rm -r .git &&
Please use test_when_finished in the tests themselves for teardown,
rather than having the "next test" do the cleanup after the last one.
> + git init &&
> + echo content >README.md &&
> + test_commit "init" README.md &&
> + git branch A &&
> + git checkout -b B &&
> + echo content >fileB &&
> + echo content >file &&
> + git add fileB &&
> + git add file &&
> + git commit -m "tracked" &&
> + git switch A &&
> + echo content >fileA &&
> + git add fileA &&
> + git commit -m "exA" &&
> + echo content >file &&
> + git merge B -m "merge"
> +'
> +
> +test_expect_success 'normal merge fail when untracked with different content' '
> + rm * &&
> + rm -r .git &&
> + git init &&
> + echo content >README.md &&
> + test_commit "init" README.md &&
> + git branch A &&
> + git checkout -b B &&
> + echo content >fileB &&
> + echo content >file &&
> + git add fileB &&
> + git add file &&
> + git commit -m "tracked" &&
> + git switch A &&
> + echo content >fileA &&
> + git add fileA &&
> + git commit -m "exA" &&
> + echo dif >file &&
> + test_must_fail git merge B -m "merge"
> +'
> +
> +test_done
> \ No newline at end of file
Git's telling you something here... :)
> diff --git a/unpack-trees.c b/unpack-trees.c
> index 360844bda3..834aca0da9 100644
> --- a/unpack-trees.c
> +++ b/unpack-trees.c
> @@ -2259,6 +2259,10 @@ static int check_ok_to_remove(const char *name, int len, int dtype,
> return 0;
> }
>
> + if (!ie_modified(&o->result, ce, st, 0))
> + return 0;
> +
> +
Too much whitespace.
> return add_rejected_path(o, error_type, name);
> }
next prev parent reply other threads:[~2022-04-12 19:24 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-27 15:41 [WIP]: make merge nicer to the user Guillaume Cogoni
2022-04-12 19:15 ` [PATCH 0/1] Be nicer to the user on tracked/untracked merge conflicts Jonathan
2022-04-12 19:15 ` [PATCH 1/1] Merge with untracked file that are the same without failure and test Jonathan
2022-04-12 19:21 ` Ævar Arnfjörð Bjarmason [this message]
2022-04-13 18:18 ` Junio C Hamano
2022-04-25 20:27 ` [PATCH v1 0/2] Be nicer to the user on tracked/untracked merge conflicts Jonathan
2022-04-25 20:27 ` [PATCH v1 1/2] t7615: test how merge behave when there is untracked file Jonathan
2022-04-25 20:27 ` [PATCH v1 2/2] merge with untracked file that are the same without failure Jonathan
2022-04-25 21:16 ` [PATCH v1 0/2] Be nicer to the user on tracked/untracked merge conflicts Junio C Hamano
2022-04-25 22:28 ` Guillaume Cogoni
2022-04-25 23:10 ` Junio C Hamano
[not found] ` <fdd9f13d14e942f3a1572866761b9580@SAMBXP02.univ-lyon1.fr>
2022-04-26 6:38 ` Matthieu Moy
2022-04-26 16:13 ` Junio C Hamano
2022-04-28 10:33 ` Jonathan Bressat
2022-05-27 19:55 ` [PATCH v2 0/4] " Jonathan Bressat
2022-05-27 19:55 ` [PATCH v2 1/4] t6436: tests how merge behave when there is untracked file with the same content Jonathan Bressat
2022-05-27 19:55 ` [PATCH v2 2/4] merge with untracked file that are the same without failure Jonathan Bressat
2022-05-27 19:55 ` [PATCH v2 3/4] add configuration variable corresponding to --overwrite-same-content Jonathan Bressat
2022-05-27 19:55 ` [PATCH v2 4/4] error message now advice to use the new option Jonathan Bressat
[not found] ` <dfea1d98c15047428b1a11adbc002eef@SAMBXP02.univ-lyon1.fr>
2022-06-04 9:44 ` [PATCH v2 1/4] t6436: tests how merge behave when there is untracked file with the same content Matthieu Moy
[not found] ` <be2297bdcd724c3f8abfde2d5d74fb18@SAMBXP02.univ-lyon1.fr>
2022-06-04 9:45 ` [PATCH v2 2/4] merge with untracked file that are the same without failure Matthieu Moy
[not found] ` <82beb916d9c44a069f30ec4ff261e3be@SAMBXP02.univ-lyon1.fr>
2022-06-04 9:45 ` [PATCH v2 4/4] error message now advice to use the new option Matthieu Moy
2022-06-10 12:58 ` Guillaume Cogoni
[not found] ` <4efbe7d9c95841c691f51954670a1d9f@SAMBXP02.univ-lyon1.fr>
2022-06-04 9:49 ` [PATCH v2 3/4] add configuration variable corresponding to --overwrite-same-content Matthieu Moy
[not found] ` <eca66375d8b34154856b7da303bf96d7@SAMBXP02.univ-lyon1.fr>
2022-04-26 6:48 ` [PATCH v1 1/2] t7615: test how merge behave when there is untracked file Matthieu Moy
2022-04-12 19:24 ` [PATCH 0/1] Be nicer to the user on tracked/untracked merge conflicts Ævar Arnfjörð Bjarmason
2022-04-14 8:57 ` Jonathan Bressat
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=220412.86czhmgl68.gmgdl@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=Jonathan.bressat@etu.univ-lyon1.fr \
--cc=Matthieu.Moy@univ-lyon1.fr \
--cc=cogoni.guillaume@gmail.com \
--cc=git.jonathan.bressat@gmail.com \
--cc=git@vger.kernel.org \
--cc=guillaume.cogoni@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).