Извлечение данных из репозитория Github

#github #phing

#github #phing

Вопрос:

Я пытаюсь использовать Phing для вызова git и извлечения удаленного частного репозитория, но это не работает.

Вот мой код для Phing:

 <project name="test" default="main">
    <!-- Get User Variables -->
    <property file="build.properties" />

    <!-- Declare Variables -->
    <property name="base.dir" value="../" />
    <property name="git.repository" value="git@github.com:test/test.git" />

    <!-- Pull Git Release -->
    <target name="git.pull">
        <gitpull 
            repository="${git.repository}" 
            source="origin" 
            refspec="${git.release}"
        />
    </target>

    <target name="main" depends="git.pull">
    </target>
</project>
  

Но когда я запускаю, я получаю эту ошибку:

 You must specify readable directory as repository.
  

Кто-нибудь знает, как это сделать? Или у вас есть рабочий пример?

Ответ №1:

Для pull вас необходимо предоставить локальный репозиторий. Удаленный репозиторий (тот, из которого нужно извлекать) — это тот, который вы предоставляете с source

Вы можете найти примеры в тесте https://github.com/phingofficial/phing/blob/master/test/etc/tasks/ext/git/GitPullTaskTest.xml

Комментарии:

1. В этом примере он использует gitclone и репозиторий является удаленным. Я попробовал это, и я получил ту же ошибку. Это source не что иное, как «происхождение»

2. Вы не должны прекращать чтение после первого тега. Конечно, вам нужен локальный репозиторий с одним удаленным для извлечения откуда-нибудь. Тесты сначала клонируют удаленный репозиторий, который также добавит URL-адрес клонированных репозиториев в качестве удаленного имени origin . На следующем шаге он извлекает из него. В мире gits обычно называется «основной» пульт origin 😉

3. Правильно — я скопировал всю цель, и в клоне произошла ошибка, поэтому я упомянул об этом >. <

4. Я думаю, что с моей настройкой что-то не так, я уверен, что вы правы.

Ответ №2:

Целевой каталог должен существовать. Но он должен быть пустым. Он не должен включать каталог .git.