File tree 1 file changed +7
-1
lines changed
src/bootstrap/src/core/build_steps
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