Auto merge of #105217 - jyn514:submodule-fixes, r=bjorn3

Don't exit with an error if there are no changes to submodules

Fixes https://github.com/rust-lang/rust/issues/105215, which regressed in https://github.com/rust-lang/rust/pull/104865.
This commit is contained in:
bors 2022-12-04 00:27:32 +00:00
commit 2a39e45afb

View File

@ -647,11 +647,24 @@ impl Build {
if !update(true).status().map_or(false, |status| status.success()) {
self.run(&mut update(false));
}
// Save any local changes, but avoid running `git stash pop` if there are none (since it will exit with an error).
let has_local_modifications = !self.try_run(
Command::new("git")
.args(&["diff-index", "--quiet", "HEAD"])
.current_dir(&absolute_path),
);
if has_local_modifications {
self.run(Command::new("git").args(&["stash", "push"]).current_dir(&absolute_path));
}
self.run(Command::new("git").args(&["reset", "-q", "--hard"]).current_dir(&absolute_path));
self.run(Command::new("git").args(&["clean", "-qdfx"]).current_dir(&absolute_path));
if has_local_modifications {
self.run(Command::new("git").args(&["stash", "pop"]).current_dir(absolute_path));
}
}
/// If any submodule has been initialized already, sync it unconditionally.
/// This avoids contributors checking in a submodule change by accident.