如何使用脚本识别陈旧的git分支

时间:2019-01-24 08:03:40

标签: git shell bitbucket

我需要查找并列出属于

的分支
  • 合并
  • 未合并
  • 已合并但未删除

来自多个项目和多个存储库,并且具有单个脚本(来自位存储桶),并且报告应以这种格式打印

project name: repo name: branch name: last commit date: author name:

我在shell脚本中尝试过

#!/bin/sh


  echo "Merged branches"
  for branch in `git branch -r --merged | grep -v HEAD`;
  do echo -e `git log --no-merges -n 1 --format="%ci, %cr, %an, %ae, "  $branch 
  | head -n 1` \\t$branch; done | sort -r

  echo ""
  echo "Not merged branches"
  for branch in `git branch -r --no-merged | grep -v HEAD`;
  do echo -e `git log --no-merges -n 1 --format="%ci, %cr, %an, %ae, " $branch | 
  head -n 1` \\t$branch; done | sort -r

通过使用这些,我只能在那个特定的仓库中获取。 如何列出所有项目并回购并执行这些git命令?

1 个答案:

答案 0 :(得分:0)

Bitbucket具有写得不错的api documentation。 在本文档中,您可以找到以下资源:/repositories

从他们的文档中引用此端点:

  

返回所有公共存储库的分页列表。   该端点还支持对结果进行过滤和排序。有关更多详细信息,请参见filtering and sorting

这些都是您拥有的公开存储库。 在此响应中,应该有一个git网址。

您可以解析json并检索每个存储库的所有git url并将它们存储在一个variabele中。 然后循环遍历git存储库网址,并通过以下命令克隆其中的每个网址:git clone --recurse-submodules GIT_URL_HERE 这里使用--recurse-submodules选项,因为如果有任何子模块,我们也希望得到它们!

使用cd DIRECTORY命令成功克隆所有存储库后,进入每个目录。

在这些目录中,可以列出分支。

  1. 列出所有合并的分支:
    1. git branch --merged
    2.   

      列出合并到HEAD中的分支(即当前分支的尖端)

  2. 列出所有合并分支:
    1. git branch --no-merged
    2.   

      列出未合并的分支