无法使用Ant Target

时间:2018-09-24 04:11:30

标签: git github ant

我正在尝试编写一个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执行相同的命令。

2 个答案:

答案 0 :(得分:1)

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

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

应该在回购名称的前面 之前有一个“:”和一个组或个人帐户。

您的sshexec taks想要做的是:

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

如果您的脚本需要克隆GitLab存储库,那么您只需要exec task而不是SSH执行任务即可。

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

但是,这不能与受密码短语保护的私钥一起使用(除非首先为it loaded in ssh-agent)。
最好使用专门为此用途制作的read-only deploy key,而不使用密码短语。

答案 1 :(得分:0)

我认为这不属于主机名吗? np.where

也许这行得通吗?

:REPOSITORY.git

只是为了解决问题,因此,您要以用户 user 的身份连接到ssh服务器 github.ORGANIZATION.com ,然后运行命令 <target name ="clone"> <sshexec host="github.ORGANIZATION.com" username="user" password="pass" passphrase="para" trust="true" command="git clone git@github.ORGANIZATION.com:REPOSITORY.git D:/dest" /> </target> 在该服务器上。是吗?