@@ -21,6 +21,9 @@ function get_git_name_and_email(; env=ENV)
21
21
end
22
22
23
23
function git_push (
24
+ forge:: Forge ,
25
+ ci_cfg:: GitHubActions ,
26
+ repo:: GitHub.Repo ,
24
27
remote:: AbstractString ,
25
28
branch:: AbstractString ,
26
29
pkey_filename:: Union{AbstractString,Nothing} = nothing ;
@@ -29,20 +32,32 @@ function git_push(
29
32
)
30
33
force_flag = force ? [" -f" ] : []
31
34
name, email = get_git_name_and_email (; env= env)
32
- enable_ssh_verbose_str = get (ENV , " JULIA_COMPATHELPER_ENABLE_SSH_VERBOSE" , " false" )
33
- enable_ssh_verbose_b = parse (Bool, enable_ssh_verbose_str):: Bool
34
- ssh = enable_ssh_verbose_b ? " ssh -vvvv" : " ssh"
35
- git_ssh_command = isnothing (pkey_filename) ? ssh : " $(ssh) -i $pkey_filename "
36
-
35
+ git_ssh_command = _get_git_ssh_command (; pkey_filename)
37
36
env2 = copy (ENV );
38
37
env2[" GIT_SSH_COMMAND" ] = git_ssh_command
39
- cmd = ` git -c user.name="$name " -c user.email="$email " -c committer.name="$name " -c committer.email="$email " push $force_flag $remote $branch `
38
+ if isnothing (pkey_filename)
39
+ true_remote = remote
40
+ else
41
+ # We need to convert the remote URL to SSH format.
42
+ # Otherwise, the SSH private key will be ignored.
43
+ true_remote = get_url_for_ssh (forge, ci_cfg, repo)
44
+ end
45
+ cmd = ` git -c user.name="$name " -c user.email="$email " -c committer.name="$name " -c committer.email="$email " push $force_flag $true_remote $branch `
40
46
@debug " Attempting to run Git push command" cmd env2[" GIT_SSH_COMMAND" ]
41
47
run (setenv (cmd, env2))
42
48
43
49
return nothing
44
50
end
45
51
52
+ function _get_git_ssh_command (; pkey_filename:: Union{AbstractString,Nothing} )
53
+ enable_ssh_verbose_str = get (ENV , " JULIA_COMPATHELPER_ENABLE_SSH_VERBOSE" , " false" )
54
+ enable_ssh_verbose_b = parse (Bool, enable_ssh_verbose_str):: Bool
55
+ ssh = enable_ssh_verbose_b ? " ssh -vvvv" : " ssh"
56
+ git_ssh_command = isnothing (pkey_filename) ? ssh : " $(ssh) -i $pkey_filename "
57
+ git_ssh_command = " sshFOOBAR -vvvv"
58
+ return git_ssh_command
59
+ end
60
+
46
61
function git_reset (commit:: AbstractString ; soft= false )
47
62
soft_flag = soft ? [" --soft" ] : []
48
63
run (` git reset $soft_flag "$commit "` )
0 commit comments