我们有一个包含数千个文件夹和子文件夹的代码的批量存储库,我想在这个存储库下搜索文件名或一些单词.
Root folder
a\
b\
c\
d\
e\
f\ab\
f\ab\cd.txt
Run Code Online (Sandbox Code Playgroud)
我想搜索cd.txt但不知道它在SVN存储库中的位置,因为我想在SVN的根文件夹上执行搜索,我将把文件名cd.txt和运行命令,将检入每个文件夹,将显示文件详细信息结果....
希望要求很明确.你能帮我解决这个问题吗?
lmo*_*mop 59
如果文件在您的工作副本中,那么如果您使用的是svn 1.5:
svn list --depth infinity | grep <filename>
Run Code Online (Sandbox Code Playgroud)
或者是svn的早期版本:
find . -name <filename> -not -path '*.svn*'
Run Code Online (Sandbox Code Playgroud)
如果您需要在历史记录中找到该文件(已删除或已移动):
svn log -v | less
Run Code Online (Sandbox Code Playgroud)
并搜索它:
\<filename><return>
Run Code Online (Sandbox Code Playgroud)
Mar*_*s V 57
以下适用于我(svn版本1.4.6)
svn list -R <URL> | grep "<file_pattern>"
Run Code Online (Sandbox Code Playgroud)
Rob*_*les 17
通过访问repo本身使用(即在你的svn主机文件系统上)
svnlook tree [path_to_repo] | grep [file_name]
Run Code Online (Sandbox Code Playgroud)
或搜索所有回购(如果您有多个回购设置).
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
Run Code Online (Sandbox Code Playgroud)
选项--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
Run Code Online (Sandbox Code Playgroud)
如果需要静态副本,则将输出重定向到文件.
假设使用nix OS.
Ant*_*lev 12
svn list --depth infinity <your-repo-here>获取repo中的文件列表,然后svn cat获取内容.您可以--xml向list命令添加键以使解析更简单一些.
最近我发布了我的实用程序来列出存储库,这比"svn ls --depth infinity"方法要快得多.这是基准.它只调用Subversion内部API中可用的函数,但现在可以通过命令行访问.
所以你可以跑
$ svn-crawler <URL> | grep "<file_pattern>"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81934 次 |
| 最近记录: |