在 subversion 或者 git 版本库中搜索代码

2016-02-08 16:59:42 +08:00
 cppgeek

极客讨论器新增的“项目中搜索”模块可以在项目的工作区和版本库内进行搜索,支持 subversion 和 git 版本库。
搜索的结果除了有文件名,行号,行文本以外,还有所在版本号,以及字符串的修改状态(后面会详细介绍),如图:

双击搜索结果可以打开此版本此文件,并定位到搜索结果字符串上。

版本库内每个版本都有新增或者删除的内容,版本搜索除了可以在不变的内容中搜索,还可以在变更的内容中搜索,而且不变的内容不会重复搜索,这样就防止当第一个版本中定义了 main 函数,后面一千个版本中都有这个 main 函数,搜索字符串 main 找出一千个重复结果来。

所以极客讨论器的搜索结果包含有字符串的修改状态。新增的,用红色表示,删除的,用灰色+删除线表示。

下面用一个具体的例子来说明,以在 python 项目 V2EX 中搜索字符串 HomeHandler 的变更历史为例,新建一个“第三方开源项目”配置,在“源代码”选项页中填入 V2EX 的 github 版本库地址,其它保持缺省:

点击确定后,建议先等主界面的控制台上蓝色进度条填满以后再搜索,蓝色进度条表示的是版本库的本地映射库,出于效率方面的考虑,搜索仅在本地映射库中进行,映射了多少版本就搜索多少个版本。一旦第一次映射完成了,以后无需重复映射(除非作者 livid 发布了新版本):

切换到“项目中搜索”模块,打开搜索选项,填入要查找的字符串 HomeHandler ,注意缺省搜索位置是“在工作区基于工作拷贝”,改为“在版本库”:

点击确定,开始在所有版本(目前是 297 个版本)的所有文件(各版本文件数不一样,版本 297 有 471 个文件)中搜索 HomeHandler ,共找到 4 条结果:

前面三条都在版本一,是 HomeHandler 第一次出现在这三个位置,最后一条发生在版本 1 和 138 之间,带有删除线,表示在此处( 138 版的 template.py 的 36 行),有一个 HomeHandler 被删除了。

这里有详细介绍,和下载地址,欢迎使用。

2509 次点击
所在节点    分享创造
4 条回复
SoloCompany
2016-02-09 00:20:09 +08:00
现在是用 fisheye 感觉还行,主要有这些缺点
- 索引比较大
- 索引重建比较慢
- 只支持单个字符集,单 repo 多字符集貌似没有很好的识别或配置方案
cppgeek
2016-02-09 00:50:54 +08:00
@SoloCompany 你说的是 atlassian 的 fisheye 是吧?
这个产品我们没有用过,它可以在 github/sourceforge 的版本库中搜索吗?
SoloCompany
2016-02-09 01:53:39 +08:00
@cppgeek 基于本地 repo 的,只要是 git 可以 pull 下来自然能支持,而 sf 如果是基于 svn 的话,因为不能把整个 repo 抓下来一般而言是不能支持的,当然如果一个一个 revison 的抓下来做索引的话理论上也是能支持的但效率就太低了
cppgeek
2016-02-09 02:22:08 +08:00
@SoloCompany 映射应该可以自动进行的,如果在远程库中搜索效率才低呢
需要占用一点本地硬盘空间,但是如果是重要的项目,比如正在开发的项目,或者正在研究的开源项目,应该不会吝啬这么一点硬盘空间吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/255846

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX