Как я могу безопасно зафиксировать каталог.git

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

Я создал тестовый проект git (в подкаталоге) для использования в тестах: resources/test-git-project
Этот тестовый git-проект не связан ни с одним удаленным, но содержит коммиты / теги / ветки.

Какой самый безопасный способ передать содержимое resources/test-git-project в мерзавце?

3 ответа

Решение

Благодаря ответу Thibault D.. я нашел решение, которое искал:

Я переименовал .git в gitdir и теперь это коммит

Когда я хочу выполнить обновления или увидеть статус тестового репо, я делаю следующее:

git --git-dir=resources/test-git-project/gitdir --work-tree=resources/test-git-project anycommand

Перед выполнением юнит-тестов копирую каталог resources/test-git-project под /tmp и переименовать /tmp/test-git-project/gitdir в /tmp/test-git-project/.gitчтобы мне не приходилось связываться --git-dir вариант в моем тестовом коде.

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

Добавление его в качестве подмодуля облегчит доступ к .git каталог, но на самом деле не будет фиксировать содержимое каталога и управлять его ревизиями. У вас даже будет разное содержимое на разных клонах из-за того, когда вы выполняете git pull (если вы добавляете / удаляете ветви, если вы перебазируете ветви, если вы локально создаете висячие объекты и т. д.

Вы также можете сделать что-то с опцией --git-dir.

Вы не должны были иметь вложенные репозитории git.

У вас должно быть одно уникальное хранилище для кода и теста (общее), или два отдельных хранилища, но с одинаковым иерархическим уровнем в вашей файловой системе, не вложенных в другое.

Другие вопросы по тегам