Вложенные репозитории мерзавца без подмодулей?

Кажется, что мерзавец repo в родителе repo не включен в фиксацию на родителе, если это не установка как подмодуль. Действительно ли возможно переопределить это поведение и рассматривать вложенного мерзавца repo как какой-либо другой каталог? Я не хочу полагаться на внешние зависимости через подмодули, но хотеть использовать мерзавца для управления этими зависимостями в рамках проекта.

32
задан stevo 23 February 2010 в 11:27
поделиться

2 ответа

1 / Вы можете изменить это с помощью:

  • либо параметр git config : установите переменную среды $ GIT_DIR
    , вы определяете свой каталог .git вложенного рабочего дерева Git как external .git (внешний как для вложенного репо, так и для основного репо)
  • или путем установки вложенного репо 'N' вне основного репо, но проверить это репо 'N ' внутри основного репо:
core.worktree

Установить путь к корню рабочего дерева. Это может быть отменено с помощью переменной среды GIT_WORK_TREE и параметра командной строки - work-tree

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

2 / В случае подмодулей вложенный репозиторий git на самом деле не включается в родительский репо.
В родительском дереве делается специальная запись для записи внешнего Git SHA1.

new file mode 160000
index 0000000..4c4c5a2

См. Также « природа подмодулей Git » (третья часть ответа)


Девять лет спустя это обсуждение совершенно ясно:

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

Брайан М. Карлсон ( bk2204 ) отвечает:

Это невозможно.
Невозможно добавить репозиторий без баз данных как часть родительского репозитория без использования подмодулей.
Git использует каталог .git для поиска рабочего дерева и из соображений безопасности не позволяет регистрировать файлы или каталоги с указанными именами.
{{1} } Разрешение пользователям регистрировать каталоги .git позволит сохранить конфигурацию и хуки как часть репозитория, что позволит выполнять произвольный код, если кто-то клонировал его, а затем изменил на {{1} } подхранилище.

7
ответ дан 27 November 2019 в 21:17
поделиться

См. Также Являются ли подмодули git единственным безопасным способом иметь рабочие копии внутри рабочих копий? .

На самом деле, когда я наткнулся на текущее обсуждение, я был обеспокоен проблемой, отличной от решенной здесь: использование git как своего рода инструмента для архивирования, который может архивировать дерево файловой системы, в котором уже есть некоторые рабочие каталоги git ... возможно другой вопрос ближе к моей проблеме.

2
ответ дан 27 November 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: