1

Use `gitoxide` for `list_files_git` by Byron · Pull Request #13592 · rust-lang/c...

 1 month ago
source link: https://github.com/rust-lang/cargo/pull/13592
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Member

@Byron Byron

commented

Mar 15, 2024

edited

Related to #10150.

Tasks

  • update gix to v0.60
  • assure this is tested (currently only git-tests run with git2 and gitoxide)
  • allow list_files_git to use gitoxide if it is enabled as feature.
  • use dirwalk iterator
  • use new release of gix with necessary updates

Review Notes

As this PR has come a long way, I decided to keep a few of the steps leading up to the final state, showing the PR's evolution in the hope it helps the review.

  • Would it be better to simply use gitoxide for this without a switch? I don't think
    it will cause more trouble than git2, and if there is an issue I will fix it with priority.
  • In one test, the walk resolves a symlink to a submodule to individual files, including the .git/* folder contained in the submodule which is ignored by the walk, i.e. submodule/* does not contain it, but submodule-link/* does. This is fixed in the gitoxide version, and the git2 version.
  • I noticed that symlinks are resolved for packaging and are allowed to point to anywhere, even outside of package root. I left it, but felt that maybe this should be reconsidered.

Remarks

  • I love the test-suite! It's incredibly exhaustive to the point where it uncovers shortcomings in gitoxide, which I greatly appreciate.
  • I also love git2 as it's API for many things leads to pretty idiomatic code, and sometimes I really have to work to match it. The example here is the initial dirwalk() method which requires a delegate as it doesn't just collect into a Vec like git2 does (for good reason). Turning that into an iterator via dirwalk_iter() makes it far more usable, and will definitely be good for performance as the dirwalk work is offloaded into its own thread.
weihanglo reacted with thumbs up emoji

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK