From patchwork Thu Oct 3 17:53:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Schindelin via GitGitGadget X-Patchwork-Id: 11173037 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 832E017EE for ; Thu, 3 Oct 2019 17:53:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 61E562133F for ; Thu, 3 Oct 2019 17:53:37 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RqnA4JXS" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729947AbfJCRxg (ORCPT ); Thu, 3 Oct 2019 13:53:36 -0400 Received: from mail-wm1-f67.google.com ([209.85.128.67]:54191 "EHLO mail-wm1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729355AbfJCRxf (ORCPT ); Thu, 3 Oct 2019 13:53:35 -0400 Received: by mail-wm1-f67.google.com with SMTP id i16so2921895wmd.3 for ; Thu, 03 Oct 2019 10:53:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:message-id:in-reply-to:references:from:subject:fcc :content-transfer-encoding:mime-version:to:cc; bh=yMzdfN/I70pLOe+T+cryhZT69SZxba0nL1YRbk2ftDQ=; b=RqnA4JXSAJESIkw3SdTZTrcZq4JKSlyfwzimfA2AzbP/QLxE4v7s8yvX/PwDzwY8lp x/9WcPF5Op8GmX3TZarTjftQcj3xaDhGxhNaNAfM1Do70tms7HM5gq2l78BMNFZlr2fr dvOfQ24NVDSRfytDl9sAeuzB0XMJ9H95Xb/qyQbKuXj4ueaH+ld/uJGppmWo9vnoe5rr MEW2+pLGjGdGjE2mXDxdaU+dv65cNlikyHZVahcoaXNLl/whdan3Z4QenJU3kBykjrQY Rh+eN6O0AH3XqkLHAerkc8HlhjO87X3dvL9yHgMzOZV4rU2/VKviEamRVO/xSfhAC8ZH FUcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:in-reply-to:references:from :subject:fcc:content-transfer-encoding:mime-version:to:cc; bh=yMzdfN/I70pLOe+T+cryhZT69SZxba0nL1YRbk2ftDQ=; b=Yq8pXnSJ5sNs/cZ2hmNaehcGRMoSPp1FBMw9TfuQILRDj+PlkbzoLbeAgy+iiCuyhC WbD+aRDJx0DQACOmpNSneoaCx4ql/THNt07/wCSUxqYHEp0y5yvCV2GePJ3QQSkyXhf7 NIWxepK0sEkkBcwdxRd8aEViVmRd2GFtN5EIuCmdXswDoSkqbpaAfn/Ixs75zQvigGRw 8atQGjvaK1BKAiQMlbgiXK0B0mVYArtIsdNlKtW9wkf2tBWp+p1ecYxBU9sz7uI34vMu fxaJxPP1HAkZG2m6trQtvM5vGHJqYXLVNzEjiUiZOLwrXUOom5obZ9x1apzg6KBDV+mA eXsQ== X-Gm-Message-State: APjAAAWZv1C94McV2sPbVHSRkpyncnvsxrijoxixwvJajRtNFY9YhfbR TQuAUBSOQf4KZ5+dQfTHJRg8w3WF X-Google-Smtp-Source: APXvYqx8Gn8JW8vjE6dNa2eY6UxhgRXCPpND+vY+4jDJ/qzzI+XyCFYzrlFg7rF+78kiwEUjH8nN4Q== X-Received: by 2002:a7b:cd88:: with SMTP id y8mr2972186wmj.1.1570125212514; Thu, 03 Oct 2019 10:53:32 -0700 (PDT) Received: from [127.0.0.1] ([13.74.141.28]) by smtp.gmail.com with ESMTPSA id r6sm4423824wmh.38.2019.10.03.10.53.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Oct 2019 10:53:31 -0700 (PDT) Date: Thu, 03 Oct 2019 10:53:31 -0700 (PDT) X-Google-Original-Date: Thu, 03 Oct 2019 17:53:24 GMT Message-Id: In-Reply-To: References: From: "William Baker via GitGitGadget" Subject: [PATCH v3 1/6] midx: add MIDX_PROGRESS flag Fcc: Sent MIME-Version: 1.0 To: git@vger.kernel.org Cc: williamtbakeremail@gmail.com, stolee@gmail.com, jeffhost@microsoft.com, Junio C Hamano , William Baker Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: William Baker Add the MIDX_PROGRESS flag and update the write|verify|expire|repack functions in midx.h to accept a flags parameter. The MIDX_PROGRESS flag indicates whether the caller of the function would like progress information to be displayed. This patch only changes the method prototypes and does not change the functionality. The functionality change will be handled by a later patch. Signed-off-by: William Baker --- builtin/multi-pack-index.c | 8 ++++---- builtin/repack.c | 2 +- midx.c | 8 ++++---- midx.h | 10 ++++++---- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/builtin/multi-pack-index.c b/builtin/multi-pack-index.c index b1ea1a6aa1..e86b8cd17d 100644 --- a/builtin/multi-pack-index.c +++ b/builtin/multi-pack-index.c @@ -47,16 +47,16 @@ int cmd_multi_pack_index(int argc, const char **argv, trace2_cmd_mode(argv[0]); if (!strcmp(argv[0], "repack")) - return midx_repack(the_repository, opts.object_dir, (size_t)opts.batch_size); + return midx_repack(the_repository, opts.object_dir, (size_t)opts.batch_size, 0); if (opts.batch_size) die(_("--batch-size option is only for 'repack' subcommand")); if (!strcmp(argv[0], "write")) - return write_midx_file(opts.object_dir); + return write_midx_file(opts.object_dir, 0); if (!strcmp(argv[0], "verify")) - return verify_midx_file(the_repository, opts.object_dir); + return verify_midx_file(the_repository, opts.object_dir, 0); if (!strcmp(argv[0], "expire")) - return expire_midx_packs(the_repository, opts.object_dir); + return expire_midx_packs(the_repository, opts.object_dir, 0); die(_("unrecognized subcommand: %s"), argv[0]); } diff --git a/builtin/repack.c b/builtin/repack.c index 632c0c0a79..5b3623337f 100644 --- a/builtin/repack.c +++ b/builtin/repack.c @@ -561,7 +561,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix) remove_temporary_files(); if (git_env_bool(GIT_TEST_MULTI_PACK_INDEX, 0)) - write_midx_file(get_object_directory()); + write_midx_file(get_object_directory(), 0); string_list_clear(&names, 0); string_list_clear(&rollback, 0); diff --git a/midx.c b/midx.c index d649644420..b2673f52e8 100644 --- a/midx.c +++ b/midx.c @@ -1017,7 +1017,7 @@ static int write_midx_internal(const char *object_dir, struct multi_pack_index * return result; } -int write_midx_file(const char *object_dir) +int write_midx_file(const char *object_dir, unsigned flags) { return write_midx_internal(object_dir, NULL, NULL); } @@ -1077,7 +1077,7 @@ static int compare_pair_pos_vs_id(const void *_a, const void *_b) display_progress(progress, _n); \ } while (0) -int verify_midx_file(struct repository *r, const char *object_dir) +int verify_midx_file(struct repository *r, const char *object_dir, unsigned flags) { struct pair_pos_vs_id *pairs = NULL; uint32_t i; @@ -1184,7 +1184,7 @@ int verify_midx_file(struct repository *r, const char *object_dir) return verify_midx_error; } -int expire_midx_packs(struct repository *r, const char *object_dir) +int expire_midx_packs(struct repository *r, const char *object_dir, unsigned flags) { uint32_t i, *count, result = 0; struct string_list packs_to_drop = STRING_LIST_INIT_DUP; @@ -1316,7 +1316,7 @@ static int fill_included_packs_batch(struct repository *r, return 0; } -int midx_repack(struct repository *r, const char *object_dir, size_t batch_size) +int midx_repack(struct repository *r, const char *object_dir, size_t batch_size, unsigned flags) { int result = 0; uint32_t i; diff --git a/midx.h b/midx.h index f0ae656b5d..e6fa356b5c 100644 --- a/midx.h +++ b/midx.h @@ -37,6 +37,8 @@ struct multi_pack_index { char object_dir[FLEX_ARRAY]; }; +#define MIDX_PROGRESS (1 << 0) + struct multi_pack_index *load_multi_pack_index(const char *object_dir, int local); int prepare_midx_pack(struct repository *r, struct multi_pack_index *m, uint32_t pack_int_id); int bsearch_midx(const struct object_id *oid, struct multi_pack_index *m, uint32_t *result); @@ -47,11 +49,11 @@ int fill_midx_entry(struct repository *r, const struct object_id *oid, struct pa int midx_contains_pack(struct multi_pack_index *m, const char *idx_or_pack_name); int prepare_multi_pack_index_one(struct repository *r, const char *object_dir, int local); -int write_midx_file(const char *object_dir); +int write_midx_file(const char *object_dir, unsigned flags); void clear_midx_file(struct repository *r); -int verify_midx_file(struct repository *r, const char *object_dir); -int expire_midx_packs(struct repository *r, const char *object_dir); -int midx_repack(struct repository *r, const char *object_dir, size_t batch_size); +int verify_midx_file(struct repository *r, const char *object_dir, unsigned flags); +int expire_midx_packs(struct repository *r, const char *object_dir, unsigned flags); +int midx_repack(struct repository *r, const char *object_dir, size_t batch_size, unsigned flags); void close_midx(struct multi_pack_index *m); From patchwork Thu Oct 3 17:53:32 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Schindelin via GitGitGadget X-Patchwork-Id: 11173041 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 719FE196C for ; Thu, 3 Oct 2019 17:53:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4FE7520865 for ; Thu, 3 Oct 2019 17:53:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PRNZmx91" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729918AbfJCRxg (ORCPT ); Thu, 3 Oct 2019 13:53:36 -0400 Received: from mail-wr1-f67.google.com ([209.85.221.67]:34069 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729757AbfJCRxf (ORCPT ); Thu, 3 Oct 2019 13:53:35 -0400 Received: by mail-wr1-f67.google.com with SMTP id a11so3738866wrx.1 for ; Thu, 03 Oct 2019 10:53:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:message-id:in-reply-to:references:from:subject:fcc :content-transfer-encoding:mime-version:to:cc; bh=XMiCxCCjJMjMJIUhxtOxtH4wSYZJwxBWoUYa9jPXwS8=; b=PRNZmx91XBPEV0ztccR01roLwFMKOqmCtsf5b6B3LHPCYrahL2+NB13Rfwfw/hZfu4 hDZ80Jtzgxb5c/QVSKaTAgNEUABk2UoBseMAc72WbC1GIBFsWrRYom/QKxjhRJQ05gMA DlYcEJKjK8HXYkJP45MbTtFbnMSILA18hNa6cmqzMt5lIPPaUMcdQpy2ZWJXnb7kSfbK HTJm7oFB9W3nNuW7WP0JEGpollGUyMArLtNU9Me+9rtHwVNuqkeao0zjdWSrfFYawK8G Fh2j/xikhld1U1Uv69ir4AOO/41V7OP/DmUnmNhPLg9Pfs7yS4cvThXgSgfj5XDEjAXO TFgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:in-reply-to:references:from :subject:fcc:content-transfer-encoding:mime-version:to:cc; bh=XMiCxCCjJMjMJIUhxtOxtH4wSYZJwxBWoUYa9jPXwS8=; b=hDk7mCP5v3NrCcsR0wQnxdSwDdwLxaDMZk4K/3dHlHUkyihYZeR6sYXwLeQ9WbPsRR pT+Sn/4jMBS+wjDHCeDe2OvWt4BEnAAKJbo2PcDcOeX3/rGdV/LRX+eLJZ+kJ6QQ0zpf qcZMWXVjUv12oCJxY3i9kISPy3Km8swPGYLai3umhfiA++gFCDVRfHfeDYp5BaFBH7lI JdxVaCpon8MI+A4EbvntR5U1o3yszz203yqzkOLrzwxH1NVmMSEp33riHcbZUOVksxR9 pFqxA9/jfJV4/IJWUYFDkSAdpmMDeXPh1ovcEIejuVIOjC141Xyg6Fq+W7sz9PDpSbOS sauw== X-Gm-Message-State: APjAAAVhsyEJeReumB+QD6iV8Puc4ki/gpVBDo9bkgs3J0eqyYRJrc1m FcxstepjBNtcyAkbfo+fD4C/LwYW X-Google-Smtp-Source: APXvYqyCikRNtHofjdIfMpgLML2cqOyHaI2qvvm/SyPxBTmaA5jx2KIwpL8dKirmenHWl7OI0TElzg== X-Received: by 2002:adf:dc4b:: with SMTP id m11mr8713517wrj.269.1570125213364; Thu, 03 Oct 2019 10:53:33 -0700 (PDT) Received: from [127.0.0.1] ([13.74.141.28]) by smtp.gmail.com with ESMTPSA id z6sm3118642wro.16.2019.10.03.10.53.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Oct 2019 10:53:32 -0700 (PDT) Date: Thu, 03 Oct 2019 10:53:32 -0700 (PDT) X-Google-Original-Date: Thu, 03 Oct 2019 17:53:25 GMT Message-Id: <0117f55c9d98a641af11bfdd81b4c7c997a19dfb.1570125210.git.gitgitgadget@gmail.com> In-Reply-To: References: From: "William Baker via GitGitGadget" Subject: [PATCH v3 2/6] midx: add progress to write_midx_file Fcc: Sent MIME-Version: 1.0 To: git@vger.kernel.org Cc: williamtbakeremail@gmail.com, stolee@gmail.com, jeffhost@microsoft.com, Junio C Hamano , William Baker Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: William Baker Add progress to write_midx_file. Progress is displayed when the MIDX_PROGRESS flag is set. Signed-off-by: William Baker --- midx.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/midx.c b/midx.c index b2673f52e8..0808a40dd4 100644 --- a/midx.c +++ b/midx.c @@ -449,6 +449,8 @@ struct pack_list { uint32_t nr; uint32_t alloc; struct multi_pack_index *m; + struct progress *progress; + unsigned pack_paths_checked; }; static void add_pack_to_midx(const char *full_path, size_t full_path_len, @@ -457,6 +459,7 @@ static void add_pack_to_midx(const char *full_path, size_t full_path_len, struct pack_list *packs = (struct pack_list *)data; if (ends_with(file_name, ".idx")) { + display_progress(packs->progress, ++packs->pack_paths_checked); if (packs->m && midx_contains_pack(packs->m, file_name)) return; @@ -786,7 +789,7 @@ static size_t write_midx_large_offsets(struct hashfile *f, uint32_t nr_large_off } static int write_midx_internal(const char *object_dir, struct multi_pack_index *m, - struct string_list *packs_to_drop) + struct string_list *packs_to_drop, unsigned flags) { unsigned char cur_chunk, num_chunks = 0; char *midx_name; @@ -800,6 +803,7 @@ static int write_midx_internal(const char *object_dir, struct multi_pack_index * uint64_t chunk_offsets[MIDX_MAX_CHUNKS + 1]; uint32_t nr_entries, num_large_offsets = 0; struct pack_midx_entry *entries = NULL; + struct progress *progress = NULL; int large_offsets_needed = 0; int pack_name_concat_len = 0; int dropped_packs = 0; @@ -833,8 +837,15 @@ static int write_midx_internal(const char *object_dir, struct multi_pack_index * packs.nr++; } } + + packs.pack_paths_checked = 0; + if (flags & MIDX_PROGRESS) + packs.progress = start_progress(_("Adding packfiles to multi-pack-index"), 0); + else + packs.progress = NULL; for_each_file_in_pack_dir(object_dir, add_pack_to_midx, &packs); + stop_progress(&packs.progress); if (packs.m && packs.nr == packs.m->num_packs && !packs_to_drop) goto cleanup; @@ -959,6 +970,9 @@ static int write_midx_internal(const char *object_dir, struct multi_pack_index * written += MIDX_CHUNKLOOKUP_WIDTH; } + if (flags & MIDX_PROGRESS) + progress = start_progress(_("Writing chunks to multi-pack-index"), + num_chunks); for (i = 0; i < num_chunks; i++) { if (written != chunk_offsets[i]) BUG("incorrect chunk offset (%"PRIu64" != %"PRIu64") for chunk id %"PRIx32, @@ -991,7 +1005,10 @@ static int write_midx_internal(const char *object_dir, struct multi_pack_index * BUG("trying to write unknown chunk id %"PRIx32, chunk_ids[i]); } + + display_progress(progress, i + 1); } + stop_progress(&progress); if (written != chunk_offsets[num_chunks]) BUG("incorrect final offset %"PRIu64" != %"PRIu64, @@ -1019,7 +1036,7 @@ static int write_midx_internal(const char *object_dir, struct multi_pack_index * int write_midx_file(const char *object_dir, unsigned flags) { - return write_midx_internal(object_dir, NULL, NULL); + return write_midx_internal(object_dir, NULL, NULL, flags); } void clear_midx_file(struct repository *r) @@ -1222,7 +1239,7 @@ int expire_midx_packs(struct repository *r, const char *object_dir, unsigned fla free(count); if (packs_to_drop.nr) - result = write_midx_internal(object_dir, m, &packs_to_drop); + result = write_midx_internal(object_dir, m, &packs_to_drop, flags); string_list_clear(&packs_to_drop, 0); return result; @@ -1371,7 +1388,7 @@ int midx_repack(struct repository *r, const char *object_dir, size_t batch_size, goto cleanup; } - result = write_midx_internal(object_dir, m, NULL); + result = write_midx_internal(object_dir, m, NULL, flags); m = NULL; cleanup: From patchwork Mon Oct 21 18:40:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Schindelin via GitGitGadget X-Patchwork-Id: 11202841 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CC0E013BD for ; Mon, 21 Oct 2019 18:40:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id AB57F20873 for ; Mon, 21 Oct 2019 18:40:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="D4LCeqqI" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729945AbfJUSkJ (ORCPT ); Mon, 21 Oct 2019 14:40:09 -0400 Received: from mail-wr1-f66.google.com ([209.85.221.66]:35539 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726672AbfJUSkH (ORCPT ); Mon, 21 Oct 2019 14:40:07 -0400 Received: by mail-wr1-f66.google.com with SMTP id l10so14738547wrb.2 for ; Mon, 21 Oct 2019 11:40:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:in-reply-to:references:from:date:subject:fcc :content-transfer-encoding:mime-version:to:cc; bh=gJp2xqy63/C8ct2GGPsWDLBKXQPX2IIv7PxniheFSEM=; b=D4LCeqqIFJ5fzRS3D69JR97YMaSO+EUX8FAO4J9GvHvpVjJS7vqmIVeLk3Hla1XDH7 c1fB1bzRd1wRBI8uGgqAlgWAkY/P74eGd2ALO1PYX7RlGwMTTyPRQj6q0aqfPG3ap/m/ JL/B/S5tVep5T9S7NbCvv6ql7KRFq6ptHDwTcIt3G/xjqwKt3hR1fzKHqQdLY2Z5xFIe /tCCv1JwaQdWx5J+b2of9s1w3eCKRHLED3ZQlDix7R0NfzLPHGtZldL+1KaY0+KIc+o9 euitl86mpEYAOhC56fnZDWPPqM+jGHq8s2MQGMVzHtNpF+l1w5tU96Nqd36Q0bLctFZW iEsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:in-reply-to:references:from:date :subject:fcc:content-transfer-encoding:mime-version:to:cc; bh=gJp2xqy63/C8ct2GGPsWDLBKXQPX2IIv7PxniheFSEM=; b=eebZKYFvx6g9TvZGMkZ5wLtAdlJgABIS6Go7lTfM4QLXZo9wyxJG4xVPpFkhe0ynBl 9VD2x41k8JofPnPLiosoxFdhhMKUzMUo4AaF1ijmqW84ZtV5uyQp7kxgaJuvvXqZNjuH prnx26Pw+cx3+HfGJYQX2KanmRx7mHWLynpROYkwOXiO5w97fAm6zpeaAOuF4FzhRBqO UccBGcTSwx6lQgYev4MaIZwPELD2c7aiW1v7Kdu+jl0SzYgFs8DONIukhAZdxzDNTLO/ 4aKws4DeqS6CBN/mhjAg4aUQ3Ie+oRpWPbw400sCRSJ3rtfWKXBqX0Fa2mRuWF5PGdI9 iBzQ== X-Gm-Message-State: APjAAAVYuf9wSC3Bv0XWt1uIFc+VoJ3+dDSUAT0rJYrY8Gucq8SFHfNJ vJcOcxoP+S6SxX+ocleQKPn8rQ3L X-Google-Smtp-Source: APXvYqxvaLMeAqk2NlgslFP3yBsvhYeGzEjSgD/Zzdf6uQYEBmnCgHXanomM6fdhquWtw/ajGo33/A== X-Received: by 2002:a5d:55c2:: with SMTP id i2mr21517388wrw.176.1571683206656; Mon, 21 Oct 2019 11:40:06 -0700 (PDT) Received: from [127.0.0.1] ([13.74.141.28]) by smtp.gmail.com with ESMTPSA id a9sm21561602wmf.14.2019.10.21.11.40.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Oct 2019 11:40:06 -0700 (PDT) Message-Id: <4ac9527d984bffea22a399506500a18823b4bd53.1571683203.git.gitgitgadget@gmail.com> In-Reply-To: References: From: "William Baker via GitGitGadget" Date: Mon, 21 Oct 2019 18:40:00 +0000 Subject: [PATCH v4 3/6] midx: add progress to expire_midx_packs Fcc: Sent MIME-Version: 1.0 To: git@vger.kernel.org Cc: williamtbakeremail@gmail.com, stolee@gmail.com, jeffhost@microsoft.com, Junio C Hamano , William Baker Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: William Baker Add progress to expire_midx_packs. Progress is displayed when the MIDX_PROGRESS flag is set. Signed-off-by: William Baker --- midx.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/midx.c b/midx.c index 006f36b570..7157259ca2 100644 --- a/midx.c +++ b/midx.c @@ -1205,18 +1205,29 @@ int expire_midx_packs(struct repository *r, const char *object_dir, unsigned fla uint32_t i, *count, result = 0; struct string_list packs_to_drop = STRING_LIST_INIT_DUP; struct multi_pack_index *m = load_multi_pack_index(object_dir, 1); + struct progress *progress = NULL; if (!m) return 0; count = xcalloc(m->num_packs, sizeof(uint32_t)); + + if (flags & MIDX_PROGRESS) + progress = start_progress(_("Counting referenced objects"), + m->num_objects); for (i = 0; i < m->num_objects; i++) { int pack_int_id = nth_midxed_pack_int_id(m, i); count[pack_int_id]++; + display_progress(progress, i + 1); } + stop_progress(&progress); + if (flags & MIDX_PROGRESS) + progress = start_progress(_("Finding and deleting unreferenced packfiles"), + m->num_packs); for (i = 0; i < m->num_packs; i++) { char *pack_name; + display_progress(progress, i + 1); if (count[i]) continue; @@ -1234,6 +1245,7 @@ int expire_midx_packs(struct repository *r, const char *object_dir, unsigned fla unlink_pack_path(pack_name, 0); free(pack_name); } + stop_progress(&progress); free(count); From patchwork Thu Oct 3 17:53:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Schindelin via GitGitGadget X-Patchwork-Id: 11173045 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2F03D195A for ; Thu, 3 Oct 2019 17:53:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0DC092133F for ; Thu, 3 Oct 2019 17:53:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TmfDax6W" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730246AbfJCRxi (ORCPT ); Thu, 3 Oct 2019 13:53:38 -0400 Received: from mail-wr1-f65.google.com ([209.85.221.65]:43659 "EHLO mail-wr1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729858AbfJCRxh (ORCPT ); Thu, 3 Oct 2019 13:53:37 -0400 Received: by mail-wr1-f65.google.com with SMTP id j18so2893758wrq.10 for ; Thu, 03 Oct 2019 10:53:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:message-id:in-reply-to:references:from:subject:fcc :content-transfer-encoding:mime-version:to:cc; bh=23NSinLyH7nV79BXWUA7bbyNTvs+29xvLGTgQfUPvPU=; b=TmfDax6W7rt8Liu9D5uOTw6YbkbsUUrJhbzmYD7YeT8dNyP5Z4qqF5VGOZoIlaWLfH 1Mw/4kX24PBFw01q5/ez6GeW5qmofPFPrbAAaM5GW9JICjMErC6q7aQ4mJjqOlAv/UAc ISCKinxhf+r4fqoGnE9cTKA+WyGbZ9U0udStap9ULgpj21OsC7i4LLT2Z1UULoGruXuw Ql87K2EFSNdQYnARaLjgS5r8DYCCR4qMAFvL99ugO4hD8FIcPChS/a9+zZa9PBugBs49 y0Go8sKvoiS2mVpKeti3ps7g9wgDqJD448iL9kFX8gD8B/tV+w/M/3MuDIjNAcSbQYOG CLtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:in-reply-to:references:from :subject:fcc:content-transfer-encoding:mime-version:to:cc; bh=23NSinLyH7nV79BXWUA7bbyNTvs+29xvLGTgQfUPvPU=; b=Nkvpa1OcKWp1ll+oBReigwaevjjwBiiqKttXwb1oHSMPeUhWAYNSpFmnyIbRP8EG73 81uOUkY8um90hZ+/GOxAcqJcQjn8AM+0QiGelsmKGhM1Viv7kAK1bKfjMSoBqQZ+Eiw1 UI9rPAsJIvT2h9O2+QgwnFg3sDjOLoKFJcBspgW4sWWhNrfV7HpQ9wtJQ0JwVmuinMhI +kIBAUc+lVDir9Npj7GxiFDQgjgv7P5wmIq0vb2349fAtZTdqd9G+GabJ3R2qBNG9OP3 BYR8jymaj8YiAY4qQmbAfc4qHwhmKaj2tVG9CkWd5P/h6AYjXBQ8VOf28PlkCTivytx3 1ZKw== X-Gm-Message-State: APjAAAVR6pmOi1suuVWlk8GvmLRHbGOQt40v49J01EfxjP739y4Ulccb m9PtQsINupwJDj8UHRahe0hzg+xn X-Google-Smtp-Source: APXvYqzAgNU50+7OH+4mvTS/2nJOV51Gh/RJPm9oBktlFH767Z1K6P9aXmJMaqh2KGFAIjFzLnYypw== X-Received: by 2002:a5d:568d:: with SMTP id f13mr7808405wrv.162.1570125215049; Thu, 03 Oct 2019 10:53:35 -0700 (PDT) Received: from [127.0.0.1] ([13.74.141.28]) by smtp.gmail.com with ESMTPSA id f8sm3019564wmb.37.2019.10.03.10.53.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Oct 2019 10:53:34 -0700 (PDT) Date: Thu, 03 Oct 2019 10:53:34 -0700 (PDT) X-Google-Original-Date: Thu, 03 Oct 2019 17:53:27 GMT Message-Id: In-Reply-To: References: From: "William Baker via GitGitGadget" Subject: [PATCH v3 4/6] midx: honor the MIDX_PROGRESS flag in verify_midx_file Fcc: Sent MIME-Version: 1.0 To: git@vger.kernel.org Cc: williamtbakeremail@gmail.com, stolee@gmail.com, jeffhost@microsoft.com, Junio C Hamano , William Baker Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: William Baker Update verify_midx_file to only display progress when the MIDX_PROGRESS flag is set. Signed-off-by: William Baker --- midx.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/midx.c b/midx.c index f14bebb092..ced5898bbf 100644 --- a/midx.c +++ b/midx.c @@ -1098,15 +1098,16 @@ int verify_midx_file(struct repository *r, const char *object_dir, unsigned flag { struct pair_pos_vs_id *pairs = NULL; uint32_t i; - struct progress *progress; + struct progress *progress = NULL; struct multi_pack_index *m = load_multi_pack_index(object_dir, 1); verify_midx_error = 0; if (!m) return 0; - progress = start_progress(_("Looking for referenced packfiles"), - m->num_packs); + if (flags & MIDX_PROGRESS) + progress = start_progress(_("Looking for referenced packfiles"), + m->num_packs); for (i = 0; i < m->num_packs; i++) { if (prepare_midx_pack(r, m, i)) midx_report("failed to load pack in position %d", i); @@ -1124,8 +1125,9 @@ int verify_midx_file(struct repository *r, const char *object_dir, unsigned flag i, oid_fanout1, oid_fanout2, i + 1); } - progress = start_sparse_progress(_("Verifying OID order in MIDX"), - m->num_objects - 1); + if (flags & MIDX_PROGRESS) + progress = start_sparse_progress(_("Verifying OID order in multi-pack-index"), + m->num_objects - 1); for (i = 0; i < m->num_objects - 1; i++) { struct object_id oid1, oid2; @@ -1152,13 +1154,15 @@ int verify_midx_file(struct repository *r, const char *object_dir, unsigned flag pairs[i].pack_int_id = nth_midxed_pack_int_id(m, i); } - progress = start_sparse_progress(_("Sorting objects by packfile"), - m->num_objects); + if (flags & MIDX_PROGRESS) + progress = start_sparse_progress(_("Sorting objects by packfile"), + m->num_objects); display_progress(progress, 0); /* TODO: Measure QSORT() progress */ QSORT(pairs, m->num_objects, compare_pair_pos_vs_id); stop_progress(&progress); - progress = start_sparse_progress(_("Verifying object offsets"), m->num_objects); + if (flags & MIDX_PROGRESS) + progress = start_sparse_progress(_("Verifying object offsets"), m->num_objects); for (i = 0; i < m->num_objects; i++) { struct object_id oid; struct pack_entry e; From patchwork Thu Oct 3 17:53:35 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Schindelin via GitGitGadget X-Patchwork-Id: 11173043 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BDE73139A for ; Thu, 3 Oct 2019 17:53:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9B6D720865 for ; Thu, 3 Oct 2019 17:53:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mS2XxV9Q" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730102AbfJCRxi (ORCPT ); Thu, 3 Oct 2019 13:53:38 -0400 Received: from mail-wr1-f65.google.com ([209.85.221.65]:41227 "EHLO mail-wr1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729950AbfJCRxh (ORCPT ); Thu, 3 Oct 2019 13:53:37 -0400 Received: by mail-wr1-f65.google.com with SMTP id q9so3690822wrm.8 for ; Thu, 03 Oct 2019 10:53:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:message-id:in-reply-to:references:from:subject:fcc :content-transfer-encoding:mime-version:to:cc; bh=ZwHh1TXxNf4aJSygXUzG4Bkm6lKqtN1MsdRGkinduGg=; b=mS2XxV9QzgQpRcxrlnJtnHMh/vSgRQkXSWopaJMn+dl1xKWNhhyZLYXj0Q74HqU5my yAXxCUIggCcvxbSyg/q5dM9SSvrUvQvnOFi9rSdehptmq5j5X5c+kdm5aVtMWtuCGnYh WLQEihIF+UOTXwtlKHDtnUNuId9ZceCH1Iltl74/HQ2hN3avwZM4L8VL/D2ZEUoweI6l PSmdivNIei7wowQgAFxKASAWkl+q3pSd90bxzKmYGF9LnwbQJASTCDBBxMLWDxsmFDTh Als3eumjSCRgI9LrkZkKlMurmrP3mE2ACKSS8K5A1FM3XDnNwrIqym89b0mk883yPDM7 oWpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:in-reply-to:references:from :subject:fcc:content-transfer-encoding:mime-version:to:cc; bh=ZwHh1TXxNf4aJSygXUzG4Bkm6lKqtN1MsdRGkinduGg=; b=NXY7NaWUP5z93bZMrUjqCzsLy8n0OYkIJAnCUorhGJDdmThlVqZE7dKMkJIjVR1NqC geZVCWz34B8jY7dY85VTxAtNA89hdnZwzYxkan73+SsXgN0XAjio6qPhzc4Q9megnuGv C/HB2ElNCfWvgy3OHzStt1DGXiLCpom0s21e67r/YrkSV4Jb9W9lNsjZAYfvAozAiJR1 H0J0Z4Z2IZifD00h/G3J1HwrglExV7Y+r7OrxNn23JqdlGUnCvuvfAdCbjLOn8PI+I1v jFGNeS1jG0dQMxsbqX7OEC9isy60FeKdF+cyMxGbjYHibwkwO+ZVVprmC4OE1vmzAKHE mzAQ== X-Gm-Message-State: APjAAAVbSk/5ojcgROb0C/bYUaF8ctIX8xatrDNuEQJbILjUGh9NwjA3 GFbxTS5vcinuAYF3vmOP4VoNz4wL X-Google-Smtp-Source: APXvYqzXc3FTnQKii67D/LMnunlNCVdzL0RLUD0vvaZWiDrTTab5/JroDKwHOFnjuqoDlUXRHwBanw== X-Received: by 2002:a5d:4491:: with SMTP id j17mr7778890wrq.257.1570125215752; Thu, 03 Oct 2019 10:53:35 -0700 (PDT) Received: from [127.0.0.1] ([13.74.141.28]) by smtp.gmail.com with ESMTPSA id c9sm4023351wrt.7.2019.10.03.10.53.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Oct 2019 10:53:35 -0700 (PDT) Date: Thu, 03 Oct 2019 10:53:35 -0700 (PDT) X-Google-Original-Date: Thu, 03 Oct 2019 17:53:28 GMT Message-Id: <7566090769eb74b2c9c99ab1455fb84c9215be16.1570125210.git.gitgitgadget@gmail.com> In-Reply-To: References: From: "William Baker via GitGitGadget" Subject: [PATCH v3 5/6] midx: honor the MIDX_PROGRESS flag in midx_repack Fcc: Sent MIME-Version: 1.0 To: git@vger.kernel.org Cc: williamtbakeremail@gmail.com, stolee@gmail.com, jeffhost@microsoft.com, Junio C Hamano , William Baker Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: William Baker Update midx_repack to only display progress when the MIDX_PROGRESS flag is set. Signed-off-by: William Baker --- midx.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/midx.c b/midx.c index ced5898bbf..1c5ddeb007 100644 --- a/midx.c +++ b/midx.c @@ -1374,6 +1374,12 @@ int midx_repack(struct repository *r, const char *object_dir, size_t batch_size, strbuf_addstr(&base_name, object_dir); strbuf_addstr(&base_name, "/pack/pack"); argv_array_push(&cmd.args, base_name.buf); + + if (flags & MIDX_PROGRESS) + argv_array_push(&cmd.args, "--progress"); + else + argv_array_push(&cmd.args, "-q"); + strbuf_release(&base_name); cmd.git_cmd = 1; From patchwork Thu Oct 3 17:53:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Schindelin via GitGitGadget X-Patchwork-Id: 11173049 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A7879112B for ; Thu, 3 Oct 2019 17:53:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7C4BD2086A for ; Thu, 3 Oct 2019 17:53:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cYD5kxvr" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730323AbfJCRxk (ORCPT ); Thu, 3 Oct 2019 13:53:40 -0400 Received: from mail-wm1-f65.google.com ([209.85.128.65]:40890 "EHLO mail-wm1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726119AbfJCRxk (ORCPT ); Thu, 3 Oct 2019 13:53:40 -0400 Received: by mail-wm1-f65.google.com with SMTP id b24so2996607wmj.5 for ; Thu, 03 Oct 2019 10:53:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:message-id:in-reply-to:references:from:subject:fcc :content-transfer-encoding:mime-version:to:cc; bh=SvwofeYTqREFHlTGQn30PKnEAMTDsdYqWXxwdwYSFAw=; b=cYD5kxvrO2yyWjwMzoYgi2t2o7s/BeHQnyuhrZNRlXOxDhdg0DOEO2MDrccy37q04f 5dEZobq+ZvDHN7Q5f2deV9sypXLf9SsFVHQgyFrWIKbHl1xu5et2PgV7WP9QLnvml21J SPvb2e3jy7EdXjVSYtbKEp2AHtbQL82jQcHDslk9Bti8mWC+DSywH5WSxWAJ2sAUlRDv hyW8JOxIxhmoHo0uF6sXSOB0J7pVnGTddQlqfnZUdJsnLgz2k+5YHQikODpsKLOecGRV FaK5JVzdkUmmk1piG/H6jUUF2r8ptFg6ehATBQhRYR8WyaY51UklXOQ9SpWMtvEYLOIw 7R0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:in-reply-to:references:from :subject:fcc:content-transfer-encoding:mime-version:to:cc; bh=SvwofeYTqREFHlTGQn30PKnEAMTDsdYqWXxwdwYSFAw=; b=Y7JXLxcy3u120Y7pLTiEUjSAiMXV1oTmlP9xMOuRdf2G0zV0eYsRgoAiN2Q+NhrA6g GIuBVXvlxfUi8DEqrIHEd9ujLkSo/NwMR+VK17aU68WBu3DB5/tGx1f5nE/BZ1R7OTiB YK7CzDbqQz9I9pD7IESRThHka+IeYO/RfqV9nZRVxyCXT/oTzvVUZPxP1t8KU8RHFqAN xRHR229dQ1lsXNYf/yfX3tcsEz6+51nnx//9vK96Rp8hfwF1NQMZMWEg5B+enmtyDYW4 A9Way40WmzXv1ck2EFb7O3Qsa5lzkLLX0OxU0vYevMDBBHEq1ysH26pySaTbH5cnEHfD rSwQ== X-Gm-Message-State: APjAAAWWoq977e8QZhWSU6UO+OM7kSx26PVTU5bRAVwGuuJOLEb0t1SB d5Va5xP2ypo9wCIznu2tE6zTbQGz X-Google-Smtp-Source: APXvYqxWVMWmr7I1B11qXqFd6NeLikzZmf79JfGhSUJLxbKUx3AJlENWl56Rda32zQwQQmDS2ncrvw== X-Received: by 2002:a1c:2b41:: with SMTP id r62mr7488384wmr.47.1570125216526; Thu, 03 Oct 2019 10:53:36 -0700 (PDT) Received: from [127.0.0.1] ([13.74.141.28]) by smtp.gmail.com with ESMTPSA id o9sm6174750wrh.46.2019.10.03.10.53.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Oct 2019 10:53:36 -0700 (PDT) Date: Thu, 03 Oct 2019 10:53:36 -0700 (PDT) X-Google-Original-Date: Thu, 03 Oct 2019 17:53:29 GMT Message-Id: In-Reply-To: References: From: "William Baker via GitGitGadget" Subject: [PATCH v3 6/6] multi-pack-index: add [--[no-]progress] option. Fcc: Sent MIME-Version: 1.0 To: git@vger.kernel.org Cc: williamtbakeremail@gmail.com, stolee@gmail.com, jeffhost@microsoft.com, Junio C Hamano , William Baker Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: William Baker Add the --[no-]progress option to git multi-pack-index. Pass the MIDX_PROGRESS flag to the subcommand functions when progress should be displayed by multi-pack-index. The progress feature was added to 'verify' in 144d703 ("multi-pack-index: report progress during 'verify'", 2018-09-13) but some subcommands were not updated to display progress, and the ability to opt-out was overlooked. Signed-off-by: William Baker --- Documentation/git-multi-pack-index.txt | 6 ++- builtin/multi-pack-index.c | 18 +++++-- t/t5319-multi-pack-index.sh | 69 ++++++++++++++++++++++++++ 3 files changed, 87 insertions(+), 6 deletions(-) diff --git a/Documentation/git-multi-pack-index.txt b/Documentation/git-multi-pack-index.txt index 233b2b7862..d7a02cc6fa 100644 --- a/Documentation/git-multi-pack-index.txt +++ b/Documentation/git-multi-pack-index.txt @@ -9,7 +9,7 @@ git-multi-pack-index - Write and verify multi-pack-indexes SYNOPSIS -------- [verse] -'git multi-pack-index' [--object-dir=] +'git multi-pack-index' [--object-dir=] [--[no-]progress] DESCRIPTION ----------- @@ -23,6 +23,10 @@ OPTIONS `/packs/multi-pack-index` for the current MIDX file, and `/packs` for the pack-files to index. +--[no-]progress:: + Turn progress on/off explicitly. If neither is specified, progress is + shown if standard error is connected to a terminal. + The following subcommands are available: write:: diff --git a/builtin/multi-pack-index.c b/builtin/multi-pack-index.c index e86b8cd17d..1730b21901 100644 --- a/builtin/multi-pack-index.c +++ b/builtin/multi-pack-index.c @@ -6,21 +6,25 @@ #include "trace2.h" static char const * const builtin_multi_pack_index_usage[] = { - N_("git multi-pack-index [--object-dir=] (write|verify|expire|repack --batch-size=)"), + N_("git multi-pack-index [] (write|verify|expire|repack --batch-size=)"), NULL }; static struct opts_multi_pack_index { const char *object_dir; unsigned long batch_size; + int progress; } opts; int cmd_multi_pack_index(int argc, const char **argv, const char *prefix) { + unsigned flags = 0; + static struct option builtin_multi_pack_index_options[] = { OPT_FILENAME(0, "object-dir", &opts.object_dir, N_("object directory containing set of packfile and pack-index pairs")), + OPT_BOOL(0, "progress", &opts.progress, N_("force progress reporting")), OPT_MAGNITUDE(0, "batch-size", &opts.batch_size, N_("during repack, collect pack-files of smaller size into a batch that is larger than this size")), OPT_END(), @@ -28,12 +32,15 @@ int cmd_multi_pack_index(int argc, const char **argv, git_config(git_default_config, NULL); + opts.progress = isatty(2); argc = parse_options(argc, argv, prefix, builtin_multi_pack_index_options, builtin_multi_pack_index_usage, 0); if (!opts.object_dir) opts.object_dir = get_object_directory(); + if (opts.progress) + flags |= MIDX_PROGRESS; if (argc == 0) usage_with_options(builtin_multi_pack_index_usage, @@ -47,16 +54,17 @@ int cmd_multi_pack_index(int argc, const char **argv, trace2_cmd_mode(argv[0]); if (!strcmp(argv[0], "repack")) - return midx_repack(the_repository, opts.object_dir, (size_t)opts.batch_size, 0); + return midx_repack(the_repository, opts.object_dir, + (size_t)opts.batch_size, flags); if (opts.batch_size) die(_("--batch-size option is only for 'repack' subcommand")); if (!strcmp(argv[0], "write")) - return write_midx_file(opts.object_dir, 0); + return write_midx_file(opts.object_dir, flags); if (!strcmp(argv[0], "verify")) - return verify_midx_file(the_repository, opts.object_dir, 0); + return verify_midx_file(the_repository, opts.object_dir, flags); if (!strcmp(argv[0], "expire")) - return expire_midx_packs(the_repository, opts.object_dir, 0); + return expire_midx_packs(the_repository, opts.object_dir, flags); die(_("unrecognized subcommand: %s"), argv[0]); } diff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh index c72ca04399..cd2f87be6a 100755 --- a/t/t5319-multi-pack-index.sh +++ b/t/t5319-multi-pack-index.sh @@ -147,6 +147,21 @@ test_expect_success 'write midx with two packs' ' compare_results_with_midx "two packs" +test_expect_success 'write progress off for redirected stderr' ' + git multi-pack-index --object-dir=$objdir write 2>err && + test_line_count = 0 err +' + +test_expect_success 'write force progress on for stderr' ' + git multi-pack-index --object-dir=$objdir --progress write 2>err && + test_file_not_empty err +' + +test_expect_success 'write with the --no-progress option' ' + git multi-pack-index --object-dir=$objdir --no-progress write 2>err && + test_line_count = 0 err +' + test_expect_success 'add more packs' ' for j in $(test_seq 11 20) do @@ -169,6 +184,21 @@ test_expect_success 'verify multi-pack-index success' ' git multi-pack-index verify --object-dir=$objdir ' +test_expect_success 'verify progress off for redirected stderr' ' + git multi-pack-index verify --object-dir=$objdir 2>err && + test_line_count = 0 err +' + +test_expect_success 'verify force progress on for stderr' ' + git multi-pack-index verify --object-dir=$objdir --progress 2>err && + test_file_not_empty err +' + +test_expect_success 'verify with the --no-progress option' ' + git multi-pack-index verify --object-dir=$objdir --no-progress 2>err && + test_line_count = 0 err +' + # usage: corrupt_midx_and_verify corrupt_midx_and_verify() { POS=$1 && @@ -284,6 +314,21 @@ test_expect_success 'git-fsck incorrect offset' ' "git -c core.multipackindex=true fsck" ' +test_expect_success 'repack progress off for redirected stderr' ' + git multi-pack-index --object-dir=$objdir repack 2>err && + test_line_count = 0 err +' + +test_expect_success 'repack force progress on for stderr' ' + git multi-pack-index --object-dir=$objdir --progress repack 2>err && + test_file_not_empty err +' + +test_expect_success 'repack with the --no-progress option' ' + git multi-pack-index --object-dir=$objdir --no-progress repack 2>err && + test_line_count = 0 err +' + test_expect_success 'repack removes multi-pack-index' ' test_path_is_file $objdir/pack/multi-pack-index && GIT_TEST_MULTI_PACK_INDEX=0 git repack -adf && @@ -413,6 +458,30 @@ test_expect_success 'expire does not remove any packs' ' ) ' +test_expect_success 'expire progress off for redirected stderr' ' + ( + cd dup && + git multi-pack-index expire 2>err && + test_line_count = 0 err + ) +' + +test_expect_success 'expire force progress on for stderr' ' + ( + cd dup && + git multi-pack-index --progress expire 2>err && + test_file_not_empty err + ) +' + +test_expect_success 'expire with the --no-progress option' ' + ( + cd dup && + git multi-pack-index --no-progress expire 2>err && + test_line_count = 0 err + ) +' + test_expect_success 'expire removes unreferenced packs' ' ( cd dup &&