Как использовать переменную окружения для удаленного URL Git - PullRequest
2 голосов
/ 04 января 2012

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

Есть ли способ использовать переменную окружения в «удаленном» пути для моей локальной рабочей копии?

Если нет, то есть ли простой способ обмануть Git (за исключением сценария грубой силы sh, который раскрывает переменную, удаляет и переназначает ее в удаленное местоположение перед нажатием и т. Д.), Чтобы расширить переменную при нажатии и извлечении?

Ответы [ 2 ]

8 голосов
/ 05 января 2012

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

GIT_ORIGIN_REMOTE=git://github.com/gitster/git.git
GIT_CONFIG_PARAMETERS="'remote.origin.url=${GIT_ORIGIN_REMOTE}'"

Убедитесь, что вы удалили строку конфигурации URL удаленного источника в .git / config.Это приведет к тому, что все операции, использующие пульт дистанционного управления origin, будут работать с git://github.com/gitster/git.git.Теперь все, что вам нужно сделать, это изменить GIT_ORIGIN_REMOTE в вашем скрипте среды запуска, если ваш каталог изменится.Обратите внимание на формат GIT_CONFIG_PARAMETERS, важно, чтобы ваши параметры конфигурации были заключены в одинарные кавычки.Если вы хотите передать Git более одной опции конфигурации из среды, следуйте форме:

GIT_CONFIG_PARAMETERS="'<config_variable>=<value>' '<config_variable>=<value>'"

Вы сможете использовать эту информацию для настройки среды по своему усмотрению.На самом деле я не видел этого документированного, просто нашел его через источник, так что YMMV зависит от версии Git, которую вы используете.Ссылка: Код Git Tokenizing & Код парсинга Git

1 голос
/ 04 января 2012

Интересная проблема.У всех этих репозиториев один и тот же «меняющийся» пульт?Если так, я могу придумать дешевый трюк.Вы можете добавить запись локального имени хоста в /etc/hosts для фактического IP-адреса удаленного компьютера и сделать так, чтобы все ваши хранилища указывали на локальное имя.Изменение записи в /etc/hosts будет работать.Мне это не нравится, но это может сработать.

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