Do not perform cross-directory renames when creating packs
A comment on top of create_tmpfile() describes caveats ('can have problems on various systems (FAT, NFS, Coda)') that should apply in this situation as well. This in the end did not end up solving any of my personal problems, but it might be a useful cleanup patch nevertheless. Signed-off-by: Petr Baudis <pasky@suse.cz> Acked-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
18309f4c3e
commit
8b4eb6b6cd
@ -465,7 +465,7 @@ static void write_pack_file(void)
|
||||
char tmpname[PATH_MAX];
|
||||
int fd;
|
||||
snprintf(tmpname, sizeof(tmpname),
|
||||
"%s/tmp_pack_XXXXXX", get_object_directory());
|
||||
"%s/pack/tmp_pack_XXXXXX", get_object_directory());
|
||||
fd = xmkstemp(tmpname);
|
||||
pack_tmp_name = xstrdup(tmpname);
|
||||
f = sha1fd(fd, pack_tmp_name);
|
||||
|
@ -816,7 +816,7 @@ static void start_packfile(void)
|
||||
int pack_fd;
|
||||
|
||||
snprintf(tmpfile, sizeof(tmpfile),
|
||||
"%s/tmp_pack_XXXXXX", get_object_directory());
|
||||
"%s/pack/tmp_pack_XXXXXX", get_object_directory());
|
||||
pack_fd = xmkstemp(tmpfile);
|
||||
p = xcalloc(1, sizeof(*p) + strlen(tmpfile) + 2);
|
||||
strcpy(p->pack_name, tmpfile);
|
||||
@ -878,7 +878,7 @@ static char *create_index(void)
|
||||
}
|
||||
|
||||
snprintf(tmpfile, sizeof(tmpfile),
|
||||
"%s/tmp_idx_XXXXXX", get_object_directory());
|
||||
"%s/pack/tmp_idx_XXXXXX", get_object_directory());
|
||||
idx_fd = xmkstemp(tmpfile);
|
||||
f = sha1fd(idx_fd, tmpfile);
|
||||
sha1write(f, array, 256 * sizeof(int));
|
||||
|
@ -172,7 +172,7 @@ static char *open_pack_file(char *pack_name)
|
||||
if (!pack_name) {
|
||||
static char tmpfile[PATH_MAX];
|
||||
snprintf(tmpfile, sizeof(tmpfile),
|
||||
"%s/tmp_pack_XXXXXX", get_object_directory());
|
||||
"%s/pack/tmp_pack_XXXXXX", get_object_directory());
|
||||
output_fd = xmkstemp(tmpfile);
|
||||
pack_name = xstrdup(tmpfile);
|
||||
} else
|
||||
|
@ -45,7 +45,7 @@ char *write_idx_file(char *index_name, struct pack_idx_entry **objects,
|
||||
if (!index_name) {
|
||||
static char tmpfile[PATH_MAX];
|
||||
snprintf(tmpfile, sizeof(tmpfile),
|
||||
"%s/tmp_idx_XXXXXX", get_object_directory());
|
||||
"%s/pack/tmp_idx_XXXXXX", get_object_directory());
|
||||
fd = xmkstemp(tmpfile);
|
||||
index_name = xstrdup(tmpfile);
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user