git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: should git maintenance prefetch be taught to honor remote.fetch refspec?

From
TSTom Saeger <tom.saeger@oracle.com>
Date
Apr 2, 2021, 21:33 UTC
Message-ID
<20210402213312.2rpsjqcuhl4n46il@brm-x62-17.us.oracle.com>
In-Reply-To
<xmqq1rbs4c6t.fsf@gitster.g>
On Fri, Apr 02, 2021 at 02:19:06PM -0700, Junio C Hamano wrote:
Show 41 quoted lines
> 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
> 
> 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?
> 
> 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.
FWIW - did this locally to test:

git show-ref | grep -F "prefetch" | cut -d' ' -f2 | while read -r ref ; do git update-ref -d $ref; done git maintenance run --task prefetch git show-ref | egrep "refs/remotes" | wc -l git show-ref | egrep "refs/prefetch" | wc -l

Previous: Junio C HamanoNext: Derrick Stolee
Message 15 of 27 in “should git maintenance prefetch be taught to honor remote.fetch refspec?”
  1. Tom SaegerApr 1, 2021
  2. Derrick StoleeApr 1, 2021
  3. Tom SaegerApr 1, 2021
  4. Junio C HamanoApr 1, 2021
  5. Tom SaegerApr 1, 2021
  6. Derrick StoleeApr 1, 2021
  7. Tom SaegerApr 2, 2021
  8. Derrick StoleeApr 2, 2021
  9. Derrick StoleeApr 2, 2021
  10. Tom SaegerApr 2, 2021
  11. Junio C HamanoApr 2, 2021
  12. Tom SaegerApr 2, 2021
  13. Tom SaegerApr 2, 2021
  14. Junio C HamanoApr 2, 2021
  15. Tom SaegerApr 2, 2021
  16. Derrick StoleeApr 4, 2021
  17. Junio C HamanoApr 4, 2021
  18. Derrick StoleeApr 5, 2021
  19. Junio C HamanoApr 5, 2021
  20. Tom SaegerApr 5, 2021
  21. Junio C HamanoApr 5, 2021
  22. Derrick StoleeApr 5, 2021
  23. Tom SaegerApr 5, 2021
  24. Derrick StoleeApr 5, 2021
  25. Eric SunshineApr 2, 2021
  26. Tom SaegerApr 3, 2021
  27. Derrick StoleeApr 3, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.