我们有一个大容量的代码存储库,其中包含数千个文件夹和子文件夹,我想在此存储库下使用文件名或某些单词进行搜索。
Root folder
    a\
    b\
    c\
    d\
    e\
    f\ab\
    f\ab\cd.txt
我想搜索cd.txt,但不知道它在SVN存储库中的位置,为此,我想在SVN的根文件夹中执行搜索,在该文件夹中我将放置文件名cd.txt并运行命令,将检入每个文件夹,并将显示文件详细信息结果。...
希望条件很明确。你能帮我这个忙吗?
我们有一个大容量的代码存储库,其中包含数千个文件夹和子文件夹,我想在此存储库下使用文件名或某些单词进行搜索。
Root folder
    a\
    b\
    c\
    d\
    e\
    f\ab\
    f\ab\cd.txt
我想搜索cd.txt,但不知道它在SVN存储库中的位置,为此,我想在SVN的根文件夹中执行搜索,在该文件夹中我将放置文件名cd.txt并运行命令,将检入每个文件夹,并将显示文件详细信息结果。...
希望条件很明确。你能帮我这个忙吗?
Answers:
如果文件在您的工作副本中,那么如果您使用的是svn 1.5:
svn list --depth infinity | grep <filename>
或更早版本的svn:
find . -name <filename> -not -path '*.svn*'
如果您需要查找历史记录中的文件(已删除或已移动):
svn log -v | less
并使用以下命令进行搜索:
\<filename><return>
    ... | select-string <filename>代替grep。
                    ... | find "<filename>"也可以代替grep。  注意:文件名周围必须包含“。”
                    svn co --depth empty REPOURL RepoDir,cd RepoDir并且svn list --depth infinity然后得到SVN服务器中的所有文件路径(可能产生数以百万计的行,如果你有几百万)。
                    可以访问仓库本身(例如,在svn主机文件系统上)
svnlook tree [path_to_repo] | grep [file_name]  
或搜索所有存储库(如果您有多个存储库设置)。
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将提供回购文件的完整路径(如果找到)
例:
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。
svn list --depth infinity <your-repo-here>获取回购中的文件列表,然后svn cat获取内容。您可以--xml在list命令中添加键,以使解析更加简单。
grep如果要查看1个文件,请记住使用,尤其是在存储库(如OP)中有成千上万个文件的情况下。另外,--incremental如果您需要将输出与以后的XML输出结合在一起,则有一种模式。
                    VisualSVN Server 4.2支持在Web界面中按名称查找文件。在演示服务器上尝试新功能。
您可以从https://www.visualsvn.com/server/download/pre-release/下载VisualSVN Server 4.2.0 。请参阅https://www.visualsvn.com/server/download/上的发行说明。
如果您的远程存储库不是很大,那么一个简单的方法是:您可以执行“签出”以获取本地存储库。如果您在Windows计算机中,则使用“搜索”,而Linux计算机则使用“查找”命令。