From: Linus Torvalds <torvalds@osdl.org>
To: Junio C Hamano <junkio@cox.net>
Cc: git@vger.kernel.org
Subject: Re: "fatal: Untracked working tree file 'so-and-so' would be overwritten by merge"
Date: Mon, 9 Oct 2006 09:03:08 -0700 (PDT) [thread overview]
Message-ID: <Pine.LNX.4.64.0610090858120.3952@g5.osdl.org> (raw)
In-Reply-To: <7vodsmdq0m.fsf@assigned-by-dhcp.cox.net>
On Sun, 8 Oct 2006, Junio C Hamano wrote:
>
> Note note note. The above patch alone leaves merge risky to
> remove an untracked working tree files, and needs to be
> compensated by corresponding checks to the git-merge-xxx
> strategies. The original code was overcautious, but was
> protecting valid cases too.
I think the difference _should_ be that we only remove the local file if
it was removed _remotely_.
In that case, it was there in the original tree, and removing it is
correct.
> diff --git a/git-merge-one-file.sh b/git-merge-one-file.sh index
> fba4b0c..25aedb7 100755 --- a/git-merge-one-file.sh +++
> b/git-merge-one-file.sh @@ -23,6 +23,9 @@ #
> "$1.." | "$1.$1" | "$1$1.")
So I actually think that we should NOT consider these three cases to be
the same.
There are really two distinct cases:
- "$1.." and "$1.$1"
The file had already been removed locally, AND WE SHOULD NOT TOUCH
IT.
- "$1$1.":
The file was removed remotely, and we SHOULD remove it locally.
In fact, we already have that as a "special case":
> if [ "$2" ]; then
> echo "Removing $4"
> + elif test -f "$4"
> + echo "ERROR: untracked $4 is removed by the merge."
> + exit 1
> fi
> if test -f "$4"; then
> rm -f -- "$4" &&
That
if [ "$2" ]; then
echo "Removing $4"
is _exactly_ that case: it is the "$1$1." case, and we already treat it
differently, but we actually treat it differently the wrong way: we only
print out the message for that case, but the actual "touch working tree"
code should _also_ be affected.
If the local index doesn't change, we should not print out the "Removing
'so-and-so'" message, but we should also not even _touch_ that file,
because it was already "gone" as far as the local tree was concerned.
Agreed?
Linus
next prev parent reply other threads:[~2006-10-09 16:03 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-09 0:11 "fatal: Untracked working tree file 'so-and-so' would be overwritten by merge" Linus Torvalds
2006-10-09 4:48 ` Junio C Hamano
2006-10-09 5:20 ` Junio C Hamano
2006-10-09 5:48 ` [RFC/PATCH] merge: loosen overcautious "working file will be lost" check Junio C Hamano
2006-10-09 17:20 ` Luben Tuikov
2006-10-09 22:47 ` Junio C Hamano
2006-10-10 0:01 ` Luben Tuikov
2006-10-10 0:19 ` Junio C Hamano
2006-10-10 0:59 ` Luben Tuikov
2006-10-09 16:03 ` Linus Torvalds [this message]
2006-10-09 16:55 ` "fatal: Untracked working tree file 'so-and-so' would be overwritten by merge" Junio C Hamano
2006-10-10 6:32 ` Junio C Hamano
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=Pine.LNX.4.64.0610090858120.3952@g5.osdl.org \
--to=torvalds@osdl.org \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
/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).