Как рекурсивно перечислить переключенные каталоги 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 в выходных данных и, следовательно, переключенные каталоги.