All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marius Storm-Olsen <marius@trolltech.com>
To: Reece Dunn <msclrhd@googlemail.com>
Cc: Git Mailing List <git@vger.kernel.org>,
	Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	Johannes Sixt <johannes.sixt@telecom.at>
Subject: Re: [PATCH] Add a new lstat implementation based on Win32 API, and make stat use that implementation too.
Date: Sun, 02 Sep 2007 18:09:09 +0200	[thread overview]
Message-ID: <46DAE025.900@trolltech.com> (raw)
In-Reply-To: <3f4fd2640709020832x656fa78djf29117690318ea48@mail.gmail.com>

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

Reece Dunn wrote:
> On 02/09/07, Marius Storm-Olsen <marius@trolltech.com> wrote:
>> This gives us a significant speedup when adding, committing and stat'ing files.
>> (Also, since Windows doesn't really handle symlinks, it's fine that stat just uses lstat)
>>
>> +               if (ext && (!_stricmp(ext, ".exe") ||
>> +                           !_stricmp(ext, ".com") ||
>> +                           !_stricmp(ext, ".bat") ||
>> +                           !_stricmp(ext, ".cmd")))
>> +                       fMode |= S_IEXEC;
>> +               }
> 
> This breaks executable mode reporting for things like configure 
> scripts and other shell scripts that may, or may not, be executable. 
> Also, you may want to turn off the executable state for some of these
> extensions (for example if com or cmd were not actually executable 
> files). This makes it impossible to manipulate git repositories 
> properly on the MinGW platform.

Actually, you don't really need the EXEC bit for Git to work. I just
added it for completeness. (We _could_ remove that too, since it's
slowing us down slightly ;-)

Remember that Git isn't using MSys for its builtins, so MinGW Git
doesn't understand the MSys notion of executable files anyways.
The MinGW port actually peeks at the beginning of a file (ignoring exe
files), and sees if there's an interpreter there. If there is, it will
expand
    git-foo args...
into
    sh git-foo args...
and execute the command. So, it's not really affected by this change.

I haven't had any problems with this patch on my system, so could you
explain what you mean with 'this makes it impossible to manipulate git
repositories'?

> Would it be possible to use the git tree to manage the executable 
> state? That way, all files would not have their executable state set 
> by default on Windows. The problem with this is how then to set the 
> executable state? Having a git version of chmod may not be a good 
> idea, but then how else are you going to reliably and efficiently 
> modify the files permissions on Windows?

The file-state-in-git-tree belongs in a different discussion. Have a
look at the '.gitignore, .gitattributes, .gitmodules, .gitprecious?,
.gitacls? etc.' and 'tracking perms/ownership [was: empty directories]'
threads. Permissions are not a trivial topic, since systems represent
them differently. This patch just tries to reflect the read, write and
execute permissions as normal Windows would; and it only cares about
file extensions (and the PE header, if it exists).

Also note that my patch totally ignores the Group & Others part of the
permission bits. Again, we're on Windows so we don't really care. We
_could_ make it reflect the ACLs in Windows, but then we'd have to make
it optional, since that's _really_ slow to 'stat'.

> The rest of the patch looks good on a brief initial scan.

Thanks

--
.marius


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 187 bytes --]

  reply	other threads:[~2007-09-02 16:09 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-02 14:49 Stats in Git Marius Storm-Olsen
2007-09-02 14:51 ` [PATCH] Add a new lstat implementation based on Win32 API, and make stat use that implementation too Marius Storm-Olsen
2007-09-02 14:57   ` Marius Storm-Olsen
2007-09-02 15:32   ` Reece Dunn
2007-09-02 16:09     ` Marius Storm-Olsen [this message]
2007-09-02 16:33       ` Reece Dunn
2007-09-02 16:47         ` Brian Gernhardt
2007-09-02 16:53           ` Reece Dunn
2007-09-02 17:05             ` Marius Storm-Olsen
2007-09-02 17:44               ` Johannes Schindelin
2007-09-02 17:58                 ` David Kastrup
2007-09-02 18:18                 ` Marius Storm-Olsen
2007-09-02 18:16   ` Johannes Sixt
2007-09-02 18:44     ` Marius Storm-Olsen
2007-09-02 19:07       ` Johannes Sixt
2007-09-02 19:31       ` Marius Storm-Olsen
2007-09-02 20:27         ` Robin Rosenberg
2007-09-02 21:26           ` Johannes Schindelin
2007-09-02 21:42             ` Robin Rosenberg
2007-09-02 23:02               ` Johannes Schindelin
2007-09-03  7:07               ` Johannes Sixt
2007-09-03 11:21                 ` Miklos Vajna
2007-09-03 11:32                   ` David Kastrup
2007-09-05 16:02                     ` Miklos Vajna
2007-09-05 19:01                       ` David Kastrup
2007-09-06 16:26                         ` Miklos Vajna
2007-09-06 16:33                           ` David Kastrup
2007-09-06 23:31                             ` Douglas Stockwell
2007-09-07  6:36                               ` David Kastrup
2007-09-02 21:38           ` Alex Riesen
2007-09-02 22:04             ` Robin Rosenberg
2007-09-03  6:15           ` Marius Storm-Olsen
2007-09-03 11:39             ` Johannes Schindelin
2007-09-03 11:51               ` David Kastrup
2007-09-03 11:53               ` Marius Storm-Olsen
2007-09-03 12:33                 ` Johannes Schindelin
2007-09-02 21:41         ` Alex Riesen
2007-09-03  6:12           ` Marius Storm-Olsen
2007-09-03  7:47   ` Johannes Sixt
2007-09-03  7:55     ` Marius Storm-Olsen
     [not found]     ` <46DBFA2A.7050003@trolltech.com>
2007-09-03 12:38       ` [PATCH] Add a new lstat and fstat implementation based on Win32 API Marius Storm-Olsen
2007-09-03 13:33       ` Johannes Schindelin
2007-09-03 13:52         ` Marius Storm-Olsen
2007-09-03 14:39           ` Johannes Schindelin
2007-09-03 16:22             ` Marius Storm-Olsen
2007-09-03 16:56               ` Johannes Schindelin
2007-09-03 13:53         ` Johannes Sixt
2007-09-03 14:35           ` Johannes Schindelin
2007-09-03 19:21         ` Marius Storm-Olsen
2007-09-04  2:21           ` Johannes Schindelin
2007-09-04  7:41           ` Johannes Sixt
2007-09-04  8:53             ` David Kastrup
2007-09-04 10:20             ` Marius Storm-Olsen
2007-09-04 10:53               ` Johannes Sixt
2007-09-04 11:21                 ` Marius Storm-Olsen
2007-09-04 11:28                   ` Johannes Sixt
2007-09-04 21:31                 ` David Kastrup
2007-09-04 10:48             ` Johannes Schindelin
2007-09-04 11:36               ` Johannes Sixt
2007-09-04 11:53                 ` Marius Storm-Olsen
2007-09-04 13:56                   ` Marius Storm-Olsen
2007-09-04 14:07                     ` Johannes Sixt
2007-09-04 14:32                       ` Johannes Schindelin
2007-09-04 14:52                         ` Johannes Sixt
2007-09-04 14:16                     ` Johannes Schindelin
2007-09-04 14:30                     ` Johannes Schindelin
2007-09-04 14:43                       ` Marius Storm-Olsen
2007-09-04 14:48                         ` Johannes Schindelin
2007-09-04 15:05                           ` David Kastrup
2007-09-04 16:32                           ` Marius Storm-Olsen
2007-09-04 12:46                 ` Johannes Schindelin
2007-09-04 12:57                   ` Johannes Schindelin
2007-09-04 21:02                     ` Rutger Nijlunsing
2007-09-04 21:54                       ` Reece Dunn
2007-09-05  6:22                       ` Marius Storm-Olsen
2007-09-05 10:15                         ` Johannes Schindelin
2007-09-04 13:03                   ` Johannes Sixt
2007-09-06 16:18             ` Johannes Sixt
2007-09-06 16:34               ` Marius Storm-Olsen
2007-09-03 13:49       ` Johannes Sixt
2007-09-03 14:38         ` Johannes Schindelin
2007-09-03 16:15           ` Marius Storm-Olsen
2007-09-03 16:55             ` Johannes Schindelin
2007-09-02 20:02 ` Stats in Git Alex Riesen
2007-09-02 20:09   ` Marius Storm-Olsen
2007-09-03  8:19 ` Matthieu Moy

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=46DAE025.900@trolltech.com \
    --to=marius@trolltech.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=johannes.sixt@telecom.at \
    --cc=msclrhd@googlemail.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 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.