-
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
fix(package): warn if symlinks checked out as plain text files #14994
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rustbot
added
A-git
Area: anything dealing with git
Command-package
Command-vendor
S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
labels
Dec 31, 2024
weihanglo
force-pushed
the
git-core-symlinks-false
branch
2 times, most recently
from
December 31, 2024 04:23
72378eb
to
ffdab25
Compare
epage
reviewed
Dec 31, 2024
This gives us more room to store file metadata. For example, * knowing a source file is a symlink and resolving it when packaging, * providing a rich JSON output for `cargo package --list` * enriching the `.cargo-vcs-info.json` with copied/symlinked file info
So that we can tell whether a path is a symlink and need to traverse to the actual file to check dirtiness or copy real content.
weihanglo
force-pushed
the
git-core-symlinks-false
branch
from
December 31, 2024 16:54
ffdab25
to
06d7265
Compare
weihanglo
changed the title
feat(package): warn if symlinks checked out as plain text files
fix(package): warn if symlinks checked out as plain text files
Dec 31, 2024
epage
reviewed
Dec 31, 2024
epage
reviewed
Dec 31, 2024
epage
reviewed
Dec 31, 2024
epage
reviewed
Dec 31, 2024
`cargo package` will warn users when git `core.symlinks` is `false` and some symlinks were checked out as plain files during packaging. Git config [`core.symlinks`] defaults to true when unset. In git-for-windows (and git as well), the config should be set to false explicitly when the repo was created, if symlink support wasn't detected [^1]. We assume the config was always set at creation time and never changed. So, if it is true, we don't bother users with any warning. [^1]: <https://github.com/git-for-windows/git/blob/f1241afcc7956918d5da33ef74abd9cbba369247/setup.c#L2394-L2403> [`core.symlinks`]: https://git-scm.com/docs/git-config#Documentation/git-config.txt-coresymlinks
weihanglo
force-pushed
the
git-core-symlinks-false
branch
from
December 31, 2024 19:20
06d7265
to
059fe16
Compare
All suggestions are resolved, and also slightly tweaked the message, as the code path is not specific to |
epage
approved these changes
Dec 31, 2024
bors
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Dec 31, 2024
Update cargo 5 commits in c86f4b3a1b153218e6e50861214b0b4b4e695f23..d73d2caf9e41a39daf2a8d6ce60ec80bf354d2a7 2024-12-24 17:49:48 +0000 to 2024-12-31 20:51:21 +0000 - fix(package): warn if symlinks checked out as plain text files (rust-lang/cargo#14994) - test: track caller for `.crate` file publish verification (rust-lang/cargo#14992) - test: relax panic output assertion (rust-lang/cargo#14989) - test: relax `bad_crate_type` to only match error message prefix (rust-lang/cargo#14990) - refactor(package): split `cargo_package` to modules (rust-lang/cargo#14982) r? ghost
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
A-git
Area: anything dealing with git
Command-package
Command-vendor
S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What does this PR try to resolve?
cargo package
will warn users when gitcore.symlinks
isfalse
and some symlinks were checked out as plain files during packaging.
Git config
core.symlinks
defaults to true when unset.In git-for-windows (and git as well),
the config should be set to false explicitly when the repo was created,
if symlink support wasn't detected 1.
We assume the config was always set at creation time and never changed.
So, if it is true, we don't bother users with any warning.
How should we test and review this PR?
CI passes.
This shares two commits 42dc4ef and c8c8223 with #14981.
I didn't commit to fix all symlink issues all at once.
This PR demonstrates how we could leverage metadata in
PathEntry
.Maybe later we can really follow plain-text symlinks and resolve the issue.
Additional information
cc #5664
Footnotes
https://github.com/git-for-windows/git/blob/f1241afcc7956918d5da33ef74abd9cbba369247/setup.c#L2394-L2403 ↩