-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cargo build crash in project with git Split Index #10150
Comments
Confirmed that libgit2 v1.3.0, the C library wrapped by Cargo's git2 dependency, doesn't yet support split-index extension at this moment. https://github.com/libgit2/libgit2/blob/v1.3.0/src/index.c#L2604-L2616 |
Bringing the discussion from #13498 back into the issue. This issue is preventing me from vendoring crates into a repo that uses unsupported git extensions. When attempting to build any crate that has a Potential solutions:
|
It looks like this code segment in Cargo is involved in triggering this behaviour as suggested by Weihanglo. A Please note that in order to be fully Git compatible, one has to consider the Git index, which as far as I know PS: Here is the PR that added |
Update from the meeting last week: @arlosi is going to try to investigate if it is feasible to have a |
Use `gitoxide` for `list_files_git` Related to #10150. ### Tasks * [x] update `gix` to v0.60 * [x] assure this is tested (currently only git-tests run with `git2` and `gitoxide`) * [x] allow `list_files_git` to use `gitoxide` if it is enabled as feature. * [x] use dirwalk iterator * [x] 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.
Problem
Cargo build is breaking when a build.rs file is present in a project with a git repo using split indexes.
Steps to Reproduce
I have made a small repo where you can reproduce the issue https://github.com/Samangan/cargo-split-index-bug
Version
The text was updated successfully, but these errors were encountered: