From: Matthieu Moy <Matthieu.Moy@univ-lyon1.fr>
To: Jonathan Bressat <git.jonathan.bressat@gmail.com>
Cc: "cogoni.guillaume@gmail.com" <cogoni.guillaume@gmail.com>,
"git@vger.kernel.org" <git@vger.kernel.org>,
"gitster@pobox.com" <gitster@pobox.com>,
"guillaume.cogoni@gmail.com" <guillaume.cogoni@gmail.com>,
BRESSAT JONATHAN p1802864 <jonathan.bressat@etu.univ-lyon1.fr>
Subject: Re: [PATCH v2 1/4] t6436: tests how merge behave when there is untracked file with the same content
Date: Sat, 4 Jun 2022 11:44:56 +0200 [thread overview]
Message-ID: <2c6ee145-5116-25db-9fbf-bcffe67a9360@univ-lyon1.fr> (raw)
In-Reply-To: <dfea1d98c15047428b1a11adbc002eef@SAMBXP02.univ-lyon1.fr>
On 5/27/22 21:55, Jonathan Bressat wrote:
> add test to show explicitly that merge doesn't overwrite untracked files
> or unstaged even when they have the same content than files int the
> merged commit
Nit: capital at the beginning of the sentence, period at the end.
"untracked files or unstaged" -> "untracked or unstaged files"
> +test_expect_success 'create branch A' '
> + git reset --hard c0 &&
> + git checkout -b A
> +'
> +
> +test_expect_success 'fastforward will not overwrite untracked file with the same content' '
Git usually spells fast-forward with a hyphen, not fastforward.
> + test_when_finished "git branch -D B && git reset --hard c0 && git clean --force" &&
> + git checkout -b B &&
> + test_commit --no-tag "tracked" file "content" &&
> + git checkout A &&
> + echo content >file &&
> + test_must_fail git merge B
Other tests in the same file test a bit more: the file mustn't be
touched. It's a very important thing with Git: 99% of the times, when an
operation fails, it fails before starting any change on-disk, as opposed
to "I started messing up with your repo, I can't go further, go fix the
mess yourself" ;-).
The way it's done is by creating a file with the content, using "cp"
instead of "echo >" and "test_cmp" to check the content.
Other tests also check the absence of .git/MERGE_HEAD, which seems to be
a sensible thing to do.
> +test_expect_success 'will not overwrite untracked file with the same content' '
> + test_when_finished "git branch -D B && git reset --hard c0 && git clean --force" &&
> + git checkout -b B &&
> + test_commit --no-tag "tracked" file "content" fileB "content" &&
> + git checkout A &&
> + test_commit --no-tag "exA" fileA "content" &&
> + echo content >file &&
> + test_must_fail git merge B
> +'
> +
> +test_expect_success 'will not overwrite unstaged file with the same content' '
> + test_when_finished "git branch -D B && git reset --hard c0 && git clean --force" &&
> + test_commit --no-tag "unstaged" file "other" &&
> + git checkout -b B &&
> + test_commit --no-tag "staged" file "content" &&
> + git checkout A &&
> + echo content >file &&
> + test_must_fail git merge B
> +'
As discussed IRL, I think two more cases should be tested:
- index matches commit being merged, but the worktree file doesn't
- worktree file doesn't match content, but index does
in both cases, I'd expect the old and the new behavior to abort the
merge. Perhaps there are use-cases where one would expect a successful
merge silently, but for rare corner-cases, it's safe to ask the user to
fix the situation manually and too much magic can only confuse the user.
--
Matthieu Moy
https://matthieu-moy.fr/
next prev parent reply other threads:[~2022-06-04 9:47 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
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 ` Matthieu Moy [this message]
[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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2c6ee145-5116-25db-9fbf-bcffe67a9360@univ-lyon1.fr \
--to=matthieu.moy@univ-lyon1.fr \
--cc=cogoni.guillaume@gmail.com \
--cc=git.jonathan.bressat@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=guillaume.cogoni@gmail.com \
--cc=jonathan.bressat@etu.univ-lyon1.fr \
/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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).