【问题标题】:How to search (grep) across all files, in all branches, in all repos in Stash?如何在 Stash 中的所有文件、所有分支、所有存储库中搜索(grep)?
【发布时间】:2015-10-28 08:23:53
【问题描述】:

我们有一个私有的 Atlassian Bitbucket 服务器(以前称为 Stash)托管我们的 git 存储库。

如何搜索

  • 所有源文件
  • 在所有分支中
  • 在所有存储库中

我真的很想避免在本地检查所有 repos 的过程,执行 git pull 然后递归 grep

Atlassian Stash 中提供了一些用于“企业搜索”的插件,但它们对我们不起作用。

如果你已经让它工作,请分享设置步骤:) :)

【问题讨论】:

标签: git grep bitbucket-server


【解决方案1】:

我们还需要对我们所有的 Stash 项目进行搜索。查看各种选项,最好的实现是安装一个专用的OpenGrok 服务器。
服务器的 crontab 每 10 分钟运行一次脚本,用于执行以下操作:

  1. 使用Stash API获取所有项目的列表
  2. 对于每个项目,获取所有存储库(再次使用 API)
  3. 对于每个存储库,克隆或拉取(如果存在)
    • 如果你需要每个分支,找到所有分支并为每个分支克隆
  4. 所有源准备就绪后,运行 OpenGrok 索引

它对我们来说效果很好,而且实施起来很简单。
我认为最终应该使用内置插件来完成,但当时找不到。

我希望这会有所帮助。

【讨论】:

  • 对。我真的很想避免“拉每个回购”的事情。您还考虑了哪些其他选择?
  • 如果已经克隆了每个 repo,拉取它的速度非常快。我们也并行执行,因此速度非常快。其他选项,主要是查找内置插件(未找到)并实现我们自己的搜索。
  • 这个怎么样,你试过了吗? marketplace.atlassian.com/plugins/…
  • 没有。我们没有尝试过,但您可以免费试用并在这里分享您的体验。
【解决方案2】:

披露:我是 Bitbucket (Stash) 产品经理

正如其他人所建议的,这不是当前产品中可用的东西。好消息是我们目前正在进行代码搜索。您的问题的坏消息是,出于性能原因(并且因为在我们的研究中这是一个相对不常见的用例),我们只计划索引默认分支的尖端(通常是 master)。

如果您能更详细地描述您想要实现的目标,我很乐意研究替代方案。

一个选项是在服务器上的存储库中编写一系列“git grep”命令(假设您有权访问)。您这样做需要您自担风险,不支持对服务器上的存储库运行的任何直接操作。

【讨论】:

  • 嗨 Rog,感谢您将自己作为一个知识渊博的内部人员 ;) 我们真正想做的很简单,在我们所有的 repos 中查找特定类或常量或依赖项或导入的用途(一些70+)。如果我们只能在默认分支 (develop) 上执行此操作,那么这不是世界末日,尽管所有分支(或模式,如 develop|master|release/* 会很好。你有关于这个“企业搜索”的 ETA功能?我们在 Stash 3.5 上,我的同事昨天建议升级到 bitbucket - 两者是否有很大不同(或者是营销名称更改)?
  • 现阶段我们没有可以分享的时间表。建议升级到 Bitbucket。除了主要版本升级带来的 API 更改外,底层产品并没有发生太大变化,因此应该熟悉我们在此过程中添加的一些新功能。
  • @rog 你有关于这个问题的更新或在 Atlassian 中跟踪进度的票吗?
【解决方案3】:

根据Atlassian ticket 的跟踪,代码搜索是 Bitbucket Server 4.6(又名 Stash)中的内置功能。请参阅release notes

【讨论】:

  • 太好了,谢谢乔恩,我会在星期一尝试升级。
猜你喜欢
  • 2017-04-28
  • 2021-04-24
  • 2010-11-10
  • 2012-08-10
  • 2014-09-15
  • 1970-01-01
  • 2019-08-05
  • 2021-10-08
  • 1970-01-01
相关资源
最近更新 更多