Как я могу дедуплицировать подмодули git, которые проверяют тот же репо? - PullRequest
1 голос
/ 14 мая 2019

Я бы хотел отследить две разные ветви большого git-репо как подмодули в моем собственном репо.Например, nixos-unstable и nixos-19.03 ответвляются от https://github.com/nixos/nixpkgs-channels.

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

1 Ответ

1 голос
/ 14 мая 2019

Кажется, нет действительно хорошего способа сделать это.

Есть довольно хакерский метод, который работает, с одним явным дефектом:

$ git submodule add ssh://[url] p1/repo
Cloning into ... [snippage]
Resolving deltas: 100% (173/173), done.
$ git submodule add --reference p1/repo ssh://[url] p2/repo
Cloning into [path]
$ 

Обратите внимание на полное отсутствие активности за пределами сообщения cloning into.Оба подмодуля теперь существуют, но у одного есть objects/info/alternates файл, содержащий путь другого:

$ cat .git/modules/p2/repo/objects/info/alternates
[path]/.git/modules/p1/repo/objects

, так что p2/repo извлекает свои базовые объекты из базы данных объекта репозитория p1/repo в .git/modules/p1/repo/objects.

Очевидным недостатком является то, что ни одна из этих договоренностей не сохраняется при будущих операциях клонирования, и ни одна из них не происходит автоматически, никогда.Каждый раз его нужно создавать вручную.

...