@@ -401,8 +401,9 @@ impl RepositoryExt for git2::Repository {
401
401
gpg_program = "ssh-keygen" . to_string ( ) ;
402
402
}
403
403
404
- let mut cmd = std:: process:: Command :: new ( gpg_program) ;
405
- cmd. args ( [ "-Y" , "sign" , "-n" , "git" , "-f" ] ) ;
404
+ let mut cmd = std:: process:: Command :: new ( "bash" ) ;
405
+ cmd. arg ( "-c" ) ;
406
+ let gpg_cmd = format ! ( "{} -Y sign -n git -f" , gpg_program) ;
406
407
407
408
#[ cfg( windows) ]
408
409
cmd. creation_flags ( 0x08000000 ) ; // CREATE_NO_WINDOW
@@ -425,18 +426,26 @@ impl RepositoryExt for git2::Repository {
425
426
426
427
let key_file_path = key_storage. into_temp_path ( ) ;
427
428
428
- cmd. arg ( & key_file_path) ;
429
- cmd. arg ( "-U" ) ;
430
- cmd. arg ( & buffer_file_to_sign_path) ;
429
+ cmd. arg ( format ! (
430
+ "{} {} {} {}" ,
431
+ gpg_cmd,
432
+ & key_file_path. to_str( ) . unwrap( ) ,
433
+ "-U" ,
434
+ buffer_file_to_sign_path. to_str( ) . unwrap( )
435
+ ) ) ;
431
436
cmd. stderr ( Stdio :: piped ( ) ) ;
432
437
cmd. stdout ( Stdio :: piped ( ) ) ;
433
438
cmd. stdin ( Stdio :: null ( ) ) ;
434
439
435
440
let child = cmd. spawn ( ) ?;
436
441
output = child. wait_with_output ( ) ?;
437
442
} else {
438
- cmd. arg ( signing_key) ;
439
- cmd. arg ( & buffer_file_to_sign_path) ;
443
+ cmd. arg ( format ! (
444
+ "{} {} {}" ,
445
+ gpg_cmd,
446
+ signing_key,
447
+ buffer_file_to_sign_path. to_str( ) . unwrap( )
448
+ ) ) ;
440
449
cmd. stderr ( Stdio :: piped ( ) ) ;
441
450
cmd. stdout ( Stdio :: piped ( ) ) ;
442
451
cmd. stdin ( Stdio :: null ( ) ) ;
0 commit comments