gitman icon indicating copy to clipboard operation
gitman copied to clipboard

Changes to 'sparse_paths' are not reflected on subsequent installs

Open holdenrehg opened this issue 4 years ago • 3 comments

There was something pointed out in Issue https://github.com/jacebrowning/gitman/issues/218 that I ran into today:

Updating sparse_paths entries It looks like at the moment the sparse_paths entries are only written during the initial cloning. So if we later decide we need more files from a repo, we can not simply update the gitman.yml file and do an update, we need to either delete the repo first, or manually update the sparse-checkout file.

I'm not sure if this is expected behavior or not. It doesn't feel too natural that updating sparse_paths and then re-running install or update doesn't pull in the new paths defined. It does look like you need to delete the entire dependency folder and re-run.

holdenrehg avatar Sep 05 '21 01:09 holdenrehg

It doesn't feel too natural that updating sparse_paths and then re-running install or update doesn't pull in the new paths defined.

I agree and would be open to a PR that changes that.

jacebrowning avatar Sep 06 '21 16:09 jacebrowning

Hi @jacebrowning, I ran into this for a very specific use case and would like to take a shot at making a PR.

A couple of questions from a quick look through the source:

Is there a minimum version of git that is supported? I noticed gitman currently manually creates .git/info/sparse-checkout rather than using git sparse-checkout <init/set/add/reapply/enable/disable> from git 2.25 (2020) I believe. Can understand if you want to support older versions of git, but just checking if I should update things to use the new command while I'm in here.

It seems like this is just a case of passing sprase_paths into update and checking if there's a mismatch, e.g.:

  • full checkout -> sparse (new entries)
  • sparse -> updated sparse (updated entries)
  • sparse -> full checkout (all entries removed)

I'm assuming we'd want to do this check somewhere towards the end of update here after all of the clone/local changes present/etc. checks?

If that all sounds reasonable, I can put up a PR with updated test cases (for the above transitions) in the near-ish future.

ksharma-bdai avatar Aug 11 '23 19:08 ksharma-bdai

@ksharma-bdai Right now the README calls out Git 2.8+, but if we need to bump that to include newer features, that's fine.

I didn't write most of the sparse_paths logic so I'd recommend looking through git blame to locate the original PR authors.

jacebrowning avatar Aug 12 '23 19:08 jacebrowning