Merge branches 'jc/rev-list' and 'jc/pack-thin'

* jc/rev-list:
  rev-list --objects: use full pathname to help hashing.
  rev-list --objects-edge: remove duplicated edge commit output.
  rev-list --objects-edge

* jc/pack-thin:
  pack-objects: hash basename and direname a bit differently.
  pack-objects: allow "thin" packs to exceed depth limits
  pack-objects: use full pathname to help hashing with "thin" pack.
  pack-objects: thin pack micro-optimization.
  Use thin pack transfer in "git fetch".
  Add git-push --thin.
  send-pack --thin: use "thin pack" delta transfer.
  Thin pack - create packfile with missing delta base.

Conflicts:

	pack-objects.c (taking "next")
	send-pack.c (taking "next")
This commit is contained in:
Junio C Hamano
2006-02-24 21:55:23 -08:00
8 changed files with 446 additions and 137 deletions

View File

@ -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)
{
@ -42,7 +43,10 @@ static void exec_rev_list(struct ref *refs)
int i = 0, j;
args[i++] = "rev-list"; /* 0 */
args[i++] = "--objects"; /* 1 */
if (use_thin_pack) /* 1 */
args[i++] = "--objects-edge";
else
args[i++] = "--objects";
/* First send the ones we care about most */
for (ref = refs; ref; ref = ref->next) {
@ -379,6 +383,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) {