git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] repack.c: Use move_temp_to_file() instead of rename()
@ 2014-01-27 20:24 Torsten Bögershausen
  2014-01-29 18:17 ` Junio C Hamano
  0 siblings, 1 reply; 2+ messages in thread
From: Torsten Bögershausen @ 2014-01-27 20:24 UTC (permalink / raw)
  To: git
  Cc: tboegi, zwanzig12, stefanbeller, kusmabite, Johannes.Schindelin,
	msysgit

In a1bbc6c0 a shell command "mv -f" was replaced with the rename() function.

Use move_temp_to_file() from sha1_file.c instead of rename().
This is in line with the handling of other Git internal tmp files,
and calls adjust_shared_perm()

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
---
Thanks for all comments.
I haven't been able to reproduce the problem here.
Tips and information how to reproduce it are wellcome.

I think this patch makes sense to support core.sharedRepository(),
but I haven't made a test case for the pack/idx files.

Jochen, doess this patch fix your problem, or do we need
another patch on top of this?

 builtin/repack.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/builtin/repack.c b/builtin/repack.c
index ba66c6e..4b6d663 100644
--- a/builtin/repack.c
+++ b/builtin/repack.c
@@ -271,7 +271,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
 				if (unlink(fname_old))
 					failed = 1;
 
-			if (!failed && rename(fname, fname_old)) {
+			if (!failed && move_temp_to_file(fname, fname_old)) {
 				free(fname);
 				failed = 1;
 				break;
@@ -288,7 +288,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
 			char *fname, *fname_old;
 			fname = mkpathdup("%s/%s", packdir, item->string);
 			fname_old = mkpath("%s/old-%s", packdir, item->string);
-			if (rename(fname_old, fname))
+			if (move_temp_to_file(fname_old, fname))
 				string_list_append(&rollback_failure, fname);
 			free(fname);
 		}
@@ -324,7 +324,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
 				statbuffer.st_mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH);
 				chmod(fname_old, statbuffer.st_mode);
 			}
-			if (rename(fname_old, fname))
+			if (move_temp_to_file(fname_old, fname))
 				die_errno(_("renaming '%s' failed"), fname_old);
 			free(fname);
 			free(fname_old);
-- 
1.8.5.2

-- 
-- 
*** Please reply-to-all at all times ***
*** (do not pretend to know who is subscribed and who is not) ***
*** Please avoid top-posting. ***
The msysGit Wiki is here: https://github.com/msysgit/msysgit/wiki - Github accounts are free.

You received this message because you are subscribed to the Google
Groups "msysGit" group.
To post to this group, send email to msysgit@googlegroups.com
To unsubscribe from this group, send email to
msysgit+unsubscribe@googlegroups.com
For more options, and view previous threads, visit this group at
http://groups.google.com/group/msysgit?hl=en_US?hl=en

--- 
You received this message because you are subscribed to the Google Groups "msysGit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to msysgit+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-01-29 18:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-27 20:24 [PATCH v2] repack.c: Use move_temp_to_file() instead of rename() Torsten Bögershausen
2014-01-29 18:17 ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).