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

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

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

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

Ответ 1

Вы можете передать переменные конфигурации в 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 в вашей загрузочной среде script, если ваш каталог изменится. Обратите внимание на формат GIT_CONFIG_PARAMETERS, важно, чтобы ваши параметры конфигурации были одинарными. Если вы хотите передать более чем одну конфигурационную опцию в git из среды, выполните следующую команду:

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

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

Ответ 2

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