El manual de Subversion tiene una sección específica en Vendor Branches.
La idea básica es importar la versión actual, sin modificaciones, en el repositorio a través de un conjunto de carpetas que rastrean los cambios externos (solo los cambios externos, no sus modificaciones). Algo así como ".../repos/vendor/(software)/current". Luego bifurque de inmediato en ".../repos/vendor/(software)/(software-version)". A medida que salen nuevos lanzamientos, actualice el directorio "actual" y cree una nueva rama, como ".../repos/vendor/(software)/(próxima versión)". Esto le permite (y svn) hacer diffs en la fuente no modificada para llegar a lo que cambió externamente.
Para sus modificaciones en el software, bifurque la "(versión de software)" en su propio proyecto, algo así como ".../repos/(mi-proyecto)/trunk/(software)". Cuando actualice a la siguiente versión de la fuente de terceros, dígale a svn que combine la diferencia entre "(versión de software)" y "(próxima versión)" en una copia de trabajo de "trunk/(software)". Esto lleva todos los cambios externos al tronco, mejorando cuidadosamente la fuente del proyecto. Ramifique y etiquete el proyecto como siempre.
La distribución de Subversion incluye un script de Perl llamado "svn_load_dirs.pl", que puede ayudar al actualizar el proyecto de "proveedor". Descubre los archivos eliminados, agregados y renombrados y modifica su copia de trabajo de, por ejemplo, "(actual)", según corresponda.
Ese maldito libro SVN tiene todo, ¿no? – Travis