... or any other (operating / file) system where you cannot unlink a file that is open? When you run $ git clone git://some.where/repo/sitory.git local $ cd local $ git index-pack .git/objects/pack/pack-*.pack there is a call to write_idx_file() in builtin/index-pack.c, that feeds the correct (and existing) name of the corresponding pack idx file. The callee in pack-write.c, after sorting the list of objects contained in the pack, does this: if (!index_name) { static char tmpfile[PATH_MAX]; fd = odb_mkstemp(tmpfile, sizeof(tmpfile), "pack/tmp_idx_XXXXXX"); index_name = xstrdup(tmpfile); } else { unlink(index_name); fd = open(index_name, O_CREAT|O_EXCL|O_WRONLY, 0600); } and then writes out the pack index to the file descriptor. But index-pack uses the usual has_sha1_file() and read_sha1_file() interface to validate the "existing" objects, and is likely to have mmapped the .idx file when it called use_pack_window(). Which makes me suspect that this unlink (or the open that immediately follows) may fail on systems that do not allow unlink on inode that has still users. -- 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