Найти пути с помощью свойств svn: external с определенной строкой? - PullRequest
3 голосов
/ 25 февраля 2011

У меня очень большой репозиторий Subversion, его размер составляет около 7 ГБ, и он содержит много файлов и каталогов из разных проектов.

Теперь я внес некоторые существенные изменения в одну структуру проекта, которая на самом деле является библиотекой, и я использую ее в довольно многих других проектах в том же хранилище. Сейчас документации немного, и я не знаю, какой проект на самом деле использовал эту библиотеку как внешнюю, и я хотел бы как-то запросить сервер / репозиторий subversion, чтобы вернуть мне все каталоги, которые имеют определенную строку в свойстве svn: export, так что Я могу настроить их.

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

Разве это возможно каким-то умным способом?

ТНХ

1 Ответ

6 голосов
/ 28 февраля 2011

Быстрый и грязный способ, если это всего лишь несколько изменений, заключается в использовании svn propget с флагом --recursive для получения свойств и внесения изменений вручную (для возврата может потребоваться некоторое время):

svn propget --recursive svn:externals http://your.svn.server/ | grep -B 5

Чтобы сделать это более автоматизированным способом, вы можете написать его:

  • рекурсивно получить svn: externals для каждого пути в корне

  • проверить каталоги, внешние компоненты которых содержат искомую строку (вы можете разделить компонент пути по разделителю файловой системы и проверить каждый компонент с глубиной = немедленной, если вы хотите быть действительно избирательным в отношении того, что вы извлекаете)

  • внести и зафиксировать изменение

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

HTH.

...