在SVN存储库中search文件名

我们有一个包含数千个文件夹和子文件夹的代码的大容量存储库,我想在文件名或单词的这个存储器下search。

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

我想searchcd.txt,但不知道它在SVN仓库中的位置,为此,我想在SVN的根文件夹上执行search,在那里我将放置文件名cd.txt并运行命令,将检查每个文件夹,并将显示文件的详细结果….

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

如果该文件在工作副本中,那么如果你使用svn 1.5:

 svn list --depth infinity | grep <filename> 

或者svn的早期版本:

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

如果您需要查找历史logging中的文件(删除或移动):

 svn log -v | less 

并用以下方式search:

 \<filename><return> 

以下作品适合我(svn版本1.4.6)

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

有了访问回购本身使用(即在您的SVN主机文件系统)

 svnlook tree [path_to_repo] | grep [file_name] 

或者search所有回购(如果您有多个回购设置)。

 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 

选项 – 全path将给文件回购的完整path(如果find)

例:

 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 

如果需要静态复制,则将输出redirect到文件。
假定使用nix OS。

svn list --depth infinity <your-repo-here>得到repo中的文件列表,然后svn cat得到内容。 您可以添加--xmllist命令使parsing更简单一些。

最近我发布了我的工具来列出版本库,这比“svn ls –depth infinity”方法快得多。 这是基准 。 它只是调用Subversion内部API中可用的函数,但现在可以通过命令行访问。

所以你可以跑

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

如果你正在使用TortoiseSVN,你可以试试这个,如果你愿意看项目项目 – 适用于我:

  1. 在您的存储库顶级URL下创build一个空白项目,将其命名为BLANK
  2. 点击左侧窗格上的回购url
  3. 在右侧窗格中select你的BLANK项目和你想要的项目 – 比如中继线
  4. 右键点击popup浏览器菜单并select“比较url”,这取决于您的回购的大小可能需要一分钟加载。 但是你基本上把你的整个项目列表放在一个“准备search”列表中。
  5. 在searchfilter中input您的文件名或其他string

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