首页 > 解决方案 > 无法使用 Ant Target 克隆 GIT 存储库

问题描述

我正在尝试编写一个 Ant 目标来克隆一个 git 存储库。以下是 Ant 目标。这里的 ORGANIZATION 是公司的名称,GROUP 是组名,REPOSITORY 是存储库的名称。

<target name ="clone">
     <sshexec host="github.ORGANIZATION.com"
        username="git"
        keyfile="${user.home}/.ssh/id_rsa"
        passphrase="pujain"
        trust="true"
        command="git clone git@github.ORGANIZATION.com:GROUP/REPOSITORY.git"/>
  </target>

我收到以下异常:

[sshexec] 您似乎正在使用 ssh 克隆 git:// URL。
[sshexec] 确保您的 core.gitProxy 配置选项和
[sshexec] GIT_PROXY_COMMAND 环境变量未设置。

我可以从 cmd 执行相同的命令。

标签: gitgithubant

解决方案


正确的 SSH URL 将是(对于私有的自托管 GitLab 服务器):

git@github.ORGANIZATION.com:GROUPNAME/REPOSITORY.git
                           ^^^^^^^^^^

在 repo 名称之前应该有一个 ':' 和一个组或个人帐户。

sshexec taks想要做的是:

  • 连接到主机“ git@github.ORGANIZATION.com:REPOSITORY.git”(这没有意义)
  • 连接到远程服务器后,执行git clone.

如果您的脚本需要克隆 GitLab 存储库,那么您只需要一个exec 任务,而不是 SSH exec 任务。

<exec executable="git" dir="D:\" failonerror="true">
    <arg line="clone git@github.ORGANIZATION.com:REPOSITORY.git dest" />
</exec>

但这不适用于受密码保护的私钥(除非它首先加载到 ssh-agent 中)。
您最好使用专为该用途制作的只读部署密钥,无需密码。


推荐阅读