Johan Herland schrieb: > For the two cases index-pack.c, the chmod(foo, 0444) happens AFTER the > corresponding call to move_temp_to_file(xyzzy, foo). The chmod() in > adjust_shared_perms() would thus be overridden by the chmod(foo, 0444), > which is not what we want. In both cases, I think the chmod(foo, 0444) > can safely be moved up above the call to move_temp_to_file(). Something > like this (although I'm not sure about the semantics of 'from_stdin'): > > diff --git a/index-pack.c b/index-pack.c > index 7546822..d289b6a 100644 > --- a/index-pack.c > +++ b/index-pack.c > @@ -815,6 +815,8 @@ static void final(const char *final_pack_name, const char *curr_pack_name, > } > } > > + if (from_stdin) > + chmod(final_pack_name, 0444); > if (final_pack_name != curr_pack_name) { > if (!final_pack_name) { > snprintf(name, sizeof(name), "%s/pack/pack-%s.pack", > @@ -824,9 +826,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"); > } > - if (from_stdin) > - chmod(final_pack_name, 0444); > > + chmod(final_index_name, 0444); > if (final_index_name != curr_index_name) { > if (!final_index_name) { > snprintf(name, sizeof(name), "%s/pack/pack-%s.idx", > @@ -836,7 +837,6 @@ 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)); You certainly meant to use the curr_*_name variants in the chmod lines, no? This effectively undoes 33b65030, but that is not so good: On Windows we cannot rename read-only files. -- Hannes -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html