Как рекурсивно перечислить переключенные каталоги SVN в рабочей копии?

Я извлек рабочую копию из хранилища и переключил некоторые каталоги на другой URL, но на том же репо (тот же хост и сервер SVN).

Как я могу перечислить эти переключенные каталоги?

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

2 ответа

Решение

(1) Ответ, предоставленный @ks1322, является кратким и работает нормально, за исключением одного незначительного изменения: нужно использовать "^URL" вместо просто "URL", потому что некоторые файлы сообщат о Copied from URL линия также. Вот пример вывода в моей системе, который показывает эту незначительную проблему:

URL: file:///C:/usr/tmp/SvnSandbox/branches/sub-branch1
URL: file:///C:/usr/tmp/SvnSandbox/branches/sub-branch1/commands
URL: file:///C:/usr/tmp/SvnSandbox/branches/sub-branch1/commands/show%20test.cmd
URL: file:///C:/usr/tmp/SvnSandbox/trunk/commands/subdir
URL: file:///C:/usr/tmp/SvnSandbox/trunk/commands/subdir/stuff.txt
URL: file:///C:/usr/tmp/SvnSandbox/branches/sub-branch1/commands/reversion_test.txt
URL: file:///C:/usr/tmp/SvnSandbox/branches/sub-branch1/file-on-branch1.txt
Copied From URL: file:///C:/usr/tmp/SvnSandbox/branches/branch1/file-on-branch1.txt
URL: file:///C:/usr/tmp/SvnSandbox/branches/sub-branch1/externals
URL: file:///C:/usr/tmp/SvnSandbox/branches/sub-branch1/file-on-branch-and-subbranch.txt
URL: file:///C:/usr/tmp/SvnSandbox/branches/sub-branch1/file-on-sub-branch1.txt

(2) Для тех в системах Windows, одна эквивалентная команда (использующая PowerShell):

svn info --depth=infinity | Select-String ^URL

(3) Но для выхода с намного более высоким отношением сигнал / шум попробуйте это:

Get-SvnInfo . -Recurse -ContainersOnly Path, URL | 
Format-Table Path, `
    @{ n='Branch'; `
       e={$_.URL -replace ".*(trunk|branches/[^/]*).*", '$1'} }

Вывод из этой последовательности сразу показывает, что вам нужно знать. Из того же примера дерева, использованного в моем первом примере, вот что он показывает:

Path                              Branch
----                              ------
commands                          branches/sub-branch1
externals                         branches/sub-branch1
commands\subdir                   trunk
externals\commonlib               trunk
externals\commonlib\textfiles     trunk

(The Get-SvnInfo Командлет доступен из моей библиотеки PowerShell с открытым исходным кодом - подробности см. в книге PowerShell на моей книжной полке API.)

Вы можете рекурсивно перечислить URL всех файлов и каталогов в рабочей копии с помощью команды:

svn info --depth=infinity|grep URL

Вы увидите переключенные URL в выходных данных и, следовательно, переключенные каталоги.

Другие вопросы по тегам