如何在带有cygwin的WIndows 7机器上搜索SVN repo?

时间:2015-01-22 22:11:43

标签: svn search windows-7

我有一个旧的远程SVN仓库(https://foo.bar.com/myRepo),它是项目的集合,每个项目都有分支/,主干/标记/子文件夹。我需要在repo中找到一个文件,但它很大,所以点击SVN浏览器中的每个项目是不可行的。

该集合被冻结,即我不会修改任何项目。

我尝试创建一个本地git repo,并使用svn2git和我搜索的其他一些方法将整个SVN集合导入其中,但它们都没有产生不同的错误。

我安装了cygwin的Windows 7计算机,其中包含git

有哪些不同的(免费)方法可以搜索SVN repo?是否有专为Windows和/或Windows + cygwin设计的免费软件?

1 个答案:

答案 0 :(得分:0)

打开命令提示符,键入powershell

然后输入:

svn list -R  https://path-to-svn/svn/test | select-string "file name or regex"

您还可以在上一行的末尾附加> e:\result.txt,以便在文本文件中获得结果。

注意:svn repo的URL必须包含项目名称,否则,您将获得HTTP 405.例如,如果您的SVN中有2个项目 - test和test2,则您的URL必须如下所示:{{3或者像这个https://path-to-svn/svn/test,你不能搜索这两个项目。

修改

以下PS脚本将列出您的仓库中的所有项目+在其中搜索文件。请注意,包含HTTP响应的XML处理,因此我不能100%确定它将适用于您的SVN服务器而不进行任何修改。

powershell
$username = "user"
$password = "pass" | ConvertTo-SecureString -asPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($username,$password)
$res = Invoke-WebRequest https://path-to-svn/svn/ -Credential $cred
$xdoc = new-object System.Xml.XmlDocument
$xdoc.LoadXml($res.Content)
foreach($href in $xdoc.SelectNodes("//dir").href) 
{  
    $svnRepo = "https://path-to-svn/svn/" + $href
    foreach ($match in svn list -R  $svnRepo | select-string "file name or regex")
    {
        Write-host  ("{0}{1}" -f $href, $match)
    }
}

如果您在cmd中复制粘贴并且它不会立即运行,请确保在脚本末尾有回车符。