Пожалуй, самый простой способ достичь этого - это в первую очередь зафиксировать только те файлы, которые вам нужны, в вашем хранилище. Это делает подрывную сторону проблемы тривиальной. Если вы можете написать скрипт, который извлекает необходимое вам подмножество библиотеки из выпадающего списка, полученного от вашего поставщика, тогда весь процесс можно будет автоматизировать. Это все еще выполнимо, если извлечение должно быть сделано вручную, но это немного более раздражает. В любом случае, это, скорее всего, обернется головной болью при обслуживании. Сторонние библиотеки обычно не предназначены для разделения, поэтому вы рискуете внести ручные изменения всякий раз, когда библиотека вносит какие-либо структурные изменения.
Совершенно другой подход состоит в том, чтобы скомпилировать библиотеку (или ее подмножество) в двоичный файл, а затем только зафиксировать этот двоичный файл в вашем исходном дереве. Это то, что я делаю в проекте, над которым я работаю. У нас есть отдельный репозиторий для библиотек от поставщиков. Пользовательский make-файл будет собирать svn://vendor_repo/trunk
и генерировать svn://vendor_repo/trunk/libs
(которые фиксируются вместе с каждым новым удалением), и именно эту подпапку libs
мы загружаем в наш основной репозиторий, используя svn:externals
. С помощью этого метода наш код не знает (или не заботится), являются ли библиотеки подмножеством или всей библиотекой. Все, что они видят, - это двоичный файл для ссылки. Размер кода, который мы должны поддерживать вручную, - это пользовательский make-файл, который мы используем для создания библиотеки вендоров.