Skip to content

Commit

Permalink
git-unpack-objects: show progress report by default
Browse files Browse the repository at this point in the history
This ends up being very calming for big "git clone"s, since otherwise
you just get very frustrated with a long silence, wondering whether it's
working at all.

Use "-q" to quiet it down.

Now if we could just do the same for the initial "figure out what to
pack" phase, which can also be quite slow if the other end is busy (or
not packed and not in cache)...
  • Loading branch information
Linus Torvalds committed Jul 9, 2005
1 parent 1855c04 commit d36f7b8
Showing 1 changed file with 24 additions and 3 deletions.
27 changes: 24 additions & 3 deletions unpack-objects.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
#include "delta.h"
#include "pack.h"

static int dry_run;
#include <sys/time.h>

static int dry_run, quiet;
static const char unpack_usage[] = "git-unpack-objects < pack-file";

/* We always read in 4kB chunks. */
Expand Down Expand Up @@ -185,7 +187,7 @@ static int unpack_delta_entry(unsigned long delta_size)
return resolve_delta(type, base, base_size, delta_data, delta_size);
}

static void unpack_one(void)
static void unpack_one(unsigned nr, unsigned total)
{
unsigned shift;
unsigned char *pack, c;
Expand All @@ -205,6 +207,19 @@ static void unpack_one(void)
size += (c & 0x7f) << shift;
shift += 7;
}
if (!quiet) {
static unsigned long last_sec;
static unsigned last_percent;
struct timeval now;
unsigned percentage = ((1+nr) * 100) / total;

gettimeofday(&now, NULL);
if (percentage != last_percent || now.tv_sec != last_sec) {
last_sec = now.tv_sec;
last_percent = percentage;
fprintf(stderr, "%4u%% (%u/%u) done\r", percentage, nr, total);
}
}
switch (type) {
case OBJ_COMMIT:
case OBJ_TREE:
Expand Down Expand Up @@ -240,7 +255,7 @@ static void unpack_all(void)

use(sizeof(struct pack_header));
for (i = 0; i < nr_objects; i++)
unpack_one();
unpack_one(i, nr_objects);
if (delta_list)
die("unresolved deltas left after unpacking");
}
Expand All @@ -258,6 +273,10 @@ int main(int argc, char **argv)
dry_run = 1;
continue;
}
if (!strcmp(arg, "-q")) {
quiet = 1;
continue;
}
usage(unpack_usage);
}

Expand Down Expand Up @@ -287,5 +306,7 @@ int main(int argc, char **argv)
}

/* All done */
if (!quiet)
fprintf(stderr, "\n");
return 0;
}

0 comments on commit d36f7b8

Please sign in to comment.