Description
Problem
Currently, Cargo includes a .cargo_vcs_info.json
file when publishing, but only if the working copy is clean and --allow-dirty
is not used.
However, this metadata is needed regardless whether the directory was modified or not. It's unlikely the path in repo would change, and it is still needed for resolving relative paths in README, creating links to the crate, and still helpful for quickly finding the crate in its repository.
Even having the commit hash is still useful, because it provides a base commit to diff from.
There are situations where it's still necessary to edit the Cargo.toml
file, e.g. to publish crates with circular dev dependencies (#4242), or explicitly specified tests/benchmarks that are excluded from the tarball (#13456). In this case the commit hash is basically still accurate.
Note that Cargo omitting the commit hash when the directory is dirty is not a guarantee that packages with a commit hash are matching their commit. Dishonest users can always modify Cargo to make it lie or upload a manipulated tarball themselves, so this file is informational, not an integrity guarantee.
Proposed Solution
Cargo could always include the commit hash when available. Perhaps add "dirty":true
if reporting that state is deemed important. Alternatively, provide an option of --allow-dirty-but-still-include-the-commit-hash
.
Notes
No response