Subversion: использование только некоторых файлов из ветки поставщика - PullRequest
4 голосов
/ 12 февраля 2012

В " Контроль версий с Subversion " раздел Ветви поставщика устанавливает ветку поставщика для "libcomplex", а затем использует следующую команду для копирования libcomplex в основную ветку разработки. :

$ svn copy http://svn.example.com/repos/vendor/libcomplex/1.0  \
           http://svn.example.com/repos/calc/libcomplex        \
           -m "bringing libcomplex-1.0 into the main branch"

Однако, что если нам потребуется только подмножество функциональных возможностей (и, следовательно, подмножество файлов) libcomplex?

Можно ли копировать только часть libcomplex в основную ветку? Или это может вызвать проблемы (особенно когда речь идет об обновлении libcomplex)?

Ответы [ 3 ]

3 голосов
/ 16 февраля 2012

Я не рекомендую разбивать библиотеки, импортированные из других источников.

Вы попадете в кошмар слияния и обновления зависимостей, если libcomplex что-нибудь, но тривиально.

1 голос
/ 23 февраля 2012

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

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

0 голосов
/ 19 февраля 2012

Вы используете разреженные каталоги .

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

...