git sparse-checkout ignore specific file type
Asked Answered
S

1

5

I have a git repository with a bunch of large csv in them, which I don't want to clone, so I came across git sparse-checkout and this post: https://github.blog/2020-01-17-bring-your-monorepo-down-to-size-with-sparse-checkout/

From this post I took following:

git clone --no-checkout https://github.com/john_doe/repo-with-big-csv.git
cd repo-with-big-csv
git sparse-checkout init --cone

Then I edit the .git/info/sparse-checkout and add the following (adapted from example in page above):

/*
!**/*.csv

But it doesn't seem to work properly. After git pull some folders are cloned, some are not. I also noticed a warning, when I do git sparse-checkout list I get:

warning: unrecognized pattern: '**/*.csv'
warning: disabling cone pattern matching
/*
!**/*.csv

What's the proper way to ignore a certain file type only?

Splenitis answered 5/5, 2020 at 21:51 Comment(1)
** doesn't seem to fit the model of the optimized cone-mode bloom-filter path filtering. I think the example on that web page is just poorly described. (You don't have to use cone mode, of course.)Collimator
B
1

See "Git sparse checkout with exclusion" and make sure to use Git 2.26.x, which has some fixes for the git sparse-checkout command.

When in cone mode, the git sparse-checkout set subcommand takes a list of directories instead of a list of sparse-checkout patterns

If core.sparseCheckoutCone=true, then Git will parse the sparse-checkout file expecting patterns of these types. Git will warn if the patterns do not match.

You need to only use restrict patterns based on folder prefix matches.


The OP Frode Akselsen adds in the comments:

my example is actually working: the folders that don't show up just contain only .csv files, hence, after applying the rules in .git/info/sparse-checkout, nothing is in the folder anymore and therefore Git doesn't show the folder.

I confirm Git will only show content: if folder has no file (no "content"), said folder is not visible.

Broch answered 6/5, 2020 at 5:52 Comment(3)
Thanks, I just realized that my example is actually working, the folders that don't show up just contain only .csv files, hence, after applying the rules in .git/info/sparse-checkout nothing is in the folder anymore and therefore git doesn't show the folder.Splenitis
@FrodeAkselsen Thank you for this informative feedback. I have included your comment in the answer for more visibility.Broch
@rkudinov I am sorry to hear that. What is missing in your specific case, in order to solve your issue?Broch

© 2022 - 2024 — McMap. All rights reserved.