如何在Stash中跨所有分支、所有仓库搜索(grep)所有文件?

8
我们有一个私有的Atlassian Bitbucket Server(之前称为Stash),用于托管我们的git仓库。
如何在以下范围内搜索:
- 所有源文件 - 所有分支 - 所有仓库
我真的不想经历检出所有仓库的本地过程,执行git pull然后递归grep的过程。
在Atlassian Stash中提供了一些插件用于“企业搜索”,但它们对我们没有起作用。
如果您已经使其正常工作,请分享设置步骤:) :)

目前市场上有一个付费插件,可以为Stash(Bitbucket)添加搜索功能。https://marketplace.atlassian.com/plugins/com.mohamicorp.stash.search-for-stash/server/overview - James Riche
3个回答

5
我们还需要为所有的Stash项目实现搜索功能。经过研究,最好的实现方式是安装一个专用的OpenGrok服务器。
该服务器的crontab每10分钟运行一次脚本,执行以下操作:
  1. 获取使用Stash API的所有项目列表
  2. 对于每个项目,获取所有仓库(再次使用API)
  3. 对于每个存储库,如果存在,则进行克隆或拉取
    • 如果需要每个分支,请查找所有分支并为每个分支克隆
  4. 一旦准备好所有源代码,运行OpenGrok索引
这对我们来说非常有效,并且易于实现。
我认为最终应该使用内置插件来完成此操作,但当时找不到任何插件。
希望这可以帮助到您。

1
没错。我真的想避免“拉取每个仓库”的事情。您考虑了哪些其他选项? - vikingsteve
1
如果已经克隆,拉取每个存储库非常快。我们还会并行执行,因此速度非常快。其他选项主要是查找内置插件(没有找到),或者实现自己的搜索。 - Eldad Assis
这个怎么样,你试过了吗?https://marketplace.atlassian.com/plugins/com.mohamicorp.stash.search-for-stash - vikingsteve
不,我们没有尝试过,但你可以免费尝试并在这里分享你的经验。 - Eldad Assis

3
披露:我是Bitbucket(Stash)的产品经理。
正如其他人建议的那样,目前产品中并没有这个功能。好消息是我们正在开发代码搜索功能。对于你的问题,不太好的消息是,出于性能考虑(并且从我们的研究来看这是相对较少见的用例),我们只计划索引默认分支的末尾(通常是master)。
如果您可以更详细地描述您想要实现的内容,我很乐意探讨替代方案。
一个选项是在服务器上的存储库上编写一系列“git grep”命令的脚本(假设您有权限)。但请注意,任何直接针对服务器上的存储库运行的操作都不受支持,风险由您自行承担。

1
嗨Rog,感谢您作为一个知情人士的自我介绍;) 实际上,我们想做的事情非常简单,就是查找所有存储库(约70个)中特定类、常量、依赖项或导入的用法。如果我们只能在默认分支(develop)上执行此操作,那也不是世界末日,尽管所有分支(或模式,如develop|master|release/*)都可以。您对这个“企业搜索”功能有预计完成时间吗?我们使用的是Stash 3.5,我的同事建议昨天升级到Bitbucket - 这两者有很大的区别吗(还是营销名称更改)? - vikingsteve
我们目前无法分享时间表。 建议升级到Bitbucket。除了随着主要版本的变化而带来的API更改外,基础产品并没有发生重大变化,因此它应该是熟悉的,并且我们在途中添加了一些新功能。 - Rog
@rog 你是否有关于这个问题或在Atlassian内跟踪进展的工单更新? - Rafael Gorski
@Rog 你有更新吗? - David
我不再从事这个产品的工作,但是根据其他回答,代码搜索现在已经可用了好几年了。 - Rog

3

根据Atlassian的一个跟踪工单(BSERV-2851),代码搜索是内置于Bitbucket Server 4.6(又名Stash)中的功能。请查看发布说明


非常好,谢谢Jon,我会尝试在周一升级。 - vikingsteve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接