在SVN存储库中搜索文件名

时间:2009-04-01 10:16:27

标签: svn search text base

我们有一个包含数千个文件夹和子文件夹的代码的批量存储库,我想在此存储库下搜索文件名或一些单词。

Root folder
    a\
    b\
    c\
    d\
    e\
    f\ab\
    f\ab\cd.txt

我想搜索cd.txt但不知道它在SVN Repository中的位置,因为我想在SVN的根文件夹上执行搜索,我将把文件名cd.txt放在运行命令中,将检入每个文件夹并显示文件详细信息结果....

希望要求很明确。你能帮我解决这个问题吗?

8 个答案:

答案 0 :(得分:56)

如果文件在您的工作副本中,那么如果您使用的是svn 1.5:

svn list --depth infinity | grep <filename>

或svn的早期版本:

find . -name <filename> -not -path '*.svn*'

如果您需要在历史记录中找到该文件(已删除或已移动):

svn log -v | less

并使用以下方法搜索:

\<filename><return>

答案 1 :(得分:54)

以下适用于我(svn版本1.4.6)

svn list -R <URL> | grep "<file_pattern>"

答案 2 :(得分:17)

访问repo本身使用(即在你的svn主机文件系统上)

svnlook tree [path_to_repo] | grep [file_name]  

或搜索所有repos(如果您有多个repos设置)。

for i in \`ls [path_to_repos_dir]`; do echo $i; svnlook tree [path_to_repos_dir]/$i | grep -i [file_or_folder_name]; done 

选项--full-paths将在repo中提供文件的完整路径(如果找到)

示例:

for i in `ls /u01/svn-1.6.17/repos`; do echo $i; svnlook tree --full-paths /u01/svn- 1.6.17/repos/$i | grep -i somefile.txt; done
如果需要静态复制,

将输出重定向到文件 假设使用nix OS。

答案 3 :(得分:12)

svn list --depth infinity <your-repo-here>获取repo中的文件列表,然后svn cat获取内容。您可以将--xml键添加到list命令,以使解析更简单。

答案 4 :(得分:6)

最近我发布了我的utility来列出存储库,这比“svn ls --depth infinity”方法要快得多。这是benchmarks。它只调用Subversion内部API中可用的函数,但现在可以通过命令行访问。

所以你可以运行

$ svn-crawler <URL> | grep "<file_pattern>"

答案 5 :(得分:4)

如果你正在使用TortoiseSVN,你可以尝试这个,如果你愿意看项目项目 - 对我有用:

  1. 在您的资源库顶级网址下创建一个空白项目,称之为BLANK
  2. 点击左侧窗格中的回购网址
  3. 在右侧窗格中选择您的BLANK项目和您想要的项目 - 例如trunk
  4. 右键单击以弹出浏览器菜单并选择“比较网址”,具体取决于您的仓库大小,可能需要一分钟才能加载。但您基本上可以将整个项目列表放在“准备搜索”列表中。
  5. 在搜索过滤器中输入您的文件名或其他字符串

答案 6 :(得分:0)

VisualSVN Server 4.2(现已预发行;可作为4.2.0 RC1使用)支持在Web界面中按名称查找文件。在demo server上尝试新功能。

您可以从https://www.visualsvn.com/server/download/pre-release/下载VisualSVN Server 4.2.0 RC1。

enter image description here

答案 7 :(得分:-1)

如果您的远程存储库不是很大,那么一个简单的方法是: 您可以执行“结帐”以获取本地存储库。如果您在Windows机器中使用“搜索”或Linux机器使用“查找”命令。