Skip to content

Commit

Permalink
Rollup merge of #113371 - jyn514:submodule-with-tags, r=albertlarsan68
Browse files Browse the repository at this point in the history
Fix submodule handling when the current branch is named after a tag

If:
1. The current branch has the same name as git tag, and
2. The current branch is set to track a remote other than `origin`, and
3. We try to update a submodule

then we'll get the following error:
```
; x c
Updating submodule src/doc/reference
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
fatal: 'personal' does not appear to be a git repository
fatal: Could not read from remote repository.
```

The problem is that 1. causes `git symbolic-ref --short HEAD` to try and disambiguate the branch from the tag using `heads/branch-name`, which breaks a previous workaround for a bug in `git submodule update` that uses the wrong remote.

Adapt the workaround to strip `heads/` from the output.
  • Loading branch information
fee1-dead authored Jul 6, 2023
2 parents 2bc0ae3 + 6c7017f commit 70e8f9d
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/bootstrap/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -599,6 +599,9 @@ impl Build {

let mut git = self.config.git();
if let Some(branch) = current_branch {
// If there is a tag named after the current branch, git will try to disambiguate by prepending `heads/` to the branch name.
// This syntax isn't accepted by `branch.{branch}`. Strip it.
let branch = branch.strip_prefix("heads/").unwrap_or(&branch);
git.arg("-c").arg(format!("branch.{branch}.remote=origin"));
}
git.args(&["submodule", "update", "--init", "--recursive", "--depth=1"]);
Expand Down

0 comments on commit 70e8f9d

Please sign in to comment.