All of lore.kernel.org
 help / color / mirror / Atom feed
* [BUG] Silent data loss on merge with uncommited changes + renames
@ 2013-04-22  9:24 Matthieu Moy
  2013-04-22 14:23 ` Johannes Sixt
  2013-04-22 15:19 ` Junio C Hamano
  0 siblings, 2 replies; 4+ messages in thread
From: Matthieu Moy @ 2013-04-22  9:24 UTC (permalink / raw)
  To: git

Hi,

Following the discussion on "merge with uncommited changes" inside the
"git pull --autostash" thread, I did a bit of testing, and encountered a
case with silent data loss. In short: merge a branch introducing changes
to a file. If the file has been renamed in the current branch, then "git
merge" follows the rename and brings changes to the renamed file, but
uncommited changes in this file are overriden silently.

I could have expected "git merge --abort" to fail, but the problem is
really more serious here: data loss is done silently before giving me an
opportunity to do or abort anything.

Reproduction script below:

#! /bin/sh

# Create repo
git init git.$$
cd git.$$
echo init > test.txt
git add test.txt
git commit -m init

# Make a branch changing test.txt
git checkout -b branch
echo new > test.txt
git commit -am new

# Move test.txt on master
git checkout master
git mv test.txt moved.txt
git commit -m move

# Make uncommited changes to moved.txt
echo precious > moved.txt

# Merge loses uncommited content "precious" in "moved.txt" silently
git merge --no-edit branch
ls # lists just moved.txt
git status # nothing to commit, working directory clean
cat moved.txt # Says "new".

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-04-22 15:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-22  9:24 [BUG] Silent data loss on merge with uncommited changes + renames Matthieu Moy
2013-04-22 14:23 ` Johannes Sixt
2013-04-22 14:43   ` Matthieu Moy
2013-04-22 15:19 ` Junio C Hamano

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.