aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-02-19 15:03:49 -0800
committerJunio C Hamano <junkio@cox.net>2006-02-19 22:28:04 -0800
commit2245be3e7a5a2999ebf7d38e569c98994b0cda31 (patch)
tree0bbb9eb371ba7d265b3c8a2bc246495a1391b0e4
parent7a979d99bafae3576d9480007f958eed0c9e0278 (diff)
downloadgit-2245be3e7a5a2999ebf7d38e569c98994b0cda31.tar.gz
git-2245be3e7a5a2999ebf7d38e569c98994b0cda31.tar.xz
send-pack --thin: use "thin pack" delta transfer.
The new flag loosens the usual "self containedness" requirment of packfiles, and sends deltified representation of objects when we know the other side has the base objects needed to unpack them. This would help reducing the transfer size. Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--send-pack.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/send-pack.c b/send-pack.c
index 990be3f1a..ad22da56e 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -12,6 +12,7 @@ static const char *exec = "git-receive-pack";
static int verbose = 0;
static int send_all = 0;
static int force_update = 0;
+static int use_thin_pack = 0;
static int is_zero_sha1(const unsigned char *sha1)
{
@@ -41,7 +42,10 @@ static void exec_rev_list(struct ref *refs)
int i = 0;
args[i++] = "rev-list"; /* 0 */
- args[i++] = "--objects"; /* 1 */
+ if (use_thin_pack) /* 1 */
+ args[i++] = "--objects-edge";
+ else
+ args[i++] = "--objects";
while (refs) {
char *buf = malloc(100);
if (i > 900)
@@ -361,6 +365,10 @@ int main(int argc, char **argv)
verbose = 1;
continue;
}
+ if (!strcmp(arg, "--thin")) {
+ use_thin_pack = 1;
+ continue;
+ }
usage(send_pack_usage);
}
if (!dest) {