В руководстве Subversion есть раздел, посвященный Ветвям поставщика .
Основная идея заключается в том, что вы импортируете текущую версию без изменений в хранилище через набор папок, которые отслеживают внешние изменения (только внешние изменения, а не ваши изменения в нем). Что-то вроде "... / repos / vendor / (software) / current". Затем сразу перейдите в "... / repos / vendor / (software) / (software-version)". По мере выхода новых версий обновите «текущий» каталог и создайте новую ветку, например «... / repos / vendor / (software) / (next-version)». Это позволяет вам (и svn) делать различия на неизмененном источнике, чтобы получить то, что изменилось извне.
Для ваших модификаций программного обеспечения, добавьте "(версия программного обеспечения)" в ваш собственный проект, что-то вроде "... / repos / (my-project) / trunk / (software)". При обновлении до следующей версии стороннего источника скажите svn объединить разницу между «(версия программного обеспечения)» и «(следующая версия)» в рабочую копию «ствола / (программное обеспечение)». Это вытягивает все внешние изменения в магистраль, аккуратно обновляя исходный код проекта. Разветвите и пометьте проект как обычно.
В дистрибутив Subversion входит Perl-скрипт с именем «svn_load_dirs.pl», который может помочь при обновлении проекта «vendor». Он обнаруживает удаленные, добавленные и переименованные файлы и изменяет вашу рабочую копию, например, «(текущая)», в зависимости от ситуации.