我正在尝试使用phing编写构建文件和GitCloneTask(从github克隆repo),但每次运行phing时我都会收到此消息:
The remote end hung up unexpectedly
所以我检查了我是否可以使用git-clone =>克隆回购工作得很好;
使用Github API Token&检查我的.gitconfig是否有错误。用户名=>没有错别字或什么
检查了github上提供的所有repo-urls(ssh,https,只读)=>在构建文件
中使用时,它们都不会更改消息任何想法?
这是构建文件的代码:
<?xml version="1.0" encoding="UTF-8"?>
<project name="ort" default="init">
<!-- ============================================ -->
<!-- Target: initialize -->
<!-- ============================================ -->
<target name="init">
<input propertyname="local.documentRoot">Where to put the files?:</input>
<mkdir dir="${local.documentRoot}" />
<gitclone
repository="git://github.com/pappelt/oil-resistance-test.git"
targetPath="${local.documentRoot}" />
</target>
</project>
答案 0 :(得分:2)
我在phing类中进行了一些调试,我认为问题是你需要在“gitPath”属性中指定你的git二进制文件的路径/名称。
我认为在Linux上可能是“/ usr / lib / git”,我正在运行windows并且只是使用“git”
<target name="gitclone">
<echo msg="Getting latest code from ${git.repo}" />
<gitclone gitPath="git" repository="${git.repo}" targetPath="${build.dir}" />
</target>
这很有效,因为我的git二进制文件(C:\ Program Files \ Git \ cmd)在我的窗口PATH中...即。我可以打开命令提示符并输入“git”,windows会知道它在哪里。
令人讨厌的是我正在克隆私人仓库,这要求我输入密码短语-_-
答案 1 :(得分:1)
我没弄清楚为什么GitCloneTask没有按预期工作,但我解决了我的问题 - 没有自动repo-clone - 有一个解决方法:我没有使用GitCloneTask,而是使用了execTask:< / p>
这是我的代码:
<property name="remote.repositoryPath" value="git://github.com/pappelt/oil-resistance-test.git" />
<input propertyname="local.documentRoot">Where to put the files?:</input>
<exec command="git clone ${remote.repositoryPath} ${local.documentRoot}" />
既不优雅也不理想的解决方案,但现在它的工作原理......
答案 2 :(得分:0)
在我的情况下,我没有权限克隆到我试图克隆到的目录。我不知道这个,因为错误没有提到它。有人有created a patch但是在发布时它没有合并到主线。
通过phing
运行-verbose
来查看抛出异常的位置。在我的情况下,它来自GitCloneTask.php
第77行说。
throw new BuildException('The remote end hung up unexpectedly');
我修改了这个以包含根本原因。
throw new BuildException('The remote end hung up unexpectedly', $e);
我现在得到:
Error:
fatal: could not create work tree dir 'your-repo'.: Permission denied
固定权限,现在可以正常使用。