Как использовать переменную окружения для удаленного 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
буду работать. Мне это не нравится, но это может сработать.