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

[PATCH] git-init: don't base core.filemode on the ability to chmod.

From
Martin Waitz <tali@admingilde.org>
Date
Oct 3, 2007, 23:19 UTC
Message-ID
<20071003231941.GA20800@admingilde.org>
In-Reply-To
<470388DC.4040504@viscovery.net>

At least on Linux the vfat file system honors chmod calls but does not store them permanently (as there is no on-disk format for it). So the filemode test which tries to chmod a file thinks that the file system does support file modes which will result in problems later after the file system got remounted.

Now we check both that new files are created without the executable bit and that we can actually modify it with chmod.

Signed-off-by: Martin Waitz <tali@admingilde.org>
---  8<  ---
 builtin-init-db.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)
On Wed, Oct 03, 2007 at 02:19:40PM +0200, Johannes Sixt wrote:
> On Windows, we don't get an executable bit at all. Better use both 
> heuristics, i.e. set core.filemode false if either one diagnoses an 
> unreliable x-bit.

this should work better for Windows. Previously I sent it only to Johannes and forgot to Cc the list.

diff --git a/builtin-init-db.c b/builtin-init-db.c
index 763fa55..1d92916 100644
--- a/builtin-init-db.c
+++ b/builtin-init-db.c
@@ -247,7 +247,10 @@ static int create_default_files(const char *git_dir, const char *template_path)
 	filemode = TEST_FILEMODE;
 	if (TEST_FILEMODE && !lstat(path, &st1)) {
 		struct stat st2;
-		filemode = (!chmod(path, st1.st_mode ^ S_IXUSR) &&
+		/* test that new files are not created with X bit */
+		filemode = !(st1.st_mode & S_IXUSR);
+		/* test that we can modify the X bit */
+		filemode &= (!chmod(path, st1.st_mode ^ S_IXUSR) &&
 				!lstat(path, &st2) &&
 				st1.st_mode != st2.st_mode);
 	}
-- 
1.5.3.3.8.g367dc7

-- 
Martin Waitz
Previous: Johannes SixtNext: Johannes Schindelin
Message 3 of 14 in “git-init: don't base core.filemode on the ability to chmod.”
  1. git-init: don't base core.filemode on the ability to chmod.Martin Waitz, Oct 3, 2007
  2. Johannes SixtOct 3, 2007
  3. git-init: don't base core.filemode on the ability to chmod.Martin Waitz, Oct 3, 2007
  4. Johannes SchindelinOct 3, 2007
  5. Andreas EricssonOct 4, 2007
  6. Junio C HamanoOct 4, 2007
  7. Martin WaitzOct 4, 2007
  8. Junio C HamanoOct 4, 2007
  9. Johannes SixtOct 4, 2007
  10. Martin WaitzOct 4, 2007
  11. Jan HudecOct 10, 2007
  12. Johannes SchindelinOct 4, 2007
  13. Andreas EricssonOct 4, 2007
  14. Martin WaitzOct 4, 2007

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.