SVN: ветки поставщика + исправления + история?

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

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

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

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

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

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

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

Спасибо

1 ответ

Решение

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

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

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

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

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

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

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

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