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, 10:55 UTC
Message-ID
<20071003105501.GD7085@admingilde.org>

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. This will result in problems when the file system gets mounted for the next time and all the executable bits are back.

A more reliable test for file systems without filemode support is to simply check if new files are created with the executable bit set.

Signed-off-by: Martin Waitz <tali@admingilde.org>
---
 builtin-init-db.c |    5 +----
 1 files changed, 1 insertions(+), 4 deletions(-)
NOTE: this is only tested on Linux with ext3 and vfat file systems.
I do not know enough about the behaviour of other systems so there
may be regressions.
diff --git a/builtin-init-db.c b/builtin-init-db.c
index 763fa55..fbccacb 100644
--- a/builtin-init-db.c
+++ b/builtin-init-db.c
@@ -246,10 +246,7 @@ static int create_default_files(const char *git_dir, const char *template_path)
 	/* Check filemode trustability */
 	filemode = TEST_FILEMODE;
 	if (TEST_FILEMODE && !lstat(path, &st1)) {
-		struct stat st2;
-		filemode = (!chmod(path, st1.st_mode ^ S_IXUSR) &&
-				!lstat(path, &st2) &&
-				st1.st_mode != st2.st_mode);
+		filemode = !(st1.st_mode & S_IXUSR);
 	}
 	git_config_set("core.filemode", filemode ? "true" : "false");
 
-- 
1.5.3.3.8.g367dc7


-- 
Martin Waitz
Next: Johannes Sixt
Message 1 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.