SVN: ветки поставщика + исправления + история? - PullRequest
3 голосов
/ 01 декабря 2010

У нас довольно большая библиотека, которую мы должны периодически импортировать (а затем исправлять) в нашу кодовую базу.

В SVN Book, похоже, рекомендуется схема "ветки вендора", в которой мы храним нашу исправленную версию "вендора отбрасывает". Это будет работать, за исключением того, что поставщик также использует SVN и предоставляет нам доступ на чтение для их повторного открытия.

Было бы здорово иметь доступ к истории файлов вендора, когда нам нужно обновить наши патчи.

Итак, мой вопрос:

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

(я видел упоминание о svn: внешних папках, но я не уверен, что я действительно понимаю все последствия с точки зрения привязки ревизии, или как именно мы будем поддерживать наши собственные патчи против этого.)

Какой правильный путь выбрать здесь? (FWIW, поставщик выпускает один раз в месяц. Мы намерены выпускать обновления примерно раз / два в год.)

Спасибо

1 Ответ

2 голосов
/ 01 декабря 2010

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

Теперь, предполагая, что вы не помещаете исходный каталог поставщика в свой источник (т.е. вы строите два проекта отдельно), у вас есть несколько вариантов, если вы храните два источника в отдельных репозиториях.

Если вы хотите, чтобы источник поставщиков вместе с историей, вы можете настроить svnsync для хранилища поставщиков и регулярно получать их изменения. Svnsync - это прекрасный способ получить что-то удаленно в виде локальной копии с полным набором истории. Но единственное предостережение для svnsync заключается в том, что хранилище становится доступным только для чтения. Таким образом, вы не можете применить патч к их источнику.

Теперь, так как вы делаете это только один или два раза в год, вы можете пройти через процесс создания новой копии их репозитория с помощью svnsync. Разорвите синхронизацию и сделайте свою копию репозитория производителя доступной для записи, а затем примените свои исправления.

Другой вариант заключается в том, чтобы продавец сделал дамп своего репо и отправил его вам. Затем вы загрузите этот дамп в свой собственный репозиторий и сделаете чтение / запись.

При любом из этих вариантов вам придется повторно применять свои исправления к своей копии хранилища поставщика каждый раз, когда вы проходите этот процесс. По крайней мере, вы делаете это только один или два раза в год.

Теперь, если вам нужно иметь их источник в вашем источнике, продолжайте делать то же самое, но используйте svn: external, как вы отметили в своем вопросе. Вам все равно нужно будет применить любые исправления, которые вам нужно сделать, к источнику поставщика, к вашей копии хранилища поставщика.

...