在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
得到内容。 您可以添加--xml
键list
命令使parsing更简单一些。
最近我发布了我的工具来列出版本库,这比“svn ls –depth infinity”方法快得多。 这是基准 。 它只是调用Subversion内部API中可用的函数,但现在可以通过命令行访问。
所以你可以跑
$ svn-crawler <URL> | grep "<file_pattern>"
如果你正在使用TortoiseSVN,你可以试试这个,如果你愿意看项目项目 – 适用于我:
- 在您的存储库顶级URL下创build一个空白项目,将其命名为BLANK
- 点击左侧窗格上的回购url
- 在右侧窗格中select你的BLANK项目和你想要的项目 – 比如中继线
- 右键点击popup浏览器菜单并select“比较url”,这取决于您的回购的大小可能需要一分钟加载。 但是你基本上把你的整个项目列表放在一个“准备search”列表中。
- 在searchfilter中input您的文件名或其他string
如果您的远程存储库不是很大,那么一个简单的方法是:您可以执行“checkout”来获取本地存储库。 如果你在Windows机器上使用“search”或Linux机器使用“查找”命令。