new/init: default git branch to 'main'; update tests and Dockerfiles #15857
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.
Summary
cargo new
/cargo init
initializes Git repos withmain
as the default branch.Motivation
init.defaultBranch
.Behavior change
master
or follow user Git config.main
for repos initialized by Cargo. Existing repos unaffected.Implementation details
RepositoryInitOptions::initial_head("main")
inGitRepo::init
.src/cargo/util/vcs.rs
tests/testsuite/new.rs
crates/cargo-test-support/containers/apache/Dockerfile
crates/cargo-test-support/containers/sshd/Dockerfile
Tests
tests/testsuite/new.rs
expectsrefs/heads/main
.git init -b main
.Backwards compatibility
cargo new
/cargo init
.master
on fresh repos should be updated.How to verify
cargo new foo git -C foo symbolic-ref HEAD # expects: refs/heads/main
Alternatives considered
init.defaultBranch
: Rejected to ensure deterministic behavior across environments and CI.Release notes
cargo new
/cargo init
now create Git repositories withmain
as the default branch.Checklist