我需要搜索Subversion存储库的所有修订版,以查找包含特定字符串的文件名和修订号。我知道这会在转储中发现:
svnadmin dump $REPO_PATH | grep -i "Verdana"
但输出太神秘了。输出将包含匹配的二进制文件块。
我一直在使用这样的命令来搜索项目当前工作副本中的字符串:
find . -name "*.css" -print0 | xargs -0 grep "Verdana"
输出的格式很有用,它既提供了文件名,又提供了字符串出现的行:
./css/forms.css: font : 12px Verdana;
有没有办法搜索SVN存储库的所有修订版,例如包含搜索字符串的所有.css
文件?不仅仅是一个单词,而是带有通配符的字符串或像grep这样的正则表达式?
注意:我对Linux服务器具有root访问权限,并且上面有存储库。
另请注意:我不想搜索工作副本,我需要搜索所有修订版。
答案 0 :(得分:5)
最简单(也是我发现最有效)的方法,预先花费一点时间投入 - 将svn存储库克隆到git中,然后使用gitk搜索存储库。
由于整个存储库位于本地系统上,因此可以更快地搜索 !
我曾经为大约30位开发人员管理一个大型的subversion存储库,他们常常来到我的办公桌前问道,“你能找到这个改变......”等等。我只是点亮了gitk!
svn log
非常慢,因为它必须击中服务器。此外,如果您有权访问服务器,则可能需要设计一些| grep -v
或类似的内容来清除所有.svn
目录。
答案 1 :(得分:0)
你试过吗
svn log --verbose
在根目录上,打印每条日志消息和所有受影响的路径。它不会让你解析文件内容,但我至少能够搜索 .css 文件。
答案 2 :(得分:0)
按照以下思路思考:
<div class="aspect-ratio">
<iframe src="" width="550" height="275" frameborder="0"></iframe>
</div>
<style>
/* This element defines the size the iframe will take.
In this example we want to have a ratio of 25:14 */
.aspect-ratio {
position: relative;
width: 100%;
height: 0;
padding-bottom: 56%; /* The height of the item will now be 56% of the width. */
}
/* Adjust the iframe so it's rendered in the outer-width and outer-height of it's parent */
.aspect-ratio iframe {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
}
</style>
我认为通过调整你给grep或写一个更复杂的管道的标志(可能通过管道循环而不是使用svn log $location -q | grep -P 'r\d+' -o | grep -P '\d+' -o | xargs -l1 svn diff -c | grep $pattern
)你可以grep SVN历史记录。