Безопасно ли клонировать репозиторий git в его собственный каталог.git?
Я недавно поставил свой сайт под контроль версий Git. Я использую GIT-FTP для загрузки файлов, и я настроил его так, чтобы master
ветвь - это контент, который должен находиться на сервере, а live
Ветка - это контент, который на самом деле находится на сервере. Мне нужно сделать это различие, так как я иногда развиваюсь там, где у меня нет подключения к Интернету, и поэтому не могу загрузить прямо сейчас. Поэтому для загрузки я делаю: git checkout live;git merge master;git ftp push
; Я хотел бы автоматизировать этот процесс и не терять оставшееся состояние рабочего каталога. В будущем я также собираюсь настроить автоматическое резервное копирование нескольких файлов, которые будут переданы ftp'ом и переданы live
ветка.
Чтобы сделать все это, мне понадобится еще один клон, который будет использоваться только автоматизированными процессами и всегда будет иметь чистый рабочий каталог. Очевидное место для его размещения, поскольку его никогда не нужно будет искать, находится в каталоге.git основного репозитория. Таким образом, у меня нет клона, плавающего где-то еще в моей файловой системе, он остается скрытым, и очевидно, что он является частью внутренних компонентов, и с ним не стоит соваться. Если это работает хорошо, я могу даже отправить патч, чтобы исправить проблему git-ftp #180 с помощью этого метода.
Однако я не уверен, стоит ли помещать случайные вещи в папку.git - я нигде не могу найти документацию о возможных побочных эффектах.
2 ответа
.git
каталог, похоже, полностью игнорирует любые дополнительные элементы, поэтому добавление git-репо прямо в .git
должно сработать.
Это не сработает, если вы добавите свое вложенное хранилище в подкаталог, например, .git/refs
(см. http://git-scm.com/book/en/Git-Internals-Git-References)
Обратите внимание, что у вас также может быть это git-репо в любом месте вашего текущего git-репо, например, в каталоге с именем .ftprepo
(имя, начинающееся с точки, которая должна быть скрыта по умолчанию)
Я нашел ответ по ошибке, когда искал что-то еще!
Согласно https://www.kernel.org/pub/software/scm/git/docs/, "SCM более высокого уровня могут предоставлять и управлять дополнительной информацией в $GIT_DIR". Похоже, это означает, что дополнительная информация может храниться в.git, не вызывая проблем, включая, по-видимому, еще один клон репозитория.