git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Torsten Bögershausen" <tboegi@web.de>
To: SH <saajey@yahoo.com>, "Torsten Bögershausen" <tboegi@web.de>,
	"Jeff King" <peff@peff.net>
Cc: "git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: file permissions in Git repo
Date: Fri, 17 Jan 2014 20:55:51 +0100	[thread overview]
Message-ID: <52D98AC7.9030101@web.de> (raw)
In-Reply-To: <1389986459.3994.YahooMailNeo@web124902.mail.ne1.yahoo.com>

(Please no top posting next time)
On 2014-01-17 20.20, SH wrote:
> On Friday, January 17, 2014 10:08 AM, Torsten Bögershausen <tboegi@web.de> wrote:
> On 01/17/2014 03:26 AM, Jeff King wrote:
> 
>> On Thu, Jan 16, 2014 at 03:58:57PM -0800, SH wrote:
>>
>>> We have a repository which holds lots of shell and perl scripts. We add the
>>> files to repository (from windows client) with executable permissions (using
>>> cygwin) but when we pull that repository on another machine (windows or linux),
>>> files dont have executable permission. Can you please provide a solutions for
>>> this?
>>
>> Git does not preserve file permissions _except_ for the executable bit.
>> So this should be working.
>>
>> However, I suspect that `core.fileMode` is set to `false` in your
>> repository, which causes git to ignore the executable bit. When a
>> repository is initialized, we check whether the filesystem simply
>> creates everything with the executable bit. If so, we turn off
>> core.fileMode for the repository (since otherwise every file would have
>> it set).
>>
>> -Peff
> Cygwin has been a little bit special (and mingw still is).
> Until this commit:
> Author: Junio C Hamano <gitster@pobox.com>
> Date:   Wed Jul 24 19:22:49 2013 -0700
> 
>     Merge branch 'ml/cygwin-updates'
> 
>     The tip one does _not_ revert c869753e (Force core.filemode to
>     false on Cygwin., 2006-12-30) on purpose, so that people can
>     still retain the old behaviour if they wanted to.
> 
>     * ml/cygwin-updates:
>       cygwin: stop forcing core.filemode=false
>       Cygwin 1.7 supports mmap
>       Cygwin 1.7 has thread-safe pread
>       Cygwin 1.7 needs compat/regex
> the repositories created by cygwin had always core.filemode=false.
> 
> You can easily check your configuration by running
> git config -l
> on the cygwin machine, as Peff suggested.
> 
> The next step is to check how the files had been recored in git, using
> git ls-files -s | less
> on any machine.
> 
> If I do this on git.git, we find lines like this, where
> 100755 means an executable file,
> 100644 means non-executable file.
> 
> 100755 9c3f4131b8586408acd81d1e60912b51688575ed 0 
> Documentation/technical/api-index.sh
> 100644 dd894043ae8b04269b3aa2108f96cb935217181d 0 
> Documentation/technical/api-lockfile.txt
> 
> 
> The 3rd step is to check how file are shown in cygwin, run
> ls -l
> (Do they have the executable bit set ?)
> 
> Side note:
> And I think the way the auto-probing of the file system works is
> like this:
> When a git repo is initialized, the .git/config file is created.
> After that, we try to toggle the executable bit, and if lstat reports
> it as toggled, we set core.filemode=true.
> (See builtin/init-db.c, search for core.filemode)
> 
> I tested to create a repo on a network share exported by SAMBA.
> The Server was configured so that all new created files had the
> executable bit set by default.
> Git detected that the executable bit could be switched off,
> and configured core.filemode=true
> Nice.
> 
> /Torsten
> Thanks guys.  Sorry but one more question, like I mentioned we have hosted repositories so how do I make some configuration changes are server based so whether the client have those changes or not, it wouldn't matter. Also I have one client on linux and another one on windows (for my testing purpose) and I see that .git/config on both machines are little different. Is that normal?
> 
> Thanks Again.
That a config file has small differences could be normal:
the server has typically core.bare true.

About other differences, please don't heasitate to consult
http://git-htmldocs.googlecode.com/git/git-config.html

And if there are still questions, they are there to be answered here.
/Torsten

  reply	other threads:[~2014-01-17 19:56 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-16 23:58 file permissions in Git repo SH
2014-01-17  2:26 ` Jeff King
2014-01-17 18:08   ` Torsten Bögershausen
2014-01-17 19:20     ` SH
2014-01-17 19:55       ` Torsten Bögershausen [this message]
2014-01-17 20:11         ` SH

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=52D98AC7.9030101@web.de \
    --to=tboegi@web.de \
    --cc=git@vger.kernel.org \
    --cc=peff@peff.net \
    --cc=saajey@yahoo.com \
    /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).