On Sun, Nov 22, 2009 at 10:53:53PM +0800, bill lam wrote: > I set crontab to push to another computer for backup. It sent > confirmation email after finished. It looked like > > Counting objects: 1 > Counting objects: 9, done. > Delta compression using up to 2 threads. > Compressing objects: 20% (1/5) > Compressing objects: 40% (2/5) > Compressing objects: 60% (3/5) > Compressing objects: 80% (4/5) > Compressing objects: 100% (5/5) > Compressing objects: 100% (5/5), done. > Writing objects: 20% (1/5) > Writing objects: 40% (2/5) > Writing objects: 60% (3/5) > Writing objects: 80% (4/5) > Writing objects: 100% (5/5) > Writing objects: 100% (5/5), 549 bytes, done. > Total 5 (delta 3), reused 0 (delta 0) > > Often the list of progress % can be a page long. I want output but > not those percentage progress status. Will that be possible? Hmm. There seems to be a bug. pack-objects is supposed to see that stderr is not a tty and suppress the progress messages. But it doesn't, because send-pack gives it the --all-progress flag, which unconditionally tells it to display progress, when the desired impact is actually to just make the progress more verbose. We need to do one of: 1. make --all-progress imply "if we are using progress, then make it more verbose. Otherwise, ignore." 2. fix all callers to check isatty(2) before unconditionally passing the option The patch for (1) would look something like what's below. It's simpler, but it does change the semantics; anyone who was relying on --all-progress to turn on progress unconditionally would need to now also use --progress. However, turning on progress unconditionally is usually an error (the except is if you are piping output in real-time to the user and need to overcome the isatty check). Nicolas, this is your code. Which do you prefer? -Peff --- diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c index 4c91e94..50dd429 100644 --- a/builtin-pack-objects.c +++ b/builtin-pack-objects.c @@ -75,6 +75,7 @@ static int ignore_packed_keep; static int allow_ofs_delta; static const char *base_name; static int progress = 1; +static int all_progress; static int window = 10; static uint32_t pack_size_limit, pack_size_limit_cfg; static int depth = 50; @@ -2220,7 +2221,7 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix) continue; } if (!strcmp("--all-progress", arg)) { - progress = 2; + all_progress = 1; continue; } if (!strcmp("-q", arg)) { @@ -2295,6 +2296,9 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix) usage(pack_usage); } + if (progress && all_progress) + progress = 2; + /* Traditionally "pack-objects [options] base extra" failed; * we would however want to take refs parameter that would * have been given to upstream rev-list ourselves, which means -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html