On Wed, 20 Apr 2005, Chris Mason wrote: > > Thanks for looking at this. Your new tree is faster, it gets the commit 100 > patches time down from 1m5s to 50s.
It really _shouldn't_ be faster. It still does the compression, and throws the end result away. To actually go faster, it _should_ need this patch. Untested. See if it works.. Linus --- sha1_file.c: 40c00b77d0e52b31dda1696f10026fe6f92bc082 --- a/sha1_file.c +++ b/sha1_file.c @@ -173,12 +173,27 @@ int write_sha1_file(char *buf, unsigned z_stream stream; unsigned char sha1[20]; SHA_CTX c; + char *filename; + int fd; /* Sha1.. */ SHA1_Init(&c); SHA1_Update(&c, buf, len); SHA1_Final(sha1, &c); + filename = sha1_file_name(sha1); + fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0666); + if (fd < 0) { + if (errno != EEXIST) + return -1; + + /* + * We might do collision checking here, but we'd need to + * uncompress the old file and check it. Later. + */ + return 0; + } + /* Set it up */ memset(&stream, 0, sizeof(stream)); deflateInit(&stream, Z_BEST_COMPRESSION); @@ -195,8 +210,10 @@ int write_sha1_file(char *buf, unsigned deflateEnd(&stream); size = stream.total_out; - if (write_sha1_buffer(sha1, compressed, size) < 0) - return -1; + if (write(fd, compressed, size) != size) + die("unable to write file"); + close(fd); + if (returnsha1) memcpy(returnsha1, sha1, 20); return 0; - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html