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

[msysGit] Windows & executable bit for newly created files

From
DSDirk Süsserott <newsletter@dirk.my1.cc>
Date
Dec 15, 2011, 20:07 UTC
Message-ID
<4EEA5387.5020808@dirk.my1.cc>
Hi,

I sometimes write new (shell/perl) scripts under Windows whithin msysGit's bash. An "ls -l" shows them as executable:

$ ls -l
    -rwxr-xr-x  ...  11 Dec 15 20:33 test.sh

Ok, "ls" just *pretends* they have the bit set (I think it just peeks for the she-bang line).

Adding the file and looking at the patch gives:

$ git add test.sh $ git diff --cached

    diff --git a/test.sh b/test.sh
    new file mode 100644
    index 0000000..13f4793
    --- /dev/null
    +++ b/test.sh
    @@ -0,0 +1,2 @@
    +#!/bin/sh
    +

Is there a way to convince git that the new mode is 755 instead of 644, even with core.filemode set to false? So that the mode is correct when I checkout the file under Linux later on?

My impression is that when git once knows the file has 755, it remembers that. I'd like to avoid those commits (made under Linux) with "chmod +x for scripts newly created under Windows".

Sometimes I create a script under Windows, add and commit it, create a patch (git-format-patch), edit the patch (644 -> 755), reset the branch, and finally git-am the patch. It works but is not particularly convenient.

Is there sth. like
$ git add --filemode=755 <filepattern>   ?
Cheers,
    Dirk
Next: Junio C Hamano
Message 1 of 3 in “[msysGit] Windows & executable bit for newly created files”
  1. Dirk SüsserottDec 15, 2011
  2. Junio C HamanoDec 15, 2011
  3. Dirk SüsserottDec 16, 2011

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.