Как я могу безопасно зафиксировать каталог.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.
У вас должно быть одно уникальное хранилище для кода и теста (общее), или два отдельных хранилища, но с одинаковым иерархическим уровнем в вашей файловой системе, не вложенных в другое.