我们最近遇到了一个问题,即在切换SVN工作副本的过程中TortoiseSVN或AnkhSVN(我无法确定哪个)崩溃了。我们的开发人员没有意识到切换是不完整的,并且一切都很好,直到将分支合并回主干,我们才知道某些更改已提交到主干,而某些更改已提交。到分公司。

幸运的是,这实际上并没有影响任何事情,但是我担心这种情况将来可能再次发生,并且我需要一种快速的方法来测试工作副本中的子目录指向哪个存储库。现在,在Linux中,我可以很快一起破解一个shell脚本来确定这一点,但是我目前不知道如何在Windows中找到它。

我不是完全反对使用SharpSVN一起破解某些东西(如果可以的话,请放心我会分享的),但是我想知道是否可以通过内置TortoiseSVN或AnkhSVN来节省一些时间为我做的功能。

最佳答案

如果可以使用Powershell,请使用以下内容:

gci -Recurse | ?{ $_.psIsContainer -eq $true} | %{svn info $_.fullname} | select-string -Pattern "PATH:|URL:"

对于工作副本中的每个文件夹,它将显示存储库中的路径和url。如果将某些文件夹切换到分支,则可以看到该URL和路径。

您可以轻松地对其进行调整,以仅打印当前分支(或主干)之外的路径和url。

忽略未版本控制的文件夹很容易:
(svn status $_.fullname) -notmatch "\?")

因此,整个过程将是:
gci | ?{ $_.psIsContainer -eq $true -and ((svn status $_.fullname) -notmatch "\?")} | %{svn info $_.fullname} | select-string -Pattern "PATH:|URL:"

您需要在路径上具有SlikSVN或CollabnetSVN之类的命令行svn客户端。

08-26 20:35