博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python解析git log后生成页面显示git更新日志信息
阅读量:7064 次
发布时间:2019-06-28

本文共 3589 字,大约阅读时间需要 11 分钟。

使用git log可以查到git上项目的更新日志。

如下两个git项目,我想把git的日志信息解析成一个便于在浏览器上查看的页面。

https://github.com/gityf/lua

https://github.com/gityf/db

使用git log命令获取git更新日志信息:

D:\git\github\lua>git log > ..\lua.gitlogD:\git\github\db>git log > ..\dbutils.gitlog

生成两个git更新日志文件lua.gitlog和dbutils.gitlog。

文件内容格式是这样的:

commit a5ff94375f48c7de067a1c191cb60d720bf4f726Author: Mr.YF 
Date: Tue Jan 12 19:43:33 2016 +0800 add thrift binary analysis code and doc.commit 9dc9437070867e8d8ba7c9d4365efe3f2c317cafAuthor: Mr.YF
Date: Mon Jan 11 19:51:48 2016 +0800 add comments.

git log命令会输出关键字"commit","Merge","Author","Date"

使用下面脚本分析git日志,生成html的页面,便于查看。

'''Created on 2016-1-25@author: Mr.YF'''import osimport sysdef header():    headerHtml = '''        Statistics Report for gitcheck.        

GitCheck Center


> General git information

''' return headerHtmldef footer(): footHtml = '''
''' return footHtmldef row(): rowHtml = '''%s%s%s%s%s''' return rowHtmldef indexMainRow(): rowHtml = '''IDbranch git log info.''' return rowHtmldef indexRow(): rowHtml = '''%d%s''' return rowHtmldef tdClassId(pageId): pageId += 1 if pageId >= 7: pageId = 1 return pageIddef gitcheck(inFileName="gitcheck.in", outFileName="gitcheck.out.html"): fn = open(inFileName, "r") fnOut = open(outFileName, "w") fnOut.write(header()) fnOut.write(row() % (0, "commit","Merge","Author","Date", "Comment")) lines = fn.readlines() beginTag = False pageId = 1 goodLine = {0:"",1:"",2:"",3:"",4:""} for line in lines: if len(line) <= 2: continue if line.startswith("commit"): beginTag = True goodLine[0] = line[6:] pageId = tdClassId(pageId) continue if beginTag: if line.startswith("Merge: "): goodLine[1] = line[7:] elif line.startswith("Author: "): goodLine[2] = line[8:] elif line.startswith("Date: "): goodLine[3] = line[6:] else : goodLine[4] = line beginTag = False fnOut.write(row() % (pageId,goodLine[0],goodLine[1],goodLine[2],goodLine[3],goodLine[4])) goodLine = {0:"",1:"",2:"",3:"",4:""} fn.close() fnOut.write(footer()) fnOut.flush() fnOut.close()def lsHtmls(dirName="gitinfo"): htmlFiles = [] allFile = os.listdir(dirName) for f in allFile: if f.endswith(".html"): htmlFiles.append(f) print f return htmlFilesdef createIndex(dirName): files = lsHtmls(dirName) if len(files) > 0: fnOut = open("index.html", "w") fnOut.write(header()) fnOut.write(indexMainRow()) pageId = 1 ii = 1 for f in files: fnOut.write(indexRow() % (ii, pageId, f, f)) ii = tdClassId(ii) pageId += 1 fnOut.write(footer()); fnOut.close()if __name__ == '__main__': if len(sys.argv) >= 3: gitcheck(sys.argv[1], sys.argv[2]) elif len(sys.argv) >= 2: createIndex(sys.argv[1])

把python代码保存为gitcheck.py

使用如下命令解析日志文件lua.gitlog和dbutils.gitlog。

F:\pyworkspace\gitcheck>python gitcheck.py dbutils.gitlog gitinfo\dbutils.htmlF:\pyworkspace\gitcheck>python gitcheck.py lua.gitlog gitinfo\lua_thrift_demo.htmlF:\pyworkspace\gitcheck>python gitcheck.py gitinfodbutils.htmllua_thrift_demo.html

python gitcheck.py gitinfo会把目录gitinfo下所有的html文件汇总生成一个index.html主页。

效果如下:

主页

跳转到某个项目查看git日志信息

 

Done.

转载于:https://www.cnblogs.com/voipman/p/5158126.html

你可能感兴趣的文章
python爬虫——40行代码爬取「笔趣看」全部小说
查看>>
数据分析师完整的知识结构
查看>>
Airbnb个性化搜索服务架构
查看>>
【译】Cloudera Manager(CDH)入门系列之四 (管理员控制台)
查看>>
编程常用动词细微差别
查看>>
如何通过Dataworks禁止MaxCompute 子账号跨Project访问
查看>>
聊聊reactive streams的backpressure
查看>>
android studio 2 3 的maven坑
查看>>
来分享一个我自己写的HTML模板引擎,Leopard
查看>>
基于阿里云数加构建企业级数据分析平台
查看>>
React Native安卓模拟器调出Dev Setting菜单
查看>>
Swift枚举相关值
查看>>
少走弯路,给Java 1~5 年程序员的建议
查看>>
08.Android之View事件问题
查看>>
[ JavaScript ] 数据结构与算法 —— 链表
查看>>
Java程序员幽默爆笑锦集
查看>>
小程序button引导用户授权
查看>>
机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
查看>>
我是如何设计 Upload 上传组件的
查看>>
彻底搞懂浏览器Event-loop
查看>>