Распространение удаленного местоположения через клон / пуш / пул

Наш проект использует несколько сторонних библиотек с открытым исходным кодом, некоторые из которых требуют пользовательских модификаций.

Для каждой библиотеки мы создали свой собственный локальный репозиторий 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

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