2015-06-28 3 views
5

Я разрабатываю приложение, которое использует git, поэтому мне нужно проверить его интеграцию с git. Внутри моего репозитория git мне нужно иметь другой репозиторий (my_git_repo/tests/another_repo). Как я могу передать это без god-подмодулей? (Я не хочу иметь другой удаленный репозиторий (в github/bitbucket и т. Д.) Только для одного файла)Как сделать git-репозиторий внутри другого репозитория git

Любые идеи?

+4

Кажется, было бы проще просто избежать всей проблемы. Не могли бы вы протестировать интеграцию, не просто используя существующий репозиторий, а путем создания хранилища с нуля? То есть, начните тестирование с 'mkdir',' git init' и т. Д. Это позволит избежать необходимости полностью отслеживать субрепозиторий. – hvd

+0

Это мой текущий рабочий стол, но я предпочитаю избегать этих шагов, чтобы избежать сложности (потому что мне нужно сделать некоторые изменения и создать некоторые коммиты). – fj123x

+0

Я думаю, что @hvd прав, потому что если вы сделаете этот второй репозиторий, ваши изменения в нем будут накапливаются и имеют побочный эффект.Если вы всегда создаете его с нуля, у вас будет воспроизводимая сборка, что хорошо. – jotadepicas

ответ

1

Субмодулы необязательно должны быть клонированы отдельно; вы можете опубликовать проект и его подмодули в одном репо. Просто у вас есть ветвь, посвященная содержимому подмодуля в вашем основном репо, а затем после клонирования основного репо git clone -sb подмодуль прямо оттуда.

# setup your current repo this way: 
(git init sub 
    cd sub 
    > file 
    git add . 
    git commit -m- 
    git remote add origin .. 
    git push -u origin master:sub/master 
) 

установки в новом клоне:

git branch -t sub/master origin/sub/master 
git clone -sb sub/master . sub 

и sub будет иметь самое последнее содержание.

git rev-parse :sub покажет вам, что сделано для sub - то есть, что должно быть проверено там - когда вам не нужен только текущий наконечник ветви.

Вы можете подключить команду git submodule здесь с файлом .gitmodules и тому подобное, но вряд ли это стоит того.

0

Я любил @ ответ HVd, и я думаю, что это должен быть ответ, который заслуживает голосования до:

Вы могли бы включать в себя уже создали суб-хранилище в виде архива - или любой другой формат, который вы предпочитаете - а затем сделайте свой тест, создайте или очистите каталог и просто разархивируйте там субрепозитор. Тем не менее, хотя это значительно снижает сложность запуска тестов, это значительно увеличивает сложность создания и поддержания тестов, поэтому я не рекомендую это.

Есть ситуации, когда подмодули слишком сложны для простой проблемы. Мой код уже работал с настройкой, аналогичной исходному вопросу. Моя проблема заключалась в проведении тестовых репозиций, когда эти репозитории (3 из них) собирались использовать для целей тестирования только с использованием реальных репозиториев с известными коммитами. Поэтому я хотел добавить эти репозиции в git, как и любую другую подпапку, без сложностей подмодулей ... это для тестирования для крика вслух. Мне нужны истории, чтобы быть в рамках этих тестовых репозиториев. Я заметил, что сложность подмодулей на самом деле больше, чем упомянутая «сложность создания и поддержания тестов» ... на самом деле это просто.

Приведенный выше код просто распаковывает тестовые репозитории перед запуском наборов тестов и очищает их после этого. Идея здесь заключается в настройке репозиториев в соответствии с вашим сценарием, а затем добавлении их в архив. Если в репозитории есть какие-либо изменения, вы просто обновляете архив.

Смежные вопросы