* [PATCH 1/3] Add support for external programs for handling native fetches
@ 2009-07-25 17:51 Daniel Barkalow
2009-07-25 18:19 ` Johannes Schindelin
` (2 more replies)
0 siblings, 3 replies; 13+ messages in thread
From: Daniel Barkalow @ 2009-07-25 17:51 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Linus Torvalds
transport_get() can call transport_shim_init() to have list and
fetch-ref operations handled by running a separate program as:
git shim-<something> <remote> [<url>]
This program then accepts, on its stdin, "list" and "fetch <hex>
<name>" commands; the former prints out a list of available refs and
either their hashes or what they are symreefs to, while the latter
fetches them into the local object database and prints a newline when done.
Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
---
This is similar to, but different from, my git-vcs-* stuff; this one
expects the helper to be able to look up sha1s for refs efficiently, and
to be able to fetch objects directly into the local object database
without fast-import. On the otherhand, it should be sufficiently general
to allow arbitrary methods for moving the data around.
Documentation/git-shim.txt | 37 ++++++++++++
Makefile | 1 +
transport-shim.c | 140 ++++++++++++++++++++++++++++++++++++++++++++
transport.h | 3 +
4 files changed, 181 insertions(+), 0 deletions(-)
create mode 100644 Documentation/git-shim.txt
create mode 100644 transport-shim.c
diff --git a/Documentation/git-shim.txt b/Documentation/git-shim.txt
new file mode 100644
index 0000000..26a611f
--- /dev/null
+++ b/Documentation/git-shim.txt
@@ -0,0 +1,37 @@
+git-shim(1)
+============
+
+NAME
+----
+git-shim - Helper programs for interoperation with remote git
+
+SYNOPSIS
+--------
+'git shim-<transport>' <remote>
+
+DESCRIPTION
+-----------
+
+These programs are normally not used directly by end users, but are
+invoked by various git programs that interact with remote repositories
+when the repository they would operate on will be accessed using
+transport code not linked into the main git binary.
+
+COMMANDS
+--------
+
+Commands are given by the caller on the helper's standard input, one per line.
+
+'list'::
+ Outputs the names of refs followed by the hex of their values
+ or "@<name>" for symrefs, one per line. After the complete
+ list, outputs a blank line.
+
+'fetch' ref::
+ Fetches the given ref, writing the necessary objects to the
+ database. Outputs a blank line when the fetch is complete.
++
+If a fatal error occurs, the program writes the error message to
+stderr and exits. The caller should expect that a suitable error
+message has been printed if the child closes the connection without
+completing a valid response for the current command.
diff --git a/Makefile b/Makefile
index bde27ed..01efc73 100644
--- a/Makefile
+++ b/Makefile
@@ -549,6 +549,7 @@ LIB_OBJS += symlinks.o
LIB_OBJS += tag.o
LIB_OBJS += trace.o
LIB_OBJS += transport.o
+LIB_OBJS += transport-shim.o
LIB_OBJS += tree-diff.o
LIB_OBJS += tree.o
LIB_OBJS += tree-walk.o
diff --git a/transport-shim.c b/transport-shim.c
new file mode 100644
index 0000000..3fc6abf
--- /dev/null
+++ b/transport-shim.c
@@ -0,0 +1,140 @@
+#include "cache.h"
+#include "transport.h"
+
+#include "run-command.h"
+#include "commit.h"
+#include "diff.h"
+#include "revision.h"
+
+struct shim_data
+{
+ const char *name;
+ struct child_process *shim;
+};
+
+static struct child_process *get_shim(struct transport *transport)
+{
+ struct shim_data *data = transport->data;
+ if (!data->shim) {
+ struct strbuf buf = STRBUF_INIT;
+ struct child_process *shim = xcalloc(1, sizeof(*shim));
+ shim->in = -1;
+ shim->out = -1;
+ shim->err = 0;
+ shim->argv = xcalloc(4, sizeof(*shim->argv));
+ strbuf_addf(&buf, "shim-%s", data->name);
+ shim->argv[0] = buf.buf;
+ shim->argv[1] = transport->remote->name;
+ shim->argv[2] = transport->url;
+ shim->git_cmd = 1;
+ start_command(shim);
+ data->shim = shim;
+ }
+ return data->shim;
+}
+
+static int disconnect_shim(struct transport *transport)
+{
+ struct shim_data *data = transport->data;
+ if (data->shim) {
+ write(data->shim->in, "\n", 1);
+ close(data->shim->in);
+ finish_command(data->shim);
+ free(data->shim);
+ transport->data = NULL;
+ }
+ return 0;
+}
+
+static int fetch_refs_via_shim(struct transport *transport,
+ int nr_heads, const struct ref **to_fetch)
+{
+ struct child_process *shim;
+ const struct ref *posn;
+ struct strbuf buf = STRBUF_INIT;
+ int i, count;
+ FILE *file;
+
+ count = 0;
+ for (i = 0; i < nr_heads; i++) {
+ posn = to_fetch[i];
+ if (posn->status & REF_STATUS_UPTODATE)
+ continue;
+ count++;
+ }
+
+ if (count) {
+ shim = get_shim(transport);
+ for (i = 0; i < nr_heads; i++) {
+ posn = to_fetch[i];
+ if (posn->status & REF_STATUS_UPTODATE)
+ continue;
+ write(shim->in, "fetch ", 6);
+ write(shim->in, sha1_to_hex(posn->old_sha1), 40);
+ write(shim->in, " ", 1);
+ write(shim->in, posn->name, strlen(posn->name));
+ write(shim->in, "\n", 1);
+ }
+ file = fdopen(shim->out, "r");
+ while (count) {
+ if (strbuf_getline(&buf, file, '\n') == EOF)
+ exit(128); // child died, message supplied already
+
+ count--;
+ }
+ }
+ return 0;
+}
+
+static struct ref *get_refs_via_shim(struct transport *transport, int for_push)
+{
+ struct child_process *shim;
+ struct ref *ret = NULL;
+ struct ref **end = &ret;
+ struct ref *posn;
+ struct strbuf buf = STRBUF_INIT;
+ FILE *file;
+
+ shim = get_shim(transport);
+ write(shim->in, "list\n", 5);
+
+ file = fdopen(shim->out, "r");
+ while (1) {
+ char *eon;
+ if (strbuf_getline(&buf, file, '\n') == EOF)
+ exit(128); // child died, message supplied already
+
+ if (!*buf.buf)
+ break;
+
+ eon = strchr(buf.buf, ' ');
+ if (eon)
+ *eon = '\0';
+ *end = alloc_ref(buf.buf);
+ if (eon) {
+ if (eon[1] == '@')
+ (*end)->symref = xstrdup(eon + 2);
+ else
+ get_sha1_hex(eon + 1, (*end)->old_sha1);
+ }
+ end = &((*end)->next);
+ strbuf_reset(&buf);
+ }
+ strbuf_release(&buf);
+
+ for (posn = ret; posn; posn = posn->next)
+ resolve_remote_symref(posn, ret);
+
+ return ret;
+}
+
+void transport_shim_init(struct transport *transport, const char *name)
+{
+ struct shim_data *data = xmalloc(sizeof(*data));
+ data->shim = NULL;
+ data->name = name;
+ transport->data = data;
+ transport->get_refs_list = get_refs_via_shim;
+ transport->fetch = fetch_refs_via_shim;
+ transport->disconnect = disconnect_shim;
+}
diff --git a/transport.h b/transport.h
index 51b5397..01f650d 100644
--- a/transport.h
+++ b/transport.h
@@ -77,4 +77,7 @@ void transport_unlock_pack(struct transport *transport);
int transport_disconnect(struct transport *transport);
char *transport_anonymize_url(const char *url);
+/* Transport methods defined outside transport.c */
+void transport_shim_init(struct transport *transport, const char *name);
+
#endif
--
1.6.3.2.425.g3dedc
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] Add support for external programs for handling native fetches
2009-07-25 17:51 [PATCH 1/3] Add support for external programs for handling native fetches Daniel Barkalow
@ 2009-07-25 18:19 ` Johannes Schindelin
2009-07-25 18:25 ` Linus Torvalds
2009-07-25 18:45 ` Shawn O. Pearce
2 siblings, 0 replies; 13+ messages in thread
From: Johannes Schindelin @ 2009-07-25 18:19 UTC (permalink / raw)
To: Daniel Barkalow; +Cc: Junio C Hamano, git, Linus Torvalds
Hi,
On Sat, 25 Jul 2009, Daniel Barkalow wrote:
> transport_get() can call transport_shim_init() to have list and
> fetch-ref operations handled by running a separate program as:
>
> git shim-<something> <remote> [<url>]
>
> This program then accepts, on its stdin, "list" and "fetch <hex>
> <name>" commands; the former prints out a list of available refs and
> either their hashes or what they are symreefs to, while the latter
> fetches them into the local object database and prints a newline when done.
>
> Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
> ---
> This is similar to, but different from, my git-vcs-* stuff; this one
> expects the helper to be able to look up sha1s for refs efficiently, and
> to be able to fetch objects directly into the local object database
> without fast-import. On the otherhand, it should be sufficiently general
> to allow arbitrary methods for moving the data around.
I wonder if this cannot be integrated into the git-vcs stuff; after all,
they do pretty much the same things, except that the vcs helpers are
pretty dumb, and the shim helpers are not as dumb.
I could imagine that the name of the helper could reveal its capability to
act as a shim helper: git-vcs-shim-http
Ciao,
Dscho
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] Add support for external programs for handling native fetches
2009-07-25 17:51 [PATCH 1/3] Add support for external programs for handling native fetches Daniel Barkalow
2009-07-25 18:19 ` Johannes Schindelin
@ 2009-07-25 18:25 ` Linus Torvalds
2009-07-25 19:09 ` Linus Torvalds
` (3 more replies)
2009-07-25 18:45 ` Shawn O. Pearce
2 siblings, 4 replies; 13+ messages in thread
From: Linus Torvalds @ 2009-07-25 18:25 UTC (permalink / raw)
To: Daniel Barkalow; +Cc: Junio C Hamano, git
On Sat, 25 Jul 2009, Daniel Barkalow wrote:
>
> This is similar to, but different from, my git-vcs-* stuff; this one
> expects the helper to be able to look up sha1s for refs efficiently, and
> to be able to fetch objects directly into the local object database
> without fast-import. On the otherhand, it should be sufficiently general
> to allow arbitrary methods for moving the data around.
Wonderful.
I tested the series, and now there is (not surprisingly, but I made sure
to test anyway) no difference what-so-ever between NO_CURL and default,
and 'ldd' looks nice.
Plus it looks like that whole "shim" thing is a good idea in general, in
that it allows a much more flexible model for fetching/pushing.
So a very big Acked-by: from me for the series. I didn't test that http:
works with it, but I don't personally even care, so I'd ack it even
without that ;)
Btw, some real timing numbers for 'time make -j64 test':
- before:
real 1m16.070s
user 2m47.046s
sys 2m34.698s
- after:
real 0m58.851s
user 1m57.087s
sys 1m44.671s
so that's actually a real-world example of the whole 'scripting
performance'. Not an insignificant speedup on my machine (with an
obligatory "nyaah, nyaah, I can do the git test-suite under a minute" just
to rub peoples noses in the fact that my desktop computer is disgustingly
fast).
That's an almost 30% performance improvement, despite the fact that parts
of the test suite didn't actually change (shell costs are the same, the
svn tests are quite perl-intensive etc).
Linus
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] Add support for external programs for handling native fetches
2009-07-25 17:51 [PATCH 1/3] Add support for external programs for handling native fetches Daniel Barkalow
2009-07-25 18:19 ` Johannes Schindelin
2009-07-25 18:25 ` Linus Torvalds
@ 2009-07-25 18:45 ` Shawn O. Pearce
2009-07-25 19:09 ` Daniel Barkalow
2 siblings, 1 reply; 13+ messages in thread
From: Shawn O. Pearce @ 2009-07-25 18:45 UTC (permalink / raw)
To: Daniel Barkalow; +Cc: Junio C Hamano, git, Linus Torvalds
Daniel Barkalow <barkalow@iabervon.org> wrote:
> +Commands are given by the caller on the helper's standard input, one per line.
> +
> +'list'::
> + Outputs the names of refs followed by the hex of their values
> + or "@<name>" for symrefs, one per line. After the complete
> + list, outputs a blank line.
I hate to be a nit, but why this format and not the one that is
produced by `git ls-remote` and the native protocol? I know its
pretty arbitrary either way, but since we already have a history
of using "SHA1 ref\n" why not continue that tradition here?
--
Shawn.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] Add support for external programs for handling native fetches
2009-07-25 18:45 ` Shawn O. Pearce
@ 2009-07-25 19:09 ` Daniel Barkalow
0 siblings, 0 replies; 13+ messages in thread
From: Daniel Barkalow @ 2009-07-25 19:09 UTC (permalink / raw)
To: Shawn O. Pearce; +Cc: Junio C Hamano, git, Linus Torvalds
On Sat, 25 Jul 2009, Shawn O. Pearce wrote:
> Daniel Barkalow <barkalow@iabervon.org> wrote:
> > +Commands are given by the caller on the helper's standard input, one per line.
> > +
> > +'list'::
> > + Outputs the names of refs followed by the hex of their values
> > + or "@<name>" for symrefs, one per line. After the complete
> > + list, outputs a blank line.
>
> I hate to be a nit, but why this format and not the one that is
> produced by `git ls-remote` and the native protocol? I know its
> pretty arbitrary either way, but since we already have a history
> of using "SHA1 ref\n" why not continue that tradition here?
In the VCS protocol, the SHA1 is generally not known when simply listing
refs, so I didn't have a useless initial field in that protocol; I just
inherited having the line start with the name for this protocol.
In any case, I want to be able to support symrefs, so an extension to the
tradition is required, but putting @<dest> before the name instead of
after is easy enough.
-Daniel
*This .sig left intentionally blank*
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] Add support for external programs for handling native fetches
2009-07-25 18:25 ` Linus Torvalds
@ 2009-07-25 19:09 ` Linus Torvalds
2009-07-25 21:08 ` Steven Noonan
` (2 subsequent siblings)
3 siblings, 0 replies; 13+ messages in thread
From: Linus Torvalds @ 2009-07-25 19:09 UTC (permalink / raw)
To: Daniel Barkalow; +Cc: Junio C Hamano, git
On Sat, 25 Jul 2009, Linus Torvalds wrote:
>
> Btw, some real timing numbers for 'time make -j64 test':
>
> - before:
> real 1m16.070s
> user 2m47.046s
> sys 2m34.698s
>
> - after:
> real 0m58.851s
> user 1m57.087s
> sys 1m44.671s
>
> so that's actually a real-world example of the whole 'scripting
> performance'. Not an insignificant speedup on my machine (with an
> obligatory "nyaah, nyaah, I can do the git test-suite under a minute" just
> to rub peoples noses in the fact that my desktop computer is disgustingly
> fast).
>
> That's an almost 30% performance improvement, despite the fact that parts
> of the test suite didn't actually change (shell costs are the same, the
> svn tests are quite perl-intensive etc).
Just in case people wonder _why_, here is a profile from before and after.
Note how big a deal the page faulting, unmapping (TLB flushes etc), and
fork() is (copy_page_range()).
And notice how the biggest user space cost - even after the change - is
do_lookup_x() in the dynamic loader. But before the change it was the very
top entry, and you had things like strcmp and _dl_relocate_object pretty
high too. Not to mention that you got just a lot _more_ munmap's and page
faults:
- before:
4.51% git /lib64/ld-2.10.1.so [.] do_lookup_x
3.17% git [kernel] [k] unmap_vmas
2.75% git [kernel] [k] page_fault
1.48% git [kernel] [k] copy_page_c
1.43% git /lib64/ld-2.10.1.so [.] strcmp
1.30% git [kernel] [k] _spin_lock
1.12% git /lib64/ld-2.10.1.so [.] _dl_relocate_object
0.99% git-svn [kernel] [k] copy_page_range
0.99% git [kernel] [k] kmem_cache_alloc
0.97% git [kernel] [k] get_page_from_freelist
0.92% git [kernel] [k] copy_page_range
0.88% git [kernel] [k] clear_page_c
0.80% git [kernel] [k] find_vma
0.79% git /lib64/ld-2.10.1.so [.] _dl_lookup_symbol_x
0.68% git [kernel] [k] handle_mm_fault
0.68% git /lib64/libc-2.10.1.so [.] _int_malloc
0.63% git /bin/bash 0x00000000046e96
0.57% git /lib64/libc-2.10.1.so [.] __GI__dl_addr
0.51% git [kernel] [k] release_pages
- after:
3.02% git [kernel] [k] unmap_vmas
2.74% git [kernel] [k] page_fault
1.32% git [kernel] [k] copy_page_c
1.23% git [kernel] [k] _spin_lock
1.17% git-svn [kernel] [k] copy_page_range
1.06% git [kernel] [k] copy_page_range
0.99% git /lib64/ld-2.10.1.so [.] do_lookup_x
0.95% git /lib64/libc-2.10.1.so [.] _int_malloc
0.83% git [kernel] [k] get_page_from_freelist
0.83% git /lib64/libc-2.10.1.so [.] __GI__dl_addr
0.82% git [kernel] [k] clear_page_c
0.70% git [kernel] [k] kmem_cache_alloc
0.65% git [kernel] [k] handle_mm_fault
0.62% git /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so [.] Perl_yyparse
0.60% git-svn /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so [.] Perl_yyparse
0.59% git /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so [.] Perl_yylex
0.58% git [kernel] [k] release_pages
0.58% git [kernel] [k] page_remove_rmap
0.57% git /bin/bash 0x0000000004c2df
0.55% git-svn /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so [.] Perl_yylex
0.52% git [kernel] [k] find_vma
0.52% git [kernel] [k] strnlen_user
0.52% git-svn /lib64/libc-2.10.1.so [.] _int_malloc
Interesting to see how after the change, perl is now looking like a fairly
big part.
The big picture (not per-function, but per-program split by code segment:
kernel, executable, library) shows the same thing. git does have a high
kernel component in general, but something like "make test" makes it even
bigger, since most of the costs are really forking a _lot_ of git
programs:
- before:
33.23% git [kernel]
11.93% git /lib64/ld-2.10.1.so
7.55% git-svn /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so
6.82% git /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so
4.83% git /lib64/libc-2.10.1.so
3.28% git-svn [kernel]
1.82% sh [kernel]
1.57% git /bin/bash
1.52% perl /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so
1.37% git-svn /lib64/libc-2.10.1.so
1.28% tput [kernel]
1.26% git-filter-bran [kernel]
0.98% rm [kernel]
0.97% sed [kernel]
0.82% git-rebase--int [kernel]
0.71% git-bisect [kernel]
0.64% git ./git
0.62% grep [kernel]
0.55% cat [kernel]
- after:
30.30% git [kernel]
10.62% git-svn /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so
9.77% git /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so
6.31% git /lib64/libc-2.10.1.so
4.31% git-svn [kernel]
3.49% git /lib64/ld-2.10.1.so
2.17% git /bin/bash
2.10% perl /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so
1.93% git-svn /lib64/libc-2.10.1.so
1.90% sh [kernel]
1.40% git-filter-bran [kernel]
1.24% tput [kernel]
0.95% sed [kernel]
0.91% rm [kernel]
0.89% git ./git
0.84% git-rebase--int [kernel]
0.82% git-filter-bran /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so
0.75% sh /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so
0.59% sh /lib64/libc-2.10.1.so
0.57% grep [kernel]
0.57% git-bisect [kernel]
0.55% cat [kernel]
Note how the biggest user-space component used to be the dynamic loader.
Now it's down there way below the perl overhead.
And notice how while the dynamic loader was "just" 11% of all overhead
(and is still 3.5% after the fix), the reason performance has improved by
30% is that the dynamic loader has a _huge_ kernel overhead due to the
whole mmap/munmap/mprotect/page-fault-to-COW/etc code.
Linus
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] Add support for external programs for handling native fetches
2009-07-25 18:25 ` Linus Torvalds
2009-07-25 19:09 ` Linus Torvalds
@ 2009-07-25 21:08 ` Steven Noonan
2009-07-25 21:14 ` Linus Torvalds
2009-07-26 6:02 ` Junio C Hamano
2009-07-26 6:33 ` Junio C Hamano
3 siblings, 1 reply; 13+ messages in thread
From: Steven Noonan @ 2009-07-25 21:08 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Daniel Barkalow, Junio C Hamano, git
On Sat, Jul 25, 2009 at 12:25 PM, Linus
Torvalds<torvalds@linux-foundation.org> wrote:
>
>
> On Sat, 25 Jul 2009, Daniel Barkalow wrote:
>>
>> This is similar to, but different from, my git-vcs-* stuff; this one
>> expects the helper to be able to look up sha1s for refs efficiently, and
>> to be able to fetch objects directly into the local object database
>> without fast-import. On the otherhand, it should be sufficiently general
>> to allow arbitrary methods for moving the data around.
>
> Wonderful.
>
> I tested the series, and now there is (not surprisingly, but I made sure
> to test anyway) no difference what-so-ever between NO_CURL and default,
> and 'ldd' looks nice.
>
> Plus it looks like that whole "shim" thing is a good idea in general, in
> that it allows a much more flexible model for fetching/pushing.
>
> So a very big Acked-by: from me for the series. I didn't test that http:
> works with it, but I don't personally even care, so I'd ack it even
> without that ;)
>
> Btw, some real timing numbers for 'time make -j64 test':
>
> - before:
> real 1m16.070s
> user 2m47.046s
> sys 2m34.698s
>
> - after:
> real 0m58.851s
> user 1m57.087s
> sys 1m44.671s
>
> so that's actually a real-world example of the whole 'scripting
> performance'. Not an insignificant speedup on my machine (with an
> obligatory "nyaah, nyaah, I can do the git test-suite under a minute" just
> to rub peoples noses in the fact that my desktop computer is disgustingly
> fast).
But more importantly, how fast can your machine compile the kernel?
(without ccache or any "cheats" like that, of course)
>
> That's an almost 30% performance improvement, despite the fact that parts
> of the test suite didn't actually change (shell costs are the same, the
> svn tests are quite perl-intensive etc).
>
> Linus
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] Add support for external programs for handling native fetches
2009-07-25 21:08 ` Steven Noonan
@ 2009-07-25 21:14 ` Linus Torvalds
0 siblings, 0 replies; 13+ messages in thread
From: Linus Torvalds @ 2009-07-25 21:14 UTC (permalink / raw)
To: Steven Noonan; +Cc: Daniel Barkalow, Junio C Hamano, git
On Sat, 25 Jul 2009, Steven Noonan wrote:
>
> But more importantly, how fast can your machine compile the kernel?
> (without ccache or any "cheats" like that, of course)
Without ccache? One minute. With ccache? 16 seconds.
Linus
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] Add support for external programs for handling native fetches
2009-07-25 18:25 ` Linus Torvalds
2009-07-25 19:09 ` Linus Torvalds
2009-07-25 21:08 ` Steven Noonan
@ 2009-07-26 6:02 ` Junio C Hamano
2009-07-26 16:27 ` Linus Torvalds
2009-07-26 6:33 ` Junio C Hamano
3 siblings, 1 reply; 13+ messages in thread
From: Junio C Hamano @ 2009-07-26 6:02 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Daniel Barkalow, git
Linus Torvalds <torvalds@linux-foundation.org> writes:
> ... Not an insignificant speedup on my machine (with an
> obligatory "nyaah, nyaah, I can do the git test-suite under a minute" just
> to rub peoples noses in the fact that my desktop computer is disgustingly
> fast).
With git-svn tests?
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] Add support for external programs for handling native fetches
2009-07-25 18:25 ` Linus Torvalds
` (2 preceding siblings ...)
2009-07-26 6:02 ` Junio C Hamano
@ 2009-07-26 6:33 ` Junio C Hamano
2009-07-26 16:06 ` Linus Torvalds
3 siblings, 1 reply; 13+ messages in thread
From: Junio C Hamano @ 2009-07-26 6:33 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Daniel Barkalow, Junio C Hamano, git
Linus Torvalds <torvalds@linux-foundation.org> writes:
> So a very big Acked-by: from me for the series. I didn't test that http:
> works with it, but I don't personally even care, so I'd ack it even
> without that ;)
Heh, "git ls-remote http://..." segfaulting for me is not a very good
sign, but I like the concept.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] Add support for external programs for handling native fetches
2009-07-26 6:33 ` Junio C Hamano
@ 2009-07-26 16:06 ` Linus Torvalds
2009-07-26 19:05 ` Junio C Hamano
0 siblings, 1 reply; 13+ messages in thread
From: Linus Torvalds @ 2009-07-26 16:06 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Daniel Barkalow, git
On Sat, 25 Jul 2009, Junio C Hamano wrote:
> Linus Torvalds <torvalds@linux-foundation.org> writes:
>
> > So a very big Acked-by: from me for the series. I didn't test that http:
> > works with it, but I don't personally even care, so I'd ack it even
> > without that ;)
>
> Heh, "git ls-remote http://..." segfaulting for me is not a very good
> sign, but I like the concept.
Hmm. Just tested. Works for me (git and kernel repos on kernel.org). Which
repo did you test against?
Linus
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] Add support for external programs for handling native fetches
2009-07-26 6:02 ` Junio C Hamano
@ 2009-07-26 16:27 ` Linus Torvalds
0 siblings, 0 replies; 13+ messages in thread
From: Linus Torvalds @ 2009-07-26 16:27 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Daniel Barkalow, git
On Sat, 25 Jul 2009, Junio C Hamano wrote:
> Linus Torvalds <torvalds@linux-foundation.org> writes:
>
> > ... Not an insignificant speedup on my machine (with an
> > obligatory "nyaah, nyaah, I can do the git test-suite under a minute" just
> > to rub peoples noses in the fact that my desktop computer is disgustingly
> > fast).
>
> With git-svn tests?
Yup. There's a few tests I'm skipping, but not many:
* skipping test, network testing disabled by default
* skipping test, network testing disabled by default
* skipping svnserve test. (set $SVNSERVE_PORT to enable)
* skipping svn-info test (SVN version: 1.6.1 not supported)
* skipping svnserve test. (set $SVNSERVE_PORT to enable)
* skipping git-cvsserver tests, Perl SQLite interface unavailable
* skipping git-cvsserver tests, Perl SQLite interface unavailable
* skipping cvsimport tests, cvsps not found
(those first two ones are the GIT_TEST_HTTPD ones).
Linus
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] Add support for external programs for handling native fetches
2009-07-26 16:06 ` Linus Torvalds
@ 2009-07-26 19:05 ` Junio C Hamano
0 siblings, 0 replies; 13+ messages in thread
From: Junio C Hamano @ 2009-07-26 19:05 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Daniel Barkalow, git
Linus Torvalds <torvalds@linux-foundation.org> writes:
> On Sat, 25 Jul 2009, Junio C Hamano wrote:
>
>> Linus Torvalds <torvalds@linux-foundation.org> writes:
>>
>> > So a very big Acked-by: from me for the series. I didn't test that http:
>> > works with it, but I don't personally even care, so I'd ack it even
>> > without that ;)
>>
>> Heh, "git ls-remote http://..." segfaulting for me is not a very good
>> sign, but I like the concept.
>
> Hmm. Just tested. Works for me (git and kernel repos on kernel.org).
Interesting.
The version from 'pu' seems to work just fine (and I just double checked
that ldd says I do not link the main git binary with cURL library with
that version). I saw the breakage when running the version from the topic
branch itself, but I do not seem to be able to reproduce it anymore.
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2009-07-26 19:05 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-25 17:51 [PATCH 1/3] Add support for external programs for handling native fetches Daniel Barkalow
2009-07-25 18:19 ` Johannes Schindelin
2009-07-25 18:25 ` Linus Torvalds
2009-07-25 19:09 ` Linus Torvalds
2009-07-25 21:08 ` Steven Noonan
2009-07-25 21:14 ` Linus Torvalds
2009-07-26 6:02 ` Junio C Hamano
2009-07-26 16:27 ` Linus Torvalds
2009-07-26 6:33 ` Junio C Hamano
2009-07-26 16:06 ` Linus Torvalds
2009-07-26 19:05 ` Junio C Hamano
2009-07-25 18:45 ` Shawn O. Pearce
2009-07-25 19:09 ` Daniel Barkalow
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).