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>
maint
parent
18309f4c3e
commit
8b4eb6b6cd
|
|
@ -465,7 +465,7 @@ static void write_pack_file(void)
|
||||||
char tmpname[PATH_MAX];
|
char tmpname[PATH_MAX];
|
||||||
int fd;
|
int fd;
|
||||||
snprintf(tmpname, sizeof(tmpname),
|
snprintf(tmpname, sizeof(tmpname),
|
||||||
"%s/tmp_pack_XXXXXX", get_object_directory());
|
"%s/pack/tmp_pack_XXXXXX", get_object_directory());
|
||||||
fd = xmkstemp(tmpname);
|
fd = xmkstemp(tmpname);
|
||||||
pack_tmp_name = xstrdup(tmpname);
|
pack_tmp_name = xstrdup(tmpname);
|
||||||
f = sha1fd(fd, pack_tmp_name);
|
f = sha1fd(fd, pack_tmp_name);
|
||||||
|
|
|
||||||
|
|
@ -816,7 +816,7 @@ static void start_packfile(void)
|
||||||
int pack_fd;
|
int pack_fd;
|
||||||
|
|
||||||
snprintf(tmpfile, sizeof(tmpfile),
|
snprintf(tmpfile, sizeof(tmpfile),
|
||||||
"%s/tmp_pack_XXXXXX", get_object_directory());
|
"%s/pack/tmp_pack_XXXXXX", get_object_directory());
|
||||||
pack_fd = xmkstemp(tmpfile);
|
pack_fd = xmkstemp(tmpfile);
|
||||||
p = xcalloc(1, sizeof(*p) + strlen(tmpfile) + 2);
|
p = xcalloc(1, sizeof(*p) + strlen(tmpfile) + 2);
|
||||||
strcpy(p->pack_name, tmpfile);
|
strcpy(p->pack_name, tmpfile);
|
||||||
|
|
@ -878,7 +878,7 @@ static char *create_index(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(tmpfile, sizeof(tmpfile),
|
snprintf(tmpfile, sizeof(tmpfile),
|
||||||
"%s/tmp_idx_XXXXXX", get_object_directory());
|
"%s/pack/tmp_idx_XXXXXX", get_object_directory());
|
||||||
idx_fd = xmkstemp(tmpfile);
|
idx_fd = xmkstemp(tmpfile);
|
||||||
f = sha1fd(idx_fd, tmpfile);
|
f = sha1fd(idx_fd, tmpfile);
|
||||||
sha1write(f, array, 256 * sizeof(int));
|
sha1write(f, array, 256 * sizeof(int));
|
||||||
|
|
|
||||||
|
|
@ -172,7 +172,7 @@ static char *open_pack_file(char *pack_name)
|
||||||
if (!pack_name) {
|
if (!pack_name) {
|
||||||
static char tmpfile[PATH_MAX];
|
static char tmpfile[PATH_MAX];
|
||||||
snprintf(tmpfile, sizeof(tmpfile),
|
snprintf(tmpfile, sizeof(tmpfile),
|
||||||
"%s/tmp_pack_XXXXXX", get_object_directory());
|
"%s/pack/tmp_pack_XXXXXX", get_object_directory());
|
||||||
output_fd = xmkstemp(tmpfile);
|
output_fd = xmkstemp(tmpfile);
|
||||||
pack_name = xstrdup(tmpfile);
|
pack_name = xstrdup(tmpfile);
|
||||||
} else
|
} else
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ char *write_idx_file(char *index_name, struct pack_idx_entry **objects,
|
||||||
if (!index_name) {
|
if (!index_name) {
|
||||||
static char tmpfile[PATH_MAX];
|
static char tmpfile[PATH_MAX];
|
||||||
snprintf(tmpfile, sizeof(tmpfile),
|
snprintf(tmpfile, sizeof(tmpfile),
|
||||||
"%s/tmp_idx_XXXXXX", get_object_directory());
|
"%s/pack/tmp_idx_XXXXXX", get_object_directory());
|
||||||
fd = xmkstemp(tmpfile);
|
fd = xmkstemp(tmpfile);
|
||||||
index_name = xstrdup(tmpfile);
|
index_name = xstrdup(tmpfile);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue