如何查找/搜索/ grep SVN存储库历史记录?

时间:2010-09-13 15:58:57

标签: svn search grep

我需要搜索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访问权限,并且上面有存储库。

另请注意:我不想搜索工作副本,我需要搜索所有修订版。

3 个答案:

答案 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历史记录。