File tree Expand file tree Collapse file tree 1 file changed +7
-1
lines changed
src/bootstrap/src/core/build_steps Expand file tree Collapse file tree 1 file changed +7
-1
lines changed Original file line number Diff line number Diff line change @@ -469,7 +469,9 @@ fn install_git_hook_maybe(config: &Config) -> io::Result<()> {
469
469
assert!(output.status.success(), "failed to run `git`");
470
470
PathBuf::from(t!(String::from_utf8(output.stdout)).trim())
471
471
}));
472
- let dst = git.join("hooks").join("pre-push");
472
+ let hooks_dir = git.join("hooks");
473
+ let create_hooks_dir = !hooks_dir.exists();
474
+ let dst = hooks_dir.join("pre-push");
473
475
if dst.exists() {
474
476
// The git hook has already been set up, or the user already has a custom hook.
475
477
return Ok(());
@@ -486,6 +488,10 @@ undesirable, simply delete the `pre-push` file from .git/hooks."
486
488
println!("Ok, skipping installation!");
487
489
return Ok(());
488
490
}
491
+ if create_hooks_dir {
492
+ // We need to (try to) create the hooks directory first.
493
+ let _ = fs::create_dir(hooks_dir);
494
+ }
489
495
let src = config.src.join("src").join("etc").join("pre-push.sh");
490
496
match fs::hard_link(src, &dst) {
491
497
Err(e) => {
You can’t perform that action at this time.
0 commit comments