Я использую git (TortoiseGit 1.7.5.0) и имею репо с подмодулями, на которые ссылаются через абсолютные пути следующим образом:
[submodule "common/sub"]
path = common/sub
url = ssh://localhost/lib/common/sub
Хотя супер-репо клонируется как ssh://user@localhost/super
, имя пользователя не должно входить в каждый URL-адрес подмодуля, потому что разные пользователи должны работать с кодом, используя свои собственные учетные данные.
При извлечении / отправке подмодулей мне приходилось вводить свой логин ( пароль не нужен, потому что я запускаю Pageant): имя пользователя не передается в TortoisePlink через командную строку.
В Интернете я нашел несколько сообщений, в которых упоминаются относительные URL-адреса для подмодулей, но, очевидно, такой подход не работает с TortoiseGit: я пробовал несколько форматов - программа часто дает сбой. В любом случае мне удалось с форматом вроде:
[submodule "common/sub"]
path = common/sub
url = ../common/sub
Файл .git/config
заполняется правильными абсолютными URL-адресами, но после этого TortoiseGit просто аварийно завершает работу ...
Я рассмотрел другие варианты, в том числе:
используйте гитолит (как предлагается здесь) или sdorra (как предлагается здесь), но это выглядит слишком сложным решением.
следуйте стратегии слияния поддеревьев (как предлагается здесь). Похоже, хороший подход.
Один из рабочих приемов - инициализировать подмодуль "нестандартным" URL, как описано в конце git Submodules Explained (ссылка была найдена здесь).
Я полагаю, что в моем случае может помочь какой-то более простой обходной путь (например, предоставление входа в систему по умолчанию в каком-то локальном файле конфигурации или через командную строку), но я не нашел никаких рабочих подсказок для этого.
И вопрос: как проще всего использовать подмодули без жестко заданных имен пользователей в абсолютных URL-адресах?