diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-12-05 15:11:11 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-12-05 15:11:11 -0800 |
commit | 7b1baed3fbcffbc496a3161c969ba188ac7c6a7d (patch) | |
tree | 6c0ae00736b9b24cd6804485f5a43ea31650035c /builtin | |
parent | d7194d318b98964a0c9705a02b4c3e3035642f03 (diff) | |
parent | 0b26abc0f59ce7899257f75d63ce836e1a6566bd (diff) | |
download | git-7b1baed3fbcffbc496a3161c969ba188ac7c6a7d.tar.gz |
Merge branch 'nd/prune-progress'
* nd/prune-progress:
reachable: per-object progress
prune: handle --progress/no-progress
prune: show progress while marking reachable objects
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/gc.c | 4 | ||||
-rw-r--r-- | builtin/prune.c | 13 | ||||
-rw-r--r-- | builtin/reflog.c | 2 |
3 files changed, 16 insertions, 3 deletions
diff --git a/builtin/gc.c b/builtin/gc.c index 0498094711..271376d82b 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -32,7 +32,7 @@ static const char *prune_expire = "2.weeks.ago"; static const char *argv_pack_refs[] = {"pack-refs", "--all", "--prune", NULL}; static const char *argv_reflog[] = {"reflog", "expire", "--all", NULL}; static const char *argv_repack[MAX_ADD] = {"repack", "-d", "-l", NULL}; -static const char *argv_prune[] = {"prune", "--expire", NULL, NULL}; +static const char *argv_prune[] = {"prune", "--expire", NULL, NULL, NULL}; static const char *argv_rerere[] = {"rerere", "gc", NULL}; static int gc_config(const char *var, const char *value, void *cb) @@ -243,6 +243,8 @@ int cmd_gc(int argc, const char **argv, const char *prefix) if (prune_expire) { argv_prune[2] = prune_expire; + if (quiet) + argv_prune[3] = "--no-progress"; if (run_command_v_opt(argv_prune, RUN_GIT_CMD)) return error(FAILED_RUN, argv_prune[0]); } diff --git a/builtin/prune.c b/builtin/prune.c index e65690ba37..58d7cb8324 100644 --- a/builtin/prune.c +++ b/builtin/prune.c @@ -5,6 +5,7 @@ #include "builtin.h" #include "reachable.h" #include "parse-options.h" +#include "progress.h" #include "dir.h" static const char * const prune_usage[] = { @@ -14,6 +15,7 @@ static const char * const prune_usage[] = { static int show_only; static int verbose; static unsigned long expire; +static int show_progress = -1; static int prune_tmp_object(const char *path, const char *filename) { @@ -124,9 +126,11 @@ static void remove_temporary_files(const char *path) int cmd_prune(int argc, const char **argv, const char *prefix) { struct rev_info revs; + struct progress *progress = NULL; const struct option options[] = { OPT__DRY_RUN(&show_only, "do not remove, show only"), OPT__VERBOSE(&verbose, "report pruned objects"), + OPT_BOOL(0, "progress", &show_progress, "show progress"), OPT_DATE(0, "expire", &expire, "expire objects older than <time>"), OPT_END() @@ -152,7 +156,14 @@ int cmd_prune(int argc, const char **argv, const char *prefix) else die("unrecognized argument: %s", name); } - mark_reachable_objects(&revs, 1); + + if (show_progress == -1) + show_progress = isatty(2); + if (show_progress) + progress = start_progress_delay("Checking connectivity", 0, 0, 2); + + mark_reachable_objects(&revs, 1, progress); + stop_progress(&progress); prune_object_dir(get_object_directory()); prune_packed_objects(show_only); diff --git a/builtin/reflog.c b/builtin/reflog.c index 3a9c80f3db..062d7dad1b 100644 --- a/builtin/reflog.c +++ b/builtin/reflog.c @@ -647,7 +647,7 @@ static int cmd_reflog_expire(int argc, const char **argv, const char *prefix) init_revisions(&cb.revs, prefix); if (cb.verbose) printf("Marking reachable objects..."); - mark_reachable_objects(&cb.revs, 0); + mark_reachable_objects(&cb.revs, 0, NULL); if (cb.verbose) putchar('\n'); } |