Teach TransportLocal how to use our own ReceivePack implementation
commit26518f71efcdaee49b6e5cc764c8a171ab606f26
authorShawn O. Pearce <spearce@spearce.org>
Tue, 23 Dec 2008 18:34:59 +0000 (23 10:34 -0800)
committerRobin Rosenberg <robin.rosenberg@dewire.com>
Sun, 4 Jan 2009 00:01:51 +0000 (4 01:01 +0100)
tree7cee1a68b2f6a09b0d7448e43b52b44da6a17393
parentcf5f603718484931f8b1c59208066052bb203c5e
Teach TransportLocal how to use our own ReceivePack implementation

If the user hasn't reconfigured git receive-pack on this remote
then we can use our internal implementation instead of forking
out to the C implementation.  It may be faster to stay within
the JVM then to start the external process.

In-memory pipes are constructed to copy the data between the
calling client thread and the background ReceivePack worker.
In certain cases we may even be able to do a faster copy by
directly hard-linking object files and/or packs, but that
isn't traditionally how Git behaves, so we use the standard
network protocol anyway.

Since our ReceivePack process doesn't fire hooks by default
we no longer will invoke any hooks during a push to a local
repository.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
org.spearce.jgit/src/org/spearce/jgit/transport/TransportLocal.java