Skip to content
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

fix: add error message for github PR url in dep #15003

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

joshka
Copy link

@joshka joshka commented Jan 2, 2025

Prior to this, using a github PR URL would cause cargo to attempt to
fetch from an incorrect URL several times before failing.
Providing a github pull request url now fails with an error message
that shows how to fix the problem.

E.g.:

bar = { git = "https://github.com/foo/bar/pull/123" }

Now gives the following error message:

dependency (bar) specifies a GitHub pull request link. If you were trying to specify a specific github PR, replace the URL with the git URL (e.g. `git = "https://github.com/foo/bar.git"`) and add `rev = "refs/pull/123/head"` in the dependency declaration.

Fixes: #15001

Prior to this, using a github PR URL would cause cargo to attempt to
fetch from an incorrect URL several times before failing.
Providing a github pull request url now fails with an error message
that shows how to fix the problem.

E.g.:
```toml
bar = { git = "https://github.com/foo/bar/pull/123" }
```
Now gives the following error message:
```
dependency (bar) specifies a GitHub pull request link. If you were trying to specify a specific github PR, replace the URL with the git URL (e.g. `git = "https://github.com/foo/bar.git"`) and add `rev = "refs/pull/123/head"` in the dependency declaration.
```

Fixes: rust-lang#15001
@rustbot
Copy link
Collaborator

rustbot commented Jan 2, 2025

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @weihanglo (or someone else) some time within the next two weeks.

Please see the contribution instructions for more information. Namely, in order to ensure the minimum review times lag, PR authors and assigned reviewers should ensure that the review label (S-waiting-on-review and S-waiting-on-author) stays updated, invoking these commands when appropriate:

  • @rustbot author: the review is finished, PR author should check the comments and take action accordingly
  • @rustbot review: the author is ready for a review, this PR will be queued again in the reviewer's queue

@rustbot rustbot added A-manifest Area: Cargo.toml issues S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 2, 2025
src/cargo/util/toml/mod.rs Outdated Show resolved Hide resolved
tests/testsuite/bad_config.rs Outdated Show resolved Hide resolved
Copy link
Member

@weihanglo weihanglo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! If needed, we can iterate it later :)

@weihanglo weihanglo enabled auto-merge January 9, 2025 14:08
@joshka
Copy link
Author

joshka commented Jan 9, 2025

I'm not quite sure what the right approach to getting the tests to succeed both in CI and locally for this change. Any guidance?

Comment on lines 2178 to 2198
[WARNING] spurious network error (3 tries remaining): unexpected http status code: 404; class=Http (34)
[WARNING] spurious network error (2 tries remaining): unexpected http status code: 404; class=Http (34)
[WARNING] spurious network error (1 tries remaining): unexpected http status code: 404; class=Http (34)
[ERROR] failed to get `bar` as a dependency of package `foo v0.0.0 ([ROOT]/foo)`

Caused by:
failed to load source for dependency `bar`

Caused by:
Unable to update https://github.com/foo/bar/pull/123

Caused by:
failed to clone into: [ROOT]/home/.cargo/git/db/123-[HASH]

Caused by:
network failure seems to have happened
if a proxy or similar is necessary `net.git-fetch-with-cli` may help here
https://doc.rust-lang.org/cargo/reference/config.html#netgit-fetch-with-cli

Caused by:
unexpected http status code: 404; class=Http (34)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting. I thought it was network flakiness. Anyway, you can use ... to omit the unimportant part.

Suggested change
[WARNING] spurious network error (3 tries remaining): unexpected http status code: 404; class=Http (34)
[WARNING] spurious network error (2 tries remaining): unexpected http status code: 404; class=Http (34)
[WARNING] spurious network error (1 tries remaining): unexpected http status code: 404; class=Http (34)
[ERROR] failed to get `bar` as a dependency of package `foo v0.0.0 ([ROOT]/foo)`
Caused by:
failed to load source for dependency `bar`
Caused by:
Unable to update https://github.com/foo/bar/pull/123
Caused by:
failed to clone into: [ROOT]/home/.cargo/git/db/123-[HASH]
Caused by:
network failure seems to have happened
if a proxy or similar is necessary `net.git-fetch-with-cli` may help here
https://doc.rust-lang.org/cargo/reference/config.html#netgit-fetch-with-cli
Caused by:
unexpected http status code: 404; class=Http (34)
...
[ERROR] failed to get `bar` as a dependency of package `foo v0.0.0 ([ROOT]/foo)`
Caused by:
failed to load source for dependency `bar`
Caused by:
Unable to update https://github.com/foo/bar/pull/123
...

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the problem with not making this change cause an error. If this is a warning, then after emitting the warning, cargo will attempt to load the github PR url, which is not a git repo, and so that attempt will 404 or some other error (e.g. not a git repo). I think that ... change would make sense though, so committing it as is.

PS. feel free to squash this commit (I know Ed prefers atomic commits in the shape that will end up in the repo, but this is really a single change - not sure how that applies to this project).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[patch] test also needs the same trick :)

auto-merge was automatically disabled January 9, 2025 23:25

Head branch was pushed to by a user without write access

@epage
Copy link
Contributor

epage commented Jan 10, 2025

Sorry I've not been able to get back to this and thanks @weihanglo for picking it up.

A non-blocking thought (since some improvement is better than no improvement) is to offer something similar for cargo add --git URL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-manifest Area: Cargo.toml issues S-waiting-on-review Status: Awaiting review from the assignee but also interested parties.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Allow specifying pull request deps using the github PR link
4 participants