Кажется, что мерзавец repo в родителе repo не включен в фиксацию на родителе, если это не установка как подмодуль. Действительно ли возможно переопределить это поведение и рассматривать вложенного мерзавца repo как какой-либо другой каталог? Я не хочу полагаться на внешние зависимости через подмодули, но хотеть использовать мерзавца для управления этими зависимостями в рамках проекта.
1 / Вы можете изменить это с помощью:
$ GIT_DIR
.git
вложенного рабочего дерева Git как external .git
(внешний как для вложенного репо, так и для основного репо) 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} } подхранилище.
См. Также Являются ли подмодули git единственным безопасным способом иметь рабочие копии внутри рабочих копий? .
На самом деле, когда я наткнулся на текущее обсуждение, я был обеспокоен проблемой, отличной от решенной здесь: использование git как своего рода инструмента для архивирования, который может архивировать дерево файловой системы, в котором уже есть некоторые рабочие каталоги git ... возможно другой вопрос ближе к моей проблеме.