Made the changes you specify below & re-ran "make install". Attached is the log from the latest strace. Incidentally, I've tried this on two other machines at work with the same results. The steps to reproduce are annoyingly simple: download cygwin installer & execute (accept all defaults), select the packages specified for the binary windows install on the git wiki, try to create a git repository and add files. Frustrating - especially since my desktop at my last job worked just fine. Paul On Jan 16, 2008 4:45 PM, Alex Riesen <raa.lkml@xxxxxxxxx> wrote: SNIP > > Could you locate move_temp_to_file and make it unconditionally rename > the tempfile into target sha1 file? It should become something like that: > > int move_temp_to_file(const char *tmpfile, const char *filename) > { > int ret = link_temp_to_file(tmpfile, filename); > > /* > * Coda hack - coda doesn't like cross-directory links, > * so we fall back to a rename, which will mean that it > * won't be able to check collisions, but that's not a > * big deal. > * > * The same holds for FAT formatted media. > * > * When this succeeds, we just return 0. We have nothing > * left to unlink. > */ > if (!rename(tmpfile, filename)) > return 0; > ret = errno; > unlink(tmpfile); > if (ret) { > if (ret != EEXIST) { > return error("unable to write sha1 filename %s: %s\n", filename, strerror(ret)); > } > /* FIXME!!! Collision check here ? */ > return error("failed to write sha1 filename %s: %s\n", filename, strerror(ret)); > } > > return 0; > } > > Does someone know, why this function seem to return 0 (success) on > something which looks like an SHA1 collision? And destroy the > tempfile, even though it is not moved anywhere. > > -- Computer Science is no more about computers than astronomy is about telescopes. --- Edsger W. Dijkstra Paul Umbers MSc MBCS MIAP paul.umbers@xxxxxxxxx
Attachment:
log3.tar.gz
Description: GNU Zip compressed data