From: Derrick Stolee <stolee@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Tom Saeger <tom.saeger@oracle.com>, git@vger.kernel.org
Subject: Re: should git maintenance prefetch be taught to honor remote.fetch refspec?
Date: Sun, 4 Apr 2021 16:25:44 -0400 [thread overview]
Message-ID: <f113284b-a7fe-ba7f-ce1c-d214efd5d0c6@gmail.com> (raw)
In-Reply-To: <xmqq1rbs4c6t.fsf@gitster.g>
On 4/2/2021 5:19 PM, Junio C Hamano wrote:
> Derrick Stolee <stolee@gmail.com> writes:
>
>> The other issue is that exact matches (no "*") have an exact
>> string in the destination, too, so replacing the _entire_
>> destination with "refs/prefetch/<remote>/*" breaks the refspec.
>> I think the substring approach will still work here.
>
> I wonder if that matters. If the exact format says
>
> [remote "origin"]
> url = git://git.kernel.org/pub/scm/git/git.git/
> fetch = +refs/heads/todo:refs/x/y/z
>
> you can just add refs/prefetch/<remote>/ to the entire RHS to ensure
> that (1) the prefetch would not affect anything outside the 'prefetch'
> to break @{upstream} and friends, and (2) the prefetch from this remote
> would not affect anything used for other remotes.
>
> IOW, the RHS, as long as it is hidden from normal operations and
> does not conflict with interaction with other repositories, where
> exactly in the refs hierarchy these objects are "parked" does not
> matter, I would think.
>
> I do not recommend unparsed refspec and textually munging, by the
> way. Doesn't
>
> git fetch master:remotes/origin/master
>
> first parse to normalize the src/dst sides to turn it into
>
> git fetch refs/heads/master:refs/remotes/origin/master
I do not see evidence of this being reflected in my testing. The
good news is that I'm creating a test scenario that will give us
a clear way to test what the refspec parsing (and new output
format logic) is doing.
Now, it might be that we are having an equivalent behavior to
what you are suggesting because of the way refs are interpreted
when those refs are created based on the refspec. This complicates
things slightly, and I can work to see if there is a good way to
modify the refspec parsing to make this an explicit assumption.
> which is what you want to further redirect to the prefetch hierarchy
>
> git fetch +refs/heads/master:refs/prefetch/origin/refs/remotes/origin/master
>
> or whatever munging scheme is used?
The replacement will use the existing refspec's patterns for
partitioning the refspace, except we add 'prefetch' and no longer
insert the remote name ourselves. This allows us to have shorter
refnames while respecting the given layout as much as possible.
> Also, I wonder if there should be a mechanism to prune the
> prefetched refs, but that is totally outside the scope of the
> problem we have been discussing in this thread.
Yes, this is a good idea. Prefetch refs are going to add the
"force" option (starts with '+') because these refs should be
updated automatically when the remote refs are force-pushed.
Having a mechanism for removing dropped refs is a good idea.
Thanks,
-Stolee
next prev parent reply other threads:[~2021-04-04 20:25 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-01 18:49 should git maintenance prefetch be taught to honor remote.fetch refspec? Tom Saeger
2021-04-01 19:07 ` Derrick Stolee
2021-04-01 19:42 ` Tom Saeger
2021-04-01 20:14 ` Junio C Hamano
2021-04-01 22:11 ` Tom Saeger
2021-04-01 22:25 ` Derrick Stolee
2021-04-02 18:27 ` Tom Saeger
2021-04-02 20:43 ` Derrick Stolee
2021-04-02 21:07 ` Derrick Stolee
2021-04-02 21:39 ` Tom Saeger
2021-04-02 22:09 ` Junio C Hamano
2021-04-02 22:27 ` Tom Saeger
2021-04-02 21:15 ` Tom Saeger
2021-04-02 21:19 ` Junio C Hamano
2021-04-02 21:33 ` Tom Saeger
2021-04-04 20:25 ` Derrick Stolee [this message]
2021-04-04 23:10 ` Junio C Hamano
2021-04-05 13:20 ` Derrick Stolee
2021-04-05 18:48 ` Junio C Hamano
2021-04-05 20:38 ` Tom Saeger
2021-04-05 20:47 ` Junio C Hamano
2021-04-05 20:49 ` Derrick Stolee
2021-04-05 20:50 ` Tom Saeger
2021-04-05 20:54 ` Derrick Stolee
2021-04-02 22:32 ` Eric Sunshine
2021-04-03 20:21 ` Tom Saeger
2021-04-03 22:41 ` Derrick Stolee
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f113284b-a7fe-ba7f-ce1c-d214efd5d0c6@gmail.com \
--to=stolee@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=tom.saeger@oracle.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.
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 NNTP newsgroup(s).