使用ANT克隆GIT代码库

3
我正在使用ANT帮助进行GIT克隆。以下是我使用的代码:

<target name ="deploy">

 <sshexec host="ssh://user@rep_location/project_name.git"
    username="username"
    password=""
    passphrase="passphrase"
    trust="true"
    command="git clone ssh://user@rep_location/project_name.git  D:/dest"/
    />

</target>

我需要将代码库克隆到所需的文件夹 "D:/dest",但是遇到了未知主机异常错误。

我已经尝试了一些关于主机的组合,例如ssh://user@rep_location,但是它返回服务器连接超时。
我们需要在检出时提供密码。 这个命令在GIT BASH中可以正常工作。

3个回答

0

以下错误意味着ANT无法解析主机名:

未知主机异常

您正在将git URL作为host参数的值提供:

 <sshexec host="hostwhereIwanttoclonerepository.com"
    username="username"
    passphrase="passphrase"
    trust="true"
    command="git clone ssh://user@rep_location/project_name.git  D:/dest"/
    />

请记住,您正在远程机器上运行git命令,“用户名”账户将需要有效的SSH凭据才能访问git存储库主机。
最后,我怀疑你试图在本地克隆存储库?在这种情况下,您不应使用sshexec任务。 我建议尝试来自jGit的“git-clone”ANT任务。例如: 您可能还需要包含jsch jar以便访问SSH Git URL。

你好 Mark,我看了你的帖子。我需要在从 Git 仓库检出时传递口令。但是我没有找到正确的字段来传递它。简单地运行代码会返回“USERAUTH 失败”异常。 - Narendra Pandey

0

这应该与经典的ssh错误“Unknown Host key”链接起来:请参见“com.jcraft.jsch.JSchException: UnknownHostKey”。

最简单的解决方案仍然是先手动执行ssh:

尝试从命令行进行ssh,并接受公钥(主机将被添加到~/.ssh/known_hosts

确保在Windows上定义了一个HOME环境变量,其中sshexec ant任务使用的JSch将能够找到%HOME%\.ssh\known_hosts文件。
这与类Unix的git bash会话不同,其中$HOME始终被定义。


你好VonC,我稍微修改了一下我的代码。主机不正确。这次我只是在"仓库位置"的位置传递了"repositry location"。这样做,它能够连接到仓库...但仍然抛出这个错误"SSH_MSG_DISCONNECT:2用户名的太多身份验证失败"。我正在传递正确的凭据。仍然存在错误。 - Narendra Pandey
@Narendra,ssh -Tvvv user@rep_location 返回什么? - VonC
它要求输入密码短语。我输入了,但是它显示身份验证失败。它向Git存储库发送了一个密码数据包,但返回“权限被拒绝,请重试”。三次尝试后,它失败了。 - Narendra Pandey
我已经在我的环境变量中指定了GIT_HOME变量,并提供了它的安装文件夹,然后将其添加到路径变量中。我不确定HOME变量中的地址应该传递什么,你在第一条评论中建议我的地址是什么。 - Narendra Pandey
@Narendra 测试,你需要确保HOME已经设置并被ant知道,否则无法从ant执行任何ssh操作。 - VonC
显示剩余3条评论

0
<exec executable="${gitBinPath}">
    <arg value="clone" />
    <arg value="--depth" />
    <arg value="1" /> 
    <arg value="${gitRepositoryURL}" />
    <arg value="${deployDir}" />
</exec>
  • gitBinPath: git.exe 的位置
  • gitRepositoryURL: Git 仓库 URL
  • deployDir: 目标文件夹


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接