From: Junio C Hamano <gitster@pobox.com>
To: Jonathan Tan <jonathantanmy@google.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] fetch-pack: in partial clone, pass --promisor
Date: Thu, 20 Aug 2020 13:11:20 -0700 [thread overview]
Message-ID: <xmqqimddaxhz.fsf@gitster.c.googlers.com> (raw)
In-Reply-To: <20200820175116.3889786-1-jonathantanmy@google.com> (Jonathan Tan's message of "Thu, 20 Aug 2020 10:51:16 -0700")
Jonathan Tan <jonathantanmy@google.com> writes:
> When fetching a pack from a promisor remote, the corresponding .promisor
> file needs to be created. "fetch-pack" originally did this by passing
> "--promisor" to "index-pack", but in 5374a290aa ("fetch-pack: write
> fetched refs to .promisor", 2019-10-16), "fetch-pack" was taught to do
> this itself instead, because it needed to store ref information in the
> .promisor file.
So is this patch a fix for a regression in v2.25?
> This causes a problem ...
> ...
> An alternative is to instead move object checking to "fetch-pack", and
> let "index-pack" only index the files. However, since "index-pack" has
> to inflate objects in order to index them, it seems reasonable to also
> let it check the objects (which also require inflated files).
I can see why it might feel attractive to draw the line to divide
the labor between the two that way, but I 100% agree with your
reasoning---index-pack needs to inspect the objects in order for it
to be able to index, and in order for us to be able to trust the
resulting index, it should be validating the objects it identified
while it was indexing the pack stream.
> +
> + if (args->from_promisor)
> + /*
> + * write_promisor_file() may be called afterwards but
> + * we still need index-pack to know that this is a
> + * promisor pack. For example, if transfer.fsckobjects
> + * is true, index-pack needs to know that .gitmodules
> + * is a promisor object (so that it won't complain if
> + * it is missing).
> + */
> strvec_push(&cmd.args, "--promisor");
> }
> else {
> diff --git a/t/t5616-partial-clone.sh b/t/t5616-partial-clone.sh
> index 8827c2ed18..5a01466db4 100755
> --- a/t/t5616-partial-clone.sh
> +++ b/t/t5616-partial-clone.sh
> @@ -163,6 +163,22 @@ test_expect_success 'manual prefetch of missing objects' '
> test_line_count = 0 observed.oids
> '
>
> +test_expect_success 'partial clone with transfer.fsckobjects=1 works with submodules' '
> + test_create_repo submodule &&
> + test_commit -C submodule mycommit &&
> +
> + test_create_repo src_with_sub &&
> + test_config -C src_with_sub uploadpack.allowfilter 1 &&
> + test_config -C src_with_sub uploadpack.allowanysha1inwant 1 &&
> +
> + git -C src_with_sub submodule add "file://$(pwd)/submodule" mysub &&
> + git -C src_with_sub commit -m "commit with submodule" &&
> +
> + git -c transfer.fsckobjects=1 \
> + clone --filter="blob:none" "file://$(pwd)/src_with_sub" dst &&
> + test_when_finished rm -rf dst
> +'
> +
> test_expect_success 'partial clone with transfer.fsckobjects=1 uses index-pack --fsck-objects' '
> git init src &&
> test_commit -C src x &&
next prev parent reply other threads:[~2020-08-20 20:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-20 17:51 [PATCH] fetch-pack: in partial clone, pass --promisor Jonathan Tan
2020-08-20 20:11 ` Junio C Hamano [this message]
2020-08-21 21:08 ` Jonathan Tan
2020-08-21 21:42 ` Junio C Hamano
-- strict thread matches above, loose matches on Subject: below --
2020-08-24 19:16 [PATCH 0/7] Better threaded delta resolution in index-pack (another try) Jonathan Tan
2020-08-24 19:16 ` [PATCH] fetch-pack: in partial clone, pass --promisor Jonathan Tan
2020-08-24 19:36 ` Jonathan Tan
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=xmqqimddaxhz.fsf@gitster.c.googlers.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=jonathantanmy@google.com \
/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).