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

[PATCH] Do not rename read-only files during a push

From
Petr Baudis <pasky@suse.cz>
Date
Sep 22, 2008, 17:20 UTC
Message-ID
<1222104029-28366-1-git-send-email-pasky@suse.cz>

Win32 does not allow renaming read-only files (at least on a Samba share), making push into a local directory to fail. Thus, defer the chmod() call in index-pack.c:final() only after move_temp_to_file() was called.

Signed-off-by: Petr Baudis <pasky@suse.cz>
---
 index-pack.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/index-pack.c b/index-pack.c
index a6e91fe..2af72d6 100644
--- a/index-pack.c
+++ b/index-pack.c
@@ -786,7 +786,6 @@ static void final(const char *final_pack_name, const char *curr_pack_name,
 		err = close(output_fd);
 		if (err)
 			die("error while closing pack file: %s", strerror(errno));
-		chmod(curr_pack_name, 0444);
 	}
 
 	if (keep_msg) {
@@ -820,8 +819,8 @@ static void final(const char *final_pack_name, const char *curr_pack_name,
 		if (move_temp_to_file(curr_pack_name, final_pack_name))
 			die("cannot store pack file");
 	}
+	chmod(final_pack_name, 0444);
 
-	chmod(curr_index_name, 0444);
 	if (final_index_name != curr_index_name) {
 		if (!final_index_name) {
 			snprintf(name, sizeof(name), "%s/pack/pack-%s.idx",
@@ -831,6 +830,7 @@ static void final(const char *final_pack_name, const char *curr_pack_name,
 		if (move_temp_to_file(curr_index_name, final_index_name))
 			die("cannot store index file");
 	}
+	chmod(final_index_name, 0444);
 
 	if (!from_stdin) {
 		printf("%s\n", sha1_to_hex(sha1));
-- 
tg: (fe33b33..) t/pack/rdonly (depends on: vanilla/master)
Next: Petr Baudis
Message 1 of 4 in “Do not rename read-only files during a push”
  1. Do not rename read-only files during a pushPetr Baudis, Sep 22, 2008
  2. Petr BaudisOct 3, 2008
  3. Shawn O. PearceOct 3, 2008
  4. Miklos VajnaOct 3, 2008

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.