如何在工作副本中递归列出切换的 svn 目录?

n61*_*007 1 svn recursion svn-switch

我已经从存储库中签出了一个工作副本,并将一些目录切换到不同的 URL 但在同一个 repo(相同的主机和 svn 服务器)上。

我怎么能列出这些切换的目录?

我们出于内部目的使用了许多开关,这将有助于在工作副本中轻松列出所有这些,直到消除这种快速而肮脏的开关用法。

Mic*_*ens 5

(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
Run Code Online (Sandbox Code Playgroud)

(2) 对于 Windows 系统,一个等效命令(使用 PowerShell)是:

svn info --depth=infinity | Select-String ^URL
Run Code Online (Sandbox Code Playgroud)

(3) 但是对于具有更高信噪比的输出,请尝试以下操作:

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

该序列的输出一目了然地显示了您需要知道的内容。在我的第一个示例中使用的相同示例树中,它揭示了以下内容:

Path                              Branch
----                              ------
commands                          branches/sub-branch1
externals                         branches/sub-branch1
commands\subdir                   trunk
externals\commonlib               trunk
externals\commonlib\textfiles     trunk
Run Code Online (Sandbox Code Playgroud)

(该Get-SvnInfocmdlet 可从我的开源 PowerShell 库中获得——有关详细信息,请参阅我的API 书架上的 PowerShell 书。)