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

Re: Interpretation of '/' changed sparse-checkout

From
CMCaleb Marchent <cmarchent@aminocom.com>
Date
May 23, 2012, 14:09 UTC
Message-ID
<loom.20120523T160215-390@post.gmane.org>
In-Reply-To
<loom.20120521T183651-286@post.gmane.org>
Caleb Marchent <cmarchent <at> aminocom.com> writes:

Corrected cut-paste errors on first submission, seems I missed a bunch of terminating '/' when hand-copying the text in from the sparse-checkout files :-( Sorry.

I have a system where I checkout by default everything except one directory. Then the rules in the top-level sources can selectivly reintroduce subdirectories as required for the build target. I have deployed, using git 1.7.2.5, a set of git trees which use the following sparse-checkout rules to achieve this.

/ !exclude/ exclude/reinclude/

I have however discovered that if the reincluded directory is the same as the 
first part of any other path then that path will also be checked out.
 
/
!exlcude/
exclude/wanted/
 
will checkout both:

exclude/wanted/ exclude/wanted_not/

This appears to have bee fixed in git 1.7.10.2 but from that version of git 
onwards using '/' to request everything and then exclude a specific directory 
from it no longer works.
 
While I have been able to contrive the same effect with recent versions of git 
using the following updated sparse-checkout rules
 
/*
!exclude/
exclude/reinclude/
 
Even with this work-around there are two problems:
1) If I have a path: exclude/reinclude/exclude, this will now be exluded where 
I would expect it to be included as it was with 1.7.2.5
 
2) I have a large number of deployed trees across a number of machines that 
have the existing format which will break when git operations are performed 
after a upgrade to the latest git.
 
I believe that the interpretation of '/' should be 'everything in the repo', 
from which later rules can exclude. I think this is a bug in recent versions 
of git. I have been working on some ideas for a fix to the git code based along 
these lines. Can anyone confirm if my analysis is correct or provide an 
alternate solution?
 
Also I would like to know if anyone knows the solution to point 1) above as 
this also blocks upgrading to the latest version of git.
 
 
Previous: Caleb MarchentNext: Nguyen Thai Ngoc Duy
Message 2 of 4 in “Interpretation of '/' changed sparse-checkout”
  1. Caleb MarchentMay 23, 2012
  2. Caleb MarchentMay 23, 2012
  3. Nguyen Thai Ngoc DuyMay 24, 2012
  4. Caleb MarchentMay 25, 2012

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.