Сделать git выборочных подмодулей, используя тот же протокол, что и родительский? - PullRequest
0 голосов
/ 16 марта 2020

Есть ли способ настроить хранилище так, чтобы любой пользователь, который клонирует его с помощью ssh или с помощью https, также клонировал любые содержащиеся в нем подмодули по тому же протоколу, что и для родительского?


Если это невозможно, этот факт (желательно с указанием того, почему этот выбор был сделан дизайнерами git) будет правильным ответом.

Вещи, которые я не спрашивать (потому что я их уже знаю) и который я бы не счел полезным ответом:

Ответы [ 3 ]

0 голосов
/ 17 марта 2020

Нет способа сделать это, потому что Git не имеет встроенного c способа узнать, что несколько URL-адресов, использующих разные протоколы, сопоставляются с одним и тем же хранилищем.

Например, отображение GitHub Использование на своих серверах не подходит для моего личного Git сервера, который использует Gitolite. Точно так же анонимный доступ через S SH обычно не предоставляется, поэтому, если у пользователя нет учетной записи на сервере, URL S SH не может использоваться. Git не может знать априори об этой конфигурации.

Git обеспечивает отображение insteadOf, так что вы можете переопределить эти настройки, если хотите, в зависимости от ваших потребностей. Предполагается, что пользователь лучше всех знает об их потребностях и конфигурации, а также о серверах, к которым он обращается.

0 голосов
/ 17 марта 2020

Кажется, что "все работает" , пока clone через s sh доступ осуществляется с помощью формы ssh://git@github.com/user/repo.git, а не формы git@github.com:user/repo.git. По крайней мере, если это все на одном сервере.

0 голосов
/ 17 марта 2020

Это обычное поведение Git, когда субмодули размещаются на том же сервере, что и основной репо. submodule.somename.url будет, например, ../somename.git в .gitmodules, а git submodule init заполнит пропущенные биты из origin url.

Почему кто-то должен ожидать, что произвольные внешние подмодули будут доступны с такими же протокол как локальный проект? Конфигурирование ваших репозиториев таким образом, что первоначальная настройка завершится неудачно, если только протокол origin не работает на серверах произвольных внешних подмодулей, просто попрошайничество Люди, которые могут общаться с вашим сервером проекта через ssh, вряд ли будут иметь или хотят иметь ssh доступ в другом месте.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...