From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Eric Wong <e@80x24.org>
Cc: Jeff King <peff@peff.net>, git@vger.kernel.org
Subject: Re: [PATCH] repack: enable bitmaps by default on bare repos
Date: Tue, 12 Mar 2019 10:07:22 +0100 [thread overview]
Message-ID: <871s3ccvg5.fsf@evledraar.gmail.com> (raw)
In-Reply-To: <20190312031303.5tutut7zzvxne5dw@dcvr>
On Tue, Mar 12 2019, Eric Wong wrote:
> Jeff King <peff@peff.net> wrote:
>> On Sat, Mar 09, 2019 at 02:49:44AM +0000, Eric Wong wrote:
>> > It would make life easier for people new to hosting git servers
>> > (and hopefully reduce centralization :)
>>
>> I do think they're a net win for people hosting git servers. But if
>> that's the goal, I think at most you'd want to make bitmaps the default
>> for bare repos. They're really not much help for normal end-user repos
>> at this point.
>
> Fair enough, hopefully this can make life easier for admins
> new to hosting git:
>
> ----------8<---------
> Subject: [PATCH] repack: enable bitmaps by default on bare repos
>
> A typical use case for bare repos is for serving clones and
> fetches to clients. Enable bitmaps by default on bare repos to
> make it easier for admins to host git repos in a performant way.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> ---
> builtin/repack.c | 16 ++++++++++------
> t/t7700-repack.sh | 14 +++++++++++++-
> 2 files changed, 23 insertions(+), 7 deletions(-)
>
> diff --git a/builtin/repack.c b/builtin/repack.c
> index 67f8978043..5d4758b515 100644
> --- a/builtin/repack.c
> +++ b/builtin/repack.c
> @@ -14,7 +14,7 @@
>
> static int delta_base_offset = 1;
> static int pack_kept_objects = -1;
> -static int write_bitmaps;
> +static int write_bitmaps = -1;
> static int use_delta_islands;
> static char *packdir, *packtmp;
>
> @@ -343,11 +343,15 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
> (unpack_unreachable || (pack_everything & LOOSEN_UNREACHABLE)))
> die(_("--keep-unreachable and -A are incompatible"));
>
> + if (!(pack_everything & ALL_INTO_ONE)) {
> + if (write_bitmaps > 0)
> + die(_(incremental_bitmap_conflict_error));
> + } else if (write_bitmaps < 0) {
> + write_bitmaps = is_bare_repository();
> + }
> +
> if (pack_kept_objects < 0)
> - pack_kept_objects = write_bitmaps;
> -
> - if (write_bitmaps && !(pack_everything & ALL_INTO_ONE))
> - die(_(incremental_bitmap_conflict_error));
> + pack_kept_objects = write_bitmaps > 0;
>
> packdir = mkpathdup("%s/pack", get_object_directory());
> packtmp = mkpathdup("%s/.tmp-%d-pack", packdir, (int)getpid());
> @@ -368,7 +372,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
> argv_array_push(&cmd.args, "--indexed-objects");
> if (repository_format_partial_clone)
> argv_array_push(&cmd.args, "--exclude-promisor-objects");
> - if (write_bitmaps)
> + if (write_bitmaps > 0)
> argv_array_push(&cmd.args, "--write-bitmap-index");
> if (use_delta_islands)
> argv_array_push(&cmd.args, "--delta-islands");
> diff --git a/t/t7700-repack.sh b/t/t7700-repack.sh
> index 6162e2a8e6..3e0b5c40e4 100755
> --- a/t/t7700-repack.sh
> +++ b/t/t7700-repack.sh
> @@ -221,5 +221,17 @@ test_expect_success 'repack --keep-pack' '
> )
> '
>
> +test_expect_success 'bitmaps are created by default in bare repos' '
> + git clone --bare .git bare.git &&
> + cd bare.git &&
> + mkdir old &&
> + mv objects/pack/* old &&
> + pack=$(ls old/*.pack) &&
> + test_path_is_file "$pack" &&
> + git unpack-objects -q <"$pack" &&
> + git repack -ad &&
> + bitmap=$(ls objects/pack/*.bitmap) &&
> + test_path_is_file "$bitmap"
> +'
> +
> test_done
> -
Looks sensible in principle, but now the git-repack and git-config docs
talking about repack.writeBitmaps are out-of-date. A v2 should update
those.
Also worth testing that -c repack.writeBitmaps=false on a bare
repository still overrides it, even though glancing at the code it looks
like that case is handled, but without being tested for.
next prev parent reply other threads:[~2019-03-12 9:07 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-14 4:31 [PATCH 0/3] some prune optimizations Jeff King
2019-02-14 4:35 ` [PATCH 1/3] prune: lazily perform reachability traversal Jeff King
2019-02-14 10:54 ` Eric Sunshine
2019-02-14 11:07 ` Jeff King
2019-02-14 4:37 ` [PATCH 2/3] prune: use bitmaps for " Jeff King
2019-03-09 2:49 ` bitmaps by default? [was: prune: use bitmaps for reachability traversal] Eric Wong
2019-03-10 23:39 ` Jeff King
2019-03-12 3:13 ` [PATCH] repack: enable bitmaps by default on bare repos Eric Wong
2019-03-12 9:07 ` Ævar Arnfjörð Bjarmason [this message]
2019-03-12 10:49 ` Jeff King
2019-03-12 12:05 ` Jeff King
2019-03-13 1:51 ` Eric Wong
2019-03-13 14:54 ` Jeff King
2019-03-14 9:12 ` [PATCH v3] " Eric Wong
2019-03-14 16:02 ` Jeff King
2019-03-15 6:21 ` [PATCH 0/2] enable bitmap hash-cache by default Jeff King
2019-03-15 6:22 ` [PATCH 1/2] t5310: correctly remove bitmaps for jgit test Jeff King
2019-03-15 13:25 ` SZEDER Gábor
2019-03-15 18:36 ` Jeff King
2019-03-15 6:25 ` [PATCH 2/2] pack-objects: default to writing bitmap hash-cache Jeff King
2019-04-09 15:10 ` [PATCH v3] repack: enable bitmaps by default on bare repos Ævar Arnfjörð Bjarmason
2019-04-10 22:57 ` Jeff King
2019-04-25 7:16 ` Junio C Hamano
2019-05-04 1:37 ` Jeff King
2019-05-04 6:52 ` Ævar Arnfjörð Bjarmason
2019-05-04 13:23 ` SZEDER Gábor
2019-05-08 20:17 ` Ævar Arnfjörð Bjarmason
2019-05-09 4:24 ` Junio C Hamano
2019-05-07 7:45 ` Jeff King
2019-05-07 8:12 ` Ævar Arnfjörð Bjarmason
2019-05-08 7:11 ` Jeff King
2019-05-08 14:20 ` Derrick Stolee
2019-05-08 16:13 ` Ævar Arnfjörð Bjarmason
2019-05-08 22:25 ` Jeff King
2019-05-23 11:30 ` Jeff King
2019-05-23 12:53 ` Derrick Stolee
2019-05-24 7:24 ` Jeff King
2019-05-24 10:33 ` Derrick Stolee
2019-05-23 19:26 ` Ævar Arnfjörð Bjarmason
2019-05-24 7:27 ` Jeff King
2019-05-24 7:55 ` Ævar Arnfjörð Bjarmason
2019-05-24 8:26 ` Jeff King
2019-05-24 9:01 ` Ævar Arnfjörð Bjarmason
2019-05-24 9:29 ` SZEDER Gábor
2019-05-24 11:17 ` Ævar Arnfjörð Bjarmason
2019-05-24 11:41 ` SZEDER Gábor
2019-05-24 11:58 ` Ævar Arnfjörð Bjarmason
2019-05-24 12:34 ` SZEDER Gábor
2019-05-24 13:41 ` Ævar Arnfjörð Bjarmason
2019-05-24 11:31 ` [PATCH] pack-bitmap: look for an uninteresting bitmap Derrick Stolee
2019-04-15 15:00 ` [PATCH 2/3] prune: use bitmaps for reachability traversal Derrick Stolee
2019-04-18 19:49 ` Jeff King
2019-04-18 20:08 ` [PATCH] t5304: add a test for pruning with bitmaps Jeff King
2019-04-20 1:01 ` Derrick Stolee
2019-04-20 3:24 ` Jeff King
2019-04-20 21:01 ` Derrick Stolee
2019-02-14 4:38 ` [PATCH 3/3] prune: check SEEN flag for reachability Jeff King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=871s3ccvg5.fsf@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=e@80x24.org \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).