summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c06793a)
raw | patch | inline | side by side (parent: c06793a)
author | Mark Levedahl <mdl123@verizon.net> | |
Fri, 10 Aug 2007 22:29:49 +0000 (18:29 -0400) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Sat, 11 Aug 2007 05:20:35 +0000 (22:20 -0700) |
git-bundle create on cygwin was nearly unusable due to 1 character
at a time (unbuffered) reading from an exec'ed process. Fix by using
fdopen to get a buffered stream.
Results for "time git bundle create test.bdl v1.0.3..v1.5.2" are:
before this patch:
cygwin linux
real 1m38.828s 0m3.578s
user 0m12.122s 0m2.896s
sys 1m28.215s 0m0.692s
after this patch:
real 0m3.688s 0m2.835s
user 0m3.075s 0m2.731s
sys 0m1.075s 0m0.149s
Signed-off-by: Mark Levedahl <mdl123@verizon.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
at a time (unbuffered) reading from an exec'ed process. Fix by using
fdopen to get a buffered stream.
Results for "time git bundle create test.bdl v1.0.3..v1.5.2" are:
before this patch:
cygwin linux
real 1m38.828s 0m3.578s
user 0m12.122s 0m2.896s
sys 1m28.215s 0m0.692s
after this patch:
real 0m3.688s 0m2.835s
user 0m3.075s 0m2.731s
sys 0m1.075s 0m0.149s
Signed-off-by: Mark Levedahl <mdl123@verizon.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-bundle.c | patch | blob | history |
diff --git a/builtin-bundle.c b/builtin-bundle.c
index 2d0e106c08ce7b67a43c2cda1ebc9765eacfb3d9..b954213f702a5ec8ee0cadf6cb79295272b73ca5 100644 (file)
--- a/builtin-bundle.c
+++ b/builtin-bundle.c
char buffer[1024];
struct rev_info revs;
struct child_process rls;
+ FILE *rls_fout;
/*
* NEEDSWORK: this should use something like lock-file
rls.git_cmd = 1;
if (start_command(&rls))
return -1;
- while ((i = read_string(rls.out, buffer, sizeof(buffer))) > 0) {
+ rls_fout = fdopen(rls.out, "r");
+ while (fgets(buffer, sizeof(buffer), rls_fout)) {
unsigned char sha1[20];
if (buffer[0] == '-') {
- write_or_die(bundle_fd, buffer, i);
+ write_or_die(bundle_fd, buffer, strlen(buffer));
if (!get_sha1_hex(buffer + 1, sha1)) {
struct object *object = parse_object(sha1);
object->flags |= UNINTERESTING;
object->flags |= SHOWN;
}
}
+ fclose(rls_fout);
if (finish_command(&rls))
return error("rev-list died");