From: "JunkYardMail1" <JunkYardMail1@Frontier.com>
To: "'Derrick Stolee'" <stolee@gmail.com>, <git@vger.kernel.org>
Subject: RE: Sparse Checkout Trouble (2.5.0)
Date: Tue, 21 Jan 2020 18:06:54 -0800 [thread overview]
Message-ID: <062f01d5d0c8$9ec6c140$dc5443c0$@Frontier.com> (raw)
In-Reply-To: <d4056731-c13b-c89d-dfd2-e6235e29fed6@gmail.com>
Yes. Using git for Windows with bash terminal and Git Extensions GUI.
The reason for the sparse checkout pattern is that the repo is very large, approximately a gigabyte, and I only need of few sub-directories that amount to only about 60 megabytes.
The first sparse checkout rule "!/*/" is expected to exclude everything.
The second sparse checkout rule "/*/directory-*/" is expected to include only sub-directories that contain "directory-" as the leading part of a directory element.
Looks like you're able to reproduce the issue and are hot on the trail. Thanks.
-----Original Message-----
From: Derrick Stolee [mailto:stolee@gmail.com]
Sent: Tuesday, January 21, 2020 5:19 PM
To: JunkYardMail1 <JunkYardMail1@Frontier.com>; git@vger.kernel.org
Subject: Re: Sparse Checkout Trouble (2.5.0)
On 1/21/2020 7:42 PM, JunkYardMail1 wrote:
> I have a shallow repository clone and using sparse-checkout of just a
> handful of directories. When I upgraded from git version 2.24.1 to
> 2.25.0 some files not in the sparse-checkout were staged to be
> deleted. The directory path of these files contain the Windows reserved name of "prn".
> Ex: "japanese/prn/. . ." Unable to un-stage these files and reset the
> changes.
Are you using Git for Windows? I'm not sure why the "prn" would be important otherwise.
> !/*/
> /*/directory-*/
I don't see anything complicated with these patterns, although they seem a bit strange. Why would you not want anything in a directory except one named "<something>/directory-<anotherthing>/"? Is this actually the exact pattern set?
> Reverting back to the previous version (2.24.1) allowed to un-stage
> the files and reset the changes.
This is definitely pointing to a regression, and the feature did get a bit of an overhaul. The goal was to not change how existing users interacted with it, though, so this is a bit alarming.
I did find a behavior change related to these paths in Git for Windows
2.25.0 versus 2.24.1:
$ git clone https://github.com/derrickstolee/git-sparse-checkout-test
Cloning into 'git-sparse-checkout-test'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 6 (delta 0), pack-reused 0
Receiving objects: 100% (6/6), done.
error: invalid path 'directory-1/prn/a'
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'
The checkout here is _expected_ to fail, due to the protected filenames. What is troublesome is the following sparse-checkout commands fail, and the read-tree command fails in a way that
2.24.1 does not:
$ git sparse-checkout init
error: invalid path 'directory-1/prn/a'
error: invalid path 'directory-1/prn/a'
$ git sparse-checkout set "/*" "\!/*/"
error: invalid path 'directory-1/prn/a'
error: invalid path 'directory-1/prn/a'
$ git read-tree -mu HEAD
error: invalid path 'directory-1/prn/a'
The double error messages are due to the "try with an in-memory pattern set, then roll back if there is a failure." The patterns we are trying to create do not include the directory that is failing.
I'll keep looking into this.
Thanks,
-Stolee
next prev parent reply other threads:[~2020-01-22 2:06 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-22 0:42 Sparse Checkout Trouble (2.5.0) JunkYardMail1
2020-01-22 1:19 ` Derrick Stolee
2020-01-22 2:06 ` JunkYardMail1 [this message]
2020-01-24 15:40 ` Derrick Stolee
2020-01-25 20:59 ` Elijah Newren
2020-01-26 14:09 ` Derrick Stolee
2020-01-28 5:21 ` Elijah Newren
2020-01-28 20:47 ` Derrick Stolee
2020-01-29 15:30 ` Johannes Schindelin
2020-01-29 15:40 ` Derrick Stolee
2020-01-29 16:31 ` 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='062f01d5d0c8$9ec6c140$dc5443c0$@Frontier.com' \
--to=junkyardmail1@frontier.com \
--cc=git@vger.kernel.org \
--cc=stolee@gmail.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).