V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
cppgeek
V2EX  ›  分享创造

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

  •  
  •   cppgeek · 2016-02-08 16:59:42 +08:00 · 2644 次点击
    这是一个创建于 3204 天前的主题,其中的信息可能已经有所发展或是发生改变。

    极客讨论器新增的“项目中搜索”模块可以在项目的工作区和版本库内进行搜索,支持 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 被删除了。

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

    4 条回复    2016-02-09 02:22:08 +08:00
    SoloCompany
        1
    SoloCompany  
       2016-02-09 00:20:09 +08:00   ❤️ 1
    现在是用 fisheye 感觉还行,主要有这些缺点
    - 索引比较大
    - 索引重建比较慢
    - 只支持单个字符集,单 repo 多字符集貌似没有很好的识别或配置方案
    cppgeek
        2
    cppgeek  
    OP
       2016-02-09 00:50:54 +08:00
    @SoloCompany 你说的是 atlassian 的 fisheye 是吧?
    这个产品我们没有用过,它可以在 github/sourceforge 的版本库中搜索吗?
    SoloCompany
        3
    SoloCompany  
       2016-02-09 01:53:39 +08:00   ❤️ 1
    @cppgeek 基于本地 repo 的,只要是 git 可以 pull 下来自然能支持,而 sf 如果是基于 svn 的话,因为不能把整个 repo 抓下来一般而言是不能支持的,当然如果一个一个 revison 的抓下来做索引的话理论上也是能支持的但效率就太低了
    cppgeek
        4
    cppgeek  
    OP
       2016-02-09 02:22:08 +08:00
    @SoloCompany 映射应该可以自动进行的,如果在远程库中搜索效率才低呢
    需要占用一点本地硬盘空间,但是如果是重要的项目,比如正在开发的项目,或者正在研究的开源项目,应该不会吝啬这么一点硬盘空间吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1993 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 00:26 · PVG 08:26 · LAX 16:26 · JFK 19:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.