美文网首页iOS Developer
Python_杂技(3)_定制git日志,输出excel文件;

Python_杂技(3)_定制git日志,输出excel文件;

作者: 丶纳凉 | 来源:发表于2017-04-19 20:15 被阅读114次

    �零丶脚本起因:

    测试需要一个代码提交规范,对每个任务填在表格上

    Paste_Image.png

    我的思路是,定制git lg 日志,指定代码提交规范,把xml格式的日志,输出到excel上;复制上去就可以;

    git自动生成标签<time><author>
    人为定制标签:<num><des><rev><ad>

    就是说代码提交要按照:

    <num>任务编号</num><des>描述</des><rev>代码审核人</rev><ad>安卓互审人</ad>

    这个格式来;顺序不敏感

    一丶定制git Lg

    # 参数定义列表
    '%H': commit hash
    '%h': 缩短的commit hash
    '%T': tree hash
    '%t': 缩短的 tree hash
    '%P': parent hashes
    '%p': 缩短的 parent hashes
    '%an': 作者名字
    '%aN': mailmap的作者名字 (.mailmap对应,详情参照git-shortlog(1)或者git-blame(1))
    '%ae': 作者邮箱
    '%aE': 作者邮箱 (.mailmap对应,详情参照git-shortlog(1)或者git-blame(1))
    '%ad': 日期 (--date= 制定的格式)
    '%aD': 日期, RFC2822格式
    '%ar': 日期, 相对格式(1 day ago)
    '%at': 日期, UNIX timestamp
    '%ai': 日期, ISO 8601 格式
    '%cn': 提交者名字
    '%cN': 提交者名字 (.mailmap对应,详情参照git-shortlog(1)或者git-blame(1))
    '%ce': 提交者 email
    '%cE': 提交者 email (.mailmap对应,详情参照git-shortlog(1)或者git-blame(1))
    '%cd': 提交日期 (--date= 制定的格式)
    '%cD': 提交日期, RFC2822格式
    '%cr': 提交日期, 相对格式(1 day ago)
    '%ct': 提交日期, UNIX timestamp
    '%ci': 提交日期, ISO 8601 格式
    '%d': ref名称
    '%e': encoding
    '%s': commit信息标题
    '%f': sanitized subject line, suitable for a filename
    '%b': commit信息内容
    '%N': commit notes
    '%gD': reflog selector, e.g., refs/stash@{1}
    '%gd': shortened reflog selector, e.g., stash@{1}
    '%gs': reflog subject
    '%Cred': 切换到红色
    '%Cgreen': 切换到绿色
    '%Cblue': 切换到蓝色
    '%Creset': 重设颜色
    '%C(...)': 制定颜色, as described in color.branch.* config option
    '%m': left, right or boundary mark
    '%n': 换行
    '%%': a raw %
    '%x00': print a byte from a hex code
    '%w([[,[,]]])': switch line wrapping, like the -w option of git-shortlog(1).
    

    需求:
    我要定制一个xml格式的git日志;<time>时间</time><author></author>commit标题

    格式:

    <time>%ai</time><author>%an</author>%s

    1.修改:

    $open open ~/.gitconfig

    2.在[alias]标签修改如下:
    [alias]
         lg = log --color --pretty=format:'<time>%ai</time><author>%an</author>%s' --abbrev-commit --
    
    
    3.保存下

    结果:

    Paste_Image.png

    如果想设置颜色,格式如下:

    %Cgreen 内容 %Creset

    举个例子:

    [alias]
            lg = log --color --graph --pretty=format:'<时间 :%Cgreen%ai%Creset><作者:%C(bold blue)%an%Creset><内容: %C(red)%s%Creset> ' --abbrev-commit --
    
    Paste_Image.png

    二丶生成excel

    上脚本:

    #!/usr/bin/python
    #-*- coding: utf-8 -*-
    #encoding=utf-8
    import os
    from bs4 import BeautifulSoup
    import xlwt
    os.system('git lg > hyd.xml')
     
    with open('hyd.xml', 'r') as f:
        xml_doc =f.read()   #读取xml文本内容
    soup = BeautifulSoup(xml_doc, 'html.parser')
    keyword = ['num','time','author','des','rev','ad']  #关键词list
    datatable = xlwt.Workbook(encoding='utf-8', style_compression=0)   
    newsheet = datatable.add_sheet('mxxx', cell_overwrite_ok=True)  #新建excel文档sheet
    num = 0 #列
    for i in range(len(keyword)):
        newsheet.write(0, num, keyword[i])  #写入每列keyword
        info_list = []
        for se in soup.find_all(keyword[i]):
             info = se.get_text()
             info_list.append(info) #找出所有对应标签内的text组成list
        print(info_list)
        for i in range(len(info_list)):
            newsheet.write(i+1, num, info_list[i])  #将该list中数据以列写入excel表
        num += 1    #列数加一,继续遍历关键词写入excel表格
    datatable.save('hydGitLog.xls')
     
    os.system('mv hydGitLog.xls /Users/hyd/Desktop/hydGitLog.xls')
    

    修改下最后的桌面路径;
    把脚本复制到你工程目录下,运行一下就ok了

    三丶最终效果:

    Paste_Image.png

    相关文章

      网友评论

        本文标题:Python_杂技(3)_定制git日志,输出excel文件;

        本文链接:https://www.haomeiwen.com/subject/hbbhzttx.html