用git來管理工程的開發,git log是非常有用的‘歷史'資料,需求就是來自這里,我們希望能對git log有一個定制性強的過濾。此段腳本就是在完成這種類型的任務。對于一個repo所有branch中的commit,腳本將會把message中存在BUG ID的一類commits給提取整理出來,并提供了額外的search_key, 用于定制過濾。
代碼如下:
# -*- coding: utf-8 -*-
# created by vince67 Feb.2014
# nuovince@gmail.com
import re
import os
import subprocess
def run(project_dir, date_from, date_to, search_key, filename):
bug_dic = {}
bug_branch_dic = {}
try:
os.chdir(project_dir)
except Exception, e:
raise e
branches_list = []
branches_list = get_branches()
for branch in branches_list:
bug_branch_dic = deal_branch(date_from,
date_to,
branch,
search_key)
for item in bug_branch_dic:
if item not in bug_dic:
bug_dic[item] = bug_branch_dic[item]
else:
bug_dic[item] += bug_branch_dic[item]
log_output(filename, bug_dic)
# abstract log of one branch
def deal_branch(date_from, date_to, branch, search_key):
try:
os.system('git checkout ' + branch)
os.system('git pull ')
except Exception, error:
print error
cmd_git_log = ["git",
"log",
"--stat",
"--no-merges",
新聞熱點
疑難解答