怎麼統計公司Gitlab上每個人每天的提交量?

如果您覺得文章內容對您有用,請**點贊**支持一下。您的支持是我繼續創作的最大動力。也歡迎關注我的公衆號”計算機自學平臺“獲取更多學習資源和交流羣體。

引言
前幾天接到領導命令:以後把每天提交的代碼作爲一項考覈標準。
團隊人員說多也不多,但也有15個人了。自己去一個一個看並統計提交量,既浪費時間又浪費精力。
所以我的想法是,使用代碼去統計每個人每天的提交數量,然後通過隨機抽查去查看每個人的代碼質量。
準備
確定了自己的需求後,就開始着手準備具體手段了。下面先看下我們當前有的東西。
1.內網gitlab代碼倉庫
2.管理員級別的賬號
管理員級別的賬號就不需要多說了,我們先看gitlab,我們的目的是統計每個人每天的提交量,那麼通過GitlabGUI界面是否能實現?可以,通過以下功能進入活動頁面:
在這裏插入圖片描述
然後再活動頁面你會看到所有人所有項目的提交記錄:
在這裏插入圖片描述
通過每個人的提交記錄,然後點進去就是他本次提交的內容。所以,這個手動統計的辦法是可以實現領導提的需求的,但是此方法上面說了,太費時費力。那我們怎麼用代碼去統計呢?
調研
這個時候python-gitlab就要開始登場了,這個項目是通過gitlab公開的API進行封裝的一套易用插件。地址:https://readthedocs.org/projects/python-gitlab/
在這裏插入圖片描述
具體的使用說明文檔也在上面那個地址中,我們僅僅是用來統計代碼提交量的所以直奔主題。
安裝python-gitlab
打開終端輸入:

pip3 install python-gitlab

待提醒success即表示安裝成功。
編碼準備
根據python-gitlab文檔可知,我們需要一個private_token來做所有操作的一個身份識別。那麼這個token怎麼獲取呢?
1.打開個人下面的setting
在這裏插入圖片描述
2.在setting中選擇
在這裏插入圖片描述
3.然後在打開的頁面中,你會看到如下界面:
在這裏插入圖片描述
在這裏我們只需要填寫name並勾選api即可。(其他幾個的功能也很簡單就不細說了)
在這裏插入圖片描述
填好後,點擊下面的按鈕即可,這個時候就會生成我們所需要的private_token了:
在這裏插入圖片描述
複製備用即可。
編碼
下面打開我們的編輯器,開始編碼。在編碼前我們先梳理一下編碼邏輯
1.需要遍歷所有項目
2.需要遍歷所有項目下面擁有的分支
3.遍歷所有分支下每個人提交的代碼數量
4.有時間限制
下面開始編碼。
1.配置項目配置

url = 'http://192.168.1.229/'  # gitlab安裝地址
private_token = 'dfsdfadJZr7ZDMtsn9REC'  # gitlab 就是上面我們獲取的那個
2.獲取gitlab操作對象
# 登錄 獲取gitlab操作對象gl
gl = gitlab.Gitlab(url, private_token)
3.設置時間範圍,因爲我每天都要統計,所以選擇的是一個24小時範圍。
start_time = '2020-05-25T00:00:00Z'
end_time = '2020-05-26T00:00:00Z'
4.遍歷出來所有項目,因爲一個公司不可能只有一個項目,有可能有很多個。我們這邊有三十多個,所以爲了統計完全就需要把所有項目都遍歷一遍。如果你僅有一個那就不需要這麼麻煩了。
projects = gl.projects.list(all=True)#先把所有項目查出來
for project in projects:#遍歷每一個項目
	branches = project.branches.list()#把每個項目下面的所有分支查出來
	for branch in branches:#然後再遍歷每一個分支
		commits = project.commits.list(all=True,query_parameters={'since': start_time,'until':end_time, 'ref_name': branch.name})#根據時間、分支名遍歷該分支下面所有的提交記錄
		for commit in commits:#然後再遍歷每個提交記錄,查詢每個提交記錄的人和量
			com = project.commits.get(commit.id)

到這裏我們就把所有人的所有提交量都查出來了,其中對我們有用的就兩個參數,一個是com.author_name對應每個提交者name,com.stats[‘additions’]對應的是提交量。
5.下一步就是去重,相加,就可以了。
我的運行結果:

[ {'name': 'aaa', 'total': 757}, {'name': 'bbb', 'total': 290}, {'name': 'ccc', 'total': 244}, {'name': 'ddd', 'total': 448}, {'name': 'eee', 'total': 854}, {'name': 'fff', 'total': 253}, {'name': 'ggg', 'total': 1705}, {'name': 'hhh', 'total': 131}]

至此,實現我們的需求。
歡迎留言交流,也可以去公衆號”計算機自學平臺”回覆gitlab獲取源代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章