如何使用 cygwin 在 WIndows 7 机器上搜索 SVN 存储库?

How can I make an SVN repo searchable on a WIndows 7 machine with cygwin?

我有一个旧的远程 SVN 存储库 (https://foo.bar.com/myRepo),它是项目的集合,每个项目都有 branches/、trunk/ 和 tags/ 子文件夹。我需要在 repo 中找到一个文件,但它很大,所以在 SVN 浏览器中单击每个项目是不可行的。

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

我尝试创建一个本地 git 存储库并使用 svn2git 和我在谷歌上搜索到的其他一些方法将整个 SVN 集合导入其中,但其中 none 可以生成不同的错误。

我有一台 Windows 7 机器,安装了 cygwin,包括 git

使 SVN 存储库可搜索的不同(免费)方法有哪些?是否有专门为 Windows and/or Windows+cygwin 设计的免费软件工具?

打开命令提示符,输入powershell

然后输入:

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

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

注意:URL svn repo 必须包含项目名称,否则,您将获得 HTTP 405。例如,如果您的 SVN 中有 2 个项目 - test 和 test2,您的 url 必须如下所示:https://path-to-svn/svn/test or like this https://path-to-svn/svn/test2,您不能同时搜索这两个项目。

编辑:

以下 PS 脚本将列出您的存储库中的所有项目 + 在其中搜索文件。请注意,XML 处理 HTTP 响应已包括在内,因此我不能 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 中复制粘贴但它没有立即 运行,请确保您在脚本末尾有回车符-return。