@@ -21,6 +21,9 @@ function get_git_name_and_email(; env=ENV)
2121end
2222
2323function git_push (
24+ forge:: Forge ,
25+ ci_cfg:: GitHubActions ,
26+ repo:: GitHub.Repo ,
2427 remote:: AbstractString ,
2528 branch:: AbstractString ,
2629 pkey_filename:: Union{AbstractString,Nothing} = nothing ;
@@ -29,20 +32,32 @@ function git_push(
2932)
3033 force_flag = force ? [" -f" ] : []
3134 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)
3736 env2 = copy (ENV );
3837 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 `
4046 @debug " Attempting to run Git push command" cmd env2[" GIT_SSH_COMMAND" ]
4147 run (setenv (cmd, env2))
4248
4349 return nothing
4450end
4551
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+
4661function git_reset (commit:: AbstractString ; soft= false )
4762 soft_flag = soft ? [" --soft" ] : []
4863 run (` git reset $soft_flag "$commit "` )
0 commit comments