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

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

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

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

2 ответа

Решение

Вы можете передавать переменные конфигурации в 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 Code & Git Parsing Code

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

Другие вопросы по тегам