git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Joey Hess <joey@kitenet.net>
To: git@vger.kernel.org
Subject: bug: git merge --no-commit loses track of file modes in the index
Date: Thu, 12 Jun 2014 21:38:58 -0400	[thread overview]
Message-ID: <20140613013858.GA28485@kitenet.net> (raw)

[-- Attachment #1: Type: text/plain, Size: 1925 bytes --]

If git merge --no-commit is used to merge a commit adding a 
file with an unusual mode -- specifically a symlink which has "mode" 120000,
it fails to stage the right mode into the index.

This only happens when core.symlinks=false. I noticed it on FAT, but
have managed to reproduce it on ext4.

Here's an example of the bug:

joey@darkstar:~>git clone r1 r2
Cloning into 'r2'...
done.
joey@darkstar:~>cd r1
joey@darkstar:~/r1>ls -l
total 0
lrwxrwxrwx 1 joey joey 11 Jun 12 21:23 foo -> /etc/passwd
joey@darkstar:~/r1>git mv foo bar
joey@darkstar:~/r1>git commit -m moved
[master 516a53c] moved
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename foo => bar (100%)
joey@darkstar:~/r1>cd ..
joey@darkstar:~>cd r2
joey@darkstar:~/r2>git config core.symlinks false
joey@darkstar:~/r2>git fetch origin
remote: Counting objects: 2, done.
remote: Total 2 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (2/2), done.
From /home/joey/r1
   7ab8102..516a53c  master     -> origin/master
joey@darkstar:~/r2>git merge origin/master --no-commit --no-ff
Automatic merge went well; stopped before committing as requested
joey@darkstar:~/r2>git diff --cached
diff --git a/bar b/bar
new file mode 100644
index 0000000..3594e94
--- /dev/null
+++ b/bar
@@ -0,0 +1 @@
+/etc/passwd
\ No newline at end of file
diff --git a/foo b/foo
deleted file mode 120000
index 3594e94..0000000
--- a/foo
+++ /dev/null
@@ -1 +0,0 @@
-/etc/passwd
\ No newline at end of file
joey@darkstar:~/r2>git commit -m oops
[master 63bd960] oops
joey@darkstar:~/r2>git show
commit 63bd9608c96a91582b27c5853ff58053bab6c71c
Merge: 7ab8102 516a53c
Author: Joey Hess <joey@kitenet.net>
Date:   Thu Jun 12 21:37:35 2014 -0400

    oops

diff --cc bar
index 0000000,3594e94..3594e94
mode 000000,120000..100644
--- a/bar
+++ b/bar

joey@darkstar:~/r2>git version
git version 2.0.0

-- 
see shy jo

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 811 bytes --]

             reply	other threads:[~2014-06-13  1:47 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-13  1:38 Joey Hess [this message]
2014-06-13  5:52 ` bug: git merge --no-commit loses track of file modes in the index Stefan Haller
2014-06-13  6:26 ` Johannes Sixt

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=20140613013858.GA28485@kitenet.net \
    --to=joey@kitenet.net \
    --cc=git@vger.kernel.org \
    /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).