我有一个旧的远程SVN仓库(https://foo.bar.com/myRepo
),它是项目的集合,每个项目都有分支/,主干/标记/子文件夹。我需要在repo中找到一个文件,但它很大,所以点击SVN浏览器中的每个项目是不可行的。
该集合被冻结,即我不会修改任何项目。
我尝试创建一个本地git repo,并使用svn2git
和我搜索的其他一些方法将整个SVN集合导入其中,但它们都没有产生不同的错误。
我安装了cygwin
的Windows 7计算机,其中包含git
。
有哪些不同的(免费)方法可以搜索SVN repo?是否有专为Windows和/或Windows + cygwin设计的免费软件?
答案 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中复制粘贴并且它不会立即运行,请确保在脚本末尾有回车符。