Распространение удаленного местоположения через клон / пуш / пул
Наш проект использует несколько сторонних библиотек с открытым исходным кодом, некоторые из которых требуют пользовательских модификаций.
Для каждой библиотеки мы создали свой собственный локальный репозиторий git, добавили исходное местоположение источника в качестве удаленного поставщика, клонировали оттуда, изменили его по мере необходимости и поместили во внутренний удаленный репозиторий (назовем его origin).
Эти репозитории затем используются как подмодули в нашем основном проекте.
Проблема:удаленный URL-адрес "vendor" не распространяется на "origin" и поэтому теряется для любого, кто клонирует внутренний репозиторий библиотеки.
Каждый раз, когда вы хотите объединить новые восходящие изменения для библиотеки, вам нужно снова найти и вручную добавить удаленный поставщик (или использовать точно такой же локальный репозиторий, созданный в начале, если он еще доступен).
Есть ли лучший способ сохранить URL-адрес хранилища поставщика, чтобы он мог распространяться и использоваться каждым разработчиком? Добавление дополнительного файла (например, clone_from_here
) в библиотеке тоже не выглядит очень элегантно.
1 ответ
Вы можете сделать это через .git/config
, После того, как вы успешно вытащили или подтолкнули изменения, посмотрите на .git/config
файл и запишите удаленный url
а также fetch
После того, как хранилище было клонировано вашими разработчиками, откройте .git/config
на машине разработчиков и добавьте скопированную строку. Пример -
[remote "vendor"]
url = git@xxx.com:xxxxx/xxxxxxx.git
fetch = +refs/heads/*:refs/remotes/origin/*
Ваши разработчики теперь могут продвигать или тянуть к поставщику в этом примере.
Если вам нужно больше контроля над написанием URL-адреса для извлечения - на gitguys есть отличная документация - http://goo.gl/JGaKD