Skip to contentSkip to conversation

git-mergetool changes file rights?

DISCUSSION Grzegorz Kossakowski 2 participants 3 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

Hello,

I've stumbled upon very weird problem:
grek@linux-p3yg:~/asf/git/infrastructure/apache-git-mirrors/bin> git --version git version 1.6.1.3 grek@linux-p3yg:~/asf/git/infrastructure/apache-git-mirrors/bin> ls -l razem 40

-rwxr-xr-x 1 grek users  773 mar  7 16:47 create-repo.sh
-rwxr-xr-x 1 grek users 3219 mar  7 16:50 email-update.sh
-rwxr-xr-x 1 grek users 3219 mar  7 16:50 email-update.sh.orig
-rwxr-xr-x 1 grek users 2086 mar  7 16:47 move-svn-project.sh
-rwxr-xr-x 1 grek users 1464 mar  7 16:47 update-authors.sh
-rwxr-xr-x 1 grek users  156 mar  6 16:16 update-daily.sh
-rwxr-xr-x 1 grek users  371 mar  7 16:47 update-every-minute.sh
-rwxr-xr-x 1 grek users  215 mar  7 16:47 update-gitweb.sh
-rwxr-xr-x 1 grek users 1104 mar  7 16:47 update-repo.sh
-rwxr-xr-x 1 grek users  188 mar  7 16:47 update.sh

grek@linux-p3yg:~/asf/git/infrastructure/apache-git-mirrors/bin> git mergetool merge tool candidates: kdiff3 kdiff3 tkdiff xxdiff meld gvimdiff opendiff emerge vimdiff Merging the files: email-update.sh

Normal merge conflict for 'email-update.sh':
{local}: modified
{remote}: modified
Hit return to start merge resolution tool (kdiff3):
error: open("bin/email-update.sh"): Permission denied
error: unable to index file bin/email-update.sh
fatal: updating files failed grek@linux-p3yg:~/asf/git/infrastructure/apache-git-mirrors/bin> ls -l razem 40

-rwxr-xr-x 1 grek users  773 mar  7 16:47 create-repo.sh
---x------ 1 grek users 3219 mar  7 16:53 email-update.sh
-rwxr-xr-x 1 grek users 3219 mar  7 16:53 email-update.sh.orig
-rwxr-xr-x 1 grek users 2086 mar  7 16:47 move-svn-project.sh
-rwxr-xr-x 1 grek users 1464 mar  7 16:47 update-authors.sh
-rwxr-xr-x 1 grek users  156 mar  6 16:16 update-daily.sh
-rwxr-xr-x 1 grek users  371 mar  7 16:47 update-every-minute.sh
-rwxr-xr-x 1 grek users  215 mar  7 16:47 update-gitweb.sh
-rwxr-xr-x 1 grek users 1104 mar  7 16:47 update-repo.sh
-rwxr-xr-x 1 grek users  188 mar  7 16:47 update.sh

Notice rights for email-update.sh.

What's going on here?

Signature · 2 lines
Best regards,
Grzegorz Kossakowski
#1 lore raw
Quoted 11 lines · Grzegorz Kossakowski

grek@linux-p3yg:~/asf/git/infrastructure/apache-git-mirrors/bin> git mergetool merge tool candidates: kdiff3 kdiff3 tkdiff xxdiff meld gvimdiff opendiff emerge vimdiff Merging the files: email-update.sh

Normal merge conflict for 'email-update.sh':
{local}: modified
{remote}: modified
Hit return to start merge resolution tool (kdiff3):
error: open("bin/email-update.sh"): Permission denied
error: unable to index file bin/email-update.sh
fatal: updating files failed

Looking at this sequence of error messages it looks like mergetool ran kdiff3 and this 'succeeded', but when mergetool came to 'git add' the result of the merge it fell over in a heap because it couldn't read the file because of the strange ---x------ permissions.

mergetool just uses mv to create a backup of the to-be-merged path and then uses cp to recreate the original path before invoking kdiff3. I haven't managed to get cp to do anything other that use the same mode as the source file for a copied file.

What version of kdiff3 are you using? I ask because this fix looks like it may be relevant:

http://kdiff3.svn.sourceforge.net/viewvc/kdiff3/trunk/kdiff3/src-QT4/fileaccess.cpp?r1=84&r2=96

The changelog for 0.9.95 includes this:

- Fixed permissions when writing executable file. (Un*x only)

Signature · 2 lines
Charles Bailey
http://ccgi.hashpling.plus.com/blog/
#2 lore raw

Charles Bailey pisze:

Quoted 23 lines · Grzegorz Kossakowski
Quoted 11 lines

grek@linux-p3yg:~/asf/git/infrastructure/apache-git-mirrors/bin> git mergetool merge tool candidates: kdiff3 kdiff3 tkdiff xxdiff meld gvimdiff opendiff emerge vimdiff Merging the files: email-update.sh

Normal merge conflict for 'email-update.sh':
{local}: modified
{remote}: modified
Hit return to start merge resolution tool (kdiff3):
error: open("bin/email-update.sh"): Permission denied
error: unable to index file bin/email-update.sh
fatal: updating files failed

Looking at this sequence of error messages it looks like mergetool ran kdiff3 and this 'succeeded', but when mergetool came to 'git add' the result of the merge it fell over in a heap because it couldn't read the file because of the strange ---x------ permissions.

mergetool just uses mv to create a backup of the to-be-merged path and then uses cp to recreate the original path before invoking kdiff3. I haven't managed to get cp to do anything other that use the same mode as the source file for a copied file.

Quoted 8 lines

What version of kdiff3 are you using? I ask because this fix looks like it may be relevant:

http://kdiff3.svn.sourceforge.net/viewvc/kdiff3/trunk/kdiff3/src-QT4/fileaccess.cpp?r1=84&r2=96

The changelog for 0.9.95 includes this:

- Fixed permissions when writing executable file. (Un*x only)

Hi Charles,

I didn't thought of blaming kdiff3 which seems to be the real guilty for my problems. I'm using 0.9.94 version but I'm in the process of update.

I'll try that version and report back if it fixes my problem.

Thanks for your help!

Signature · 2 lines
Best regards,
Grzegorz Kossakowski