GitCloneTask не клонирует репозиторий («Удаленный конец неожиданно зависает») - PullRequest
3 голосов
/ 03 апреля 2011

Я пытаюсь написать файл сборки с phing и GitCloneTask (для клонирования репозитория из github), но я продолжаю получать это сообщение каждый раз, когда запускаю phing:

The remote end hung up unexpectedly

Так что я проверил, если яможет клонировать репозиторий с помощью git-clone => работает отлично;

проверил мой .gitconfig на наличие ошибки с токеном Github API & Username => нет опечаток или чего-то еще

проверил все URL-адреса репо, предоставленные на github (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>

Ответы [ 3 ]

2 голосов
/ 20 апреля 2012

Я провел некоторую отладку в классе phing и думаю, что проблема в том, что вам нужно указать путь / имя вашего двоичного файла git в атрибуте "gitPath".

Я думаю, что в 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 голос
/ 09 апреля 2011

Я не понял, почему GitCloneTask не работает должным образом, но я решил свою возникающую проблему - нет автоматического репо-клонирования - с обходным путем: я не использовал GitCloneTask, вместо этого я использовал execTask:

Вот мой код:

<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}" />

Ни элегантное, ни идеальное решение, но пока оно работает ...

0 голосов
/ 29 мая 2013

В моем случае у меня не было разрешения клонировать каталог, в который я пытался клонировать.Я не знал этого, потому что ошибка не упоминала об этом.Кто-то создал патч , но он не объединен с основной линией на момент публикации.

Посмотрите, куда выдается исключение, запустив 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

Исправлены разрешения и теперь он работает нормально.

...