have index-pack create .keep file more carefully
If by chance we receive a pack which content (list of objects) matches another pack that we already have, and if that pack is marked with a .keep file, then we should not overwrite it. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
da093d3750
commit
9ca4a201ea
@ -788,15 +788,18 @@ static void final(const char *final_pack_name, const char *curr_pack_name,
|
|||||||
get_object_directory(), sha1_to_hex(sha1));
|
get_object_directory(), sha1_to_hex(sha1));
|
||||||
keep_name = name;
|
keep_name = name;
|
||||||
}
|
}
|
||||||
keep_fd = open(keep_name, O_RDWR | O_CREAT, 0600);
|
keep_fd = open(keep_name, O_RDWR|O_CREAT|O_EXCL, 0600);
|
||||||
if (keep_fd < 0)
|
if (keep_fd < 0) {
|
||||||
|
if (errno != EEXIST)
|
||||||
die("cannot write keep file");
|
die("cannot write keep file");
|
||||||
|
} else {
|
||||||
if (keep_msg_len > 0) {
|
if (keep_msg_len > 0) {
|
||||||
write_or_die(keep_fd, keep_msg, keep_msg_len);
|
write_or_die(keep_fd, keep_msg, keep_msg_len);
|
||||||
write_or_die(keep_fd, "\n", 1);
|
write_or_die(keep_fd, "\n", 1);
|
||||||
}
|
}
|
||||||
close(keep_fd);
|
close(keep_fd);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (final_pack_name != curr_pack_name) {
|
if (final_pack_name != curr_pack_name) {
|
||||||
if (!final_pack_name) {
|
if (!final_pack_name) {
|
||||||
|
Loading…
Reference in New Issue
Block a user