git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git-mergetool changes file rights?

From
Charles Bailey <charles@hashpling.org>
Date
Mar 7, 2009, 19:48 UTC
Message-ID
<20090307194821.GA29312@hashpling.org>
In-Reply-To
<49B298FA.2050803@tuffmail.com>
On Sat, Mar 07, 2009 at 04:55:38PM +0100, Grzegorz Kossakowski wrote:
Show 11 quoted 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.

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)
-- 
Charles Bailey
http://ccgi.hashpling.plus.com/blog/
Previous: Grzegorz KossakowskiNext: Grzegorz Kossakowski
Message 2 of 3 in “git-mergetool changes file rights?”
  1. Grzegorz KossakowskiMar 7, 2009
  2. Charles BaileyMar 7, 2009
  3. Grzegorz KossakowskiMar 7, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.