Bitbucket搜索项目中所有Git存储库中的字符串

3
在给定的 Bitbucket 工作区中,包含多个代码库,我想要在每个代码库中搜索一个字符串。这是我的 Bitbucket 界面的样子:
Company / Projects / Departament

  repo1
  repo2
  ...
  repo 456

通过字符串出现,我指的是将依赖声明作为字符串。
com.mycompany.oldlib

需要被替换为

com.mycompany.newlib

基本上,我想找出使用该库的存储库,并将其替换为一个新的适当的库。

在Bitbucket中是否有API或其他方法可以搜索代码中的字符串出现?手动检查所有存储库并使用grep命令搜索代码并不是一个真正的解决方案,因为有数百个存储库。

2个回答

1

我不确定在任何版本的Bitbucket中是否可以进行查找和替换操作,因为它们都严重依赖Git来管理存储库内容,并且API调用可能会干扰正常的提交。然而,Bitbucket Cloud(bitbucket.org),Bitbucket Server和Bitbucket Data Center都在用户界面中提供了搜索功能:

如果您正在使用Bitbucket Cloud,则还有一个搜索API:

最新版本的Bitbucket Server或Bitbucket Data Center中似乎没有搜索API,但一些早期版本可能有。

因此,虽然您可能无法原生地执行查找和替换操作,但您应该至少能够使用UI和/或API中的代码搜索来确定需要更新的内容。


0

我无法找到任何与Bitbucket相关的API,允许对项目文件进行如此大规模的替换操作。

虽然这是一个非常常见的用例,但我很惊讶互联网上关于它的信息并不多。

遗憾的是我们只能自己动手,假设你提到了grep命令,这指向了Linux操作系统的使用。

这里是经过测试的工作Linux命令,它迭代目录并使用sed命令替换字符串:

find dirr/ -type f -name '*' -exec sed -i 's/com.mycompany.oldlib/com.mycompany.newlib/g' {} +

这个命令唯一的问题是它非常慢,因为你需要做繁重的查找和替换工作,执行时间将取决于你的系统能力。
上述命令很容易理解,除了最后一个“+”符号。 更多信息:在 find 中使用分号 (;) vs 加号 (+) 与 exec 希望对你有帮助,谢谢。

这个答案唯一的问题是它非常慢,需要大量的空间,因为它要求 OP 在本地克隆数百个仓库。 - phd
@phd,所以作者提到了像grep这样的命令,这意味着他有本地副本。这就是为什么在答案中我提到这是唯一的方式,即使它效率低下。你为什么要评论我在答案中写的内容? - Suchandra T
1
OP在这个上下文中提到了grep:“手动检查所有存储库并使用grep搜索代码不是真正的解决方案”。 - phd

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