• ruby 规整git commit 信息


    实现过程:

    1、使用git log 可以获取到所有git commit。对命令加入参数后,可以获取某段时间的log、和只输出log的某些字段。如:

    [root@localhost crowd-web-server]# git log --pretty=format:'%an | %cd | %s' --after='2017-03-5 14:42'

    该命令为:只获取2017年3月5号以后的git log。并且只返回 提交人、提交时间、提交信息3个字段内容

    image

    2、过滤掉一些CI提交内容的log,输出时,在最前面加入模块信息如:【sdk】【web】

    filter1 = 'gitlab-ci.yml'
    filter2 = 'Merge branch'
    filter3 = 'xxxxxxhui'
    
    File.readlines('sdk_sourceNotes.txt').each do |line|
            file.puts " 【sdk】"+line if !line.include?(filter1) and !line.include?(filter2) and !line.include?(filter3)
    end

    3、最后将过滤好的内容写入一个文本即可。以下为完整脚本

    souNotesPath = '/home/shench/script/releaseNotes/'
    sdk_ProjectPath = '/home/devProject/sdk/sense-crowd'
    sdk_crossline = '/home/devProject/sdk/crossline'
    server_nodeProjectPath = '/home/devProject/server/Crowd2.1-node'
    server_appProjectPath = '/home/devProject/server/CrowdAnalyze-app'
    server_forwardProjectPath = '/home/devProject/server/VideoForward'
    webStatic_projectPath = '/home/devProject/web/crowd-web-static'
    webServer_projectPath = '/home/devProject/web/crowd-web-server'
    
    branch = ARGV[0].to_s.sub('[','').sub(']','')
    ciBranch = ARGV[1].to_s.sub('[','').sub(']','')
    devBranch = 'v2.3.0'
    sdk_CL_branch = 'v1.0.0'
    
    system("cd /home/CrowdProduct;git checkout #{branch};git status;git pull #{branch} #{branch};cat releaseNotes.txt")
    #获取上次编译时间
    File.readlines('/home/CrowdProduct/releaseNotes.txt').each do |line|
            @lastBuilt = line.sub('build time:','') if line=~/build/
    end
    puts "last built time:#{@lastBuilt}"
    puts "get git log"
    source_releaseNotes = "git log --pretty=format:'%an | %cd | %s' --after=#{@lastBuilt.chomp.inspect}"
    # puts source_releaseNotes
    
    puts "get sdk git log"
    #获取sdk编译日志
    system("cd #{sdk_ProjectPath};pwd;git checkout #{devBranch};git pull #{devBranch} #{devBranch};git status;#{source_releaseNotes} > #{souNotesPath}sdk_sourceNotes.txt")
    system("cd #{sdk_crossline};pwd;git checkout #{sdk_CL_branch};git pull #{sdk_CL_branch} #{sdk_CL_branch};git status;#{source_releaseNotes} > #{souNotesPath}sdk_CLsourceNotes.txt")
    
    puts "get server git log"
    #获取server编译日志
    #node -tianshuai
    system("cd #{server_nodeProjectPath};pwd;git checkout #{devBranch};git pull #{devBranch} #{devBranch};git status;#{source_releaseNotes} > #{souNotesPath}server_node_sourceNotes.txt;cat #{so
    uNotesPath}server_node_sourceNotes.txt")
    
    #app - kesong
    system("cd #{server_appProjectPath};pwd;git checkout #{devBranch};git pull #{devBranch} #{devBranch};git status;#{source_releaseNotes} > #{souNotesPath}server_app_sourceNotes.txt;cat #{souN
    otesPath}server_app_sourceNotes.txt")
    #forward -zhongxing
    system("cd #{server_forwardProjectPath};pwd;git checkout #{devBranch};git pull #{devBranch} #{devBranch};git status;#{source_releaseNotes} > #{souNotesPath}server_forward_sourceNotes.txt;ca
    t #{souNotesPath}server_forward_sourceNotes.txt")
    
    puts "get web git log"
    #获取web编译日志system("cd #{web_projectPath};pwd;git checkout #{branch};git pull #{branch} #{branch};git status;#{source_releaseNotes} > #{souNotesPath}web_sourceNotes_#{branch}.txt;cat #{souNotesPath}w
    eb_sourceNotes_#{branch}.txt")
    system("cd #{webStatic_projectPath};pwd;git checkout #{branch};git pull #{branch} #{branch};git status;#{source_releaseNotes} > #{souNotesPath}webStatic_sourceNotes_#{branch}.txt;cat #{souN
    otesPath}webStatic_sourceNotes_#{branch}.txt")
    system("cd #{webServer_projectPath};pwd;git checkout #{branch};git pull #{branch} #{branch};git status;#{source_releaseNotes} > #{souNotesPath}webServer_sourceNotes_#{branch}.txt;cat #{souN
    otesPath}webServer_sourceNotes_#{branch}.txt")
    
    #规整输出日志
    currTime = Time.now.strftime("%Y-%m-%d %H:%M")
    puts "build time:#{currTime}"
    file = File.open('releaseNotes.txt',"w+")
    file.puts "build time:#{currTime}"
    filter1 = 'gitlab-ci.yml'
    filter2 = 'Merge branch'
    filter3 = 'xxxxxhui'
    
    File.readlines('sdk_sourceNotes.txt').each do |line|
            file.puts " 【sdk】"+line if !line.include?(filter1) and !line.include?(filter2) and !line.include?(filter3)
    end
    File.readlines('sdk_CLsourceNotes.txt').each do |line|
            file.puts " 【sdk】"+line if !line.include?(filter1) and !line.include?(filter2) and !line.include?(filter3)
    end
    File.readlines('server_node_sourceNotes.txt').each do |line|
            file.puts " 【server】"+line if !line.include?(filter1) and !line.include?(filter2)     and !line.include?(filter3)
    end
    File.readlines('server_app_sourceNotes.txt').each do |line|
            file.puts " 【server】"+line if !line.include?(filter1) and !line.include?(filter2)     and !line.include?(filter3)
    end
    File.readlines('server_forward_sourceNotes.txt').each do |line|
            file.puts " 【server】"+line if !line.include?(filter1) and !line.include?(filter2) and !line.include?(filter3)
    end
    File.readlines("webStatic_sourceNotes_#{branch.sub('"','').sub('"','')}.txt").each do |line|
            file.puts " 【web】"+line if !line.include?(filter1) and !line.include?(filter2) and !line.include?(filter3)
    end
    File.readlines("webServer_sourceNotes_#{branch.sub('"','').sub('"','')}.txt").each do |line|
            file.puts " 【web】"+line if !line.include?(filter1) and !line.include?(filter2) and !line.include?(filter3)
    end
    file.close
    puts "format releaseNotes done ............."
    system("pwd;cat #{souNotesPath}releaseNotes.txt;du -sh *")

    release notes消息可以查看上一遍:ruby发送邮件 http://www.cnblogs.com/fithon/p/6644294.html

    执行过程如下:

    build time:2017-03-28 14:42
    last built time:2017-03-28 14:42
    get git log
    get sdk git log
    /home/devProject/sdk/sense-crowd
    Already on 'v2.3.0'
    From http://gitlab.sensenets.com/yyansheng/sense-crowd
    * branch v2.3.0 -> FETCH_HEAD
    Already up-to-date.
    # On branch v2.3.0
    nothing to commit, working directory clean
    /home/devProject/sdk/crossline
    Already on 'v1.0.0'
    Your branch is ahead of 'v1.0.0/v1.0.0' by 12 commits.
    (use "git push" to publish your local commits)
    From http://gitlab.sensenets.com/wuyuchun/crossline
    * branch v1.0.0 -> FETCH_HEAD
    Already up-to-date.
    # On branch v1.0.0
    # Your branch is ahead of 'v1.0.0/v1.0.0' by 12 commits.
    # (use "git push" to publish your local commits)
    #
    nothing to commit, working directory clean
    get server git log
    /home/devProject/server/Crowd2.1-node
    Already on 'v2.3.0'
    From http://gitlab.sensenets.com/zhangtianshuai/Crowd2.1
    * branch v2.3.0 -> FETCH_HEAD
    Already up-to-date.
    # On branch v2.3.0
    nothing to commit, working directory clean
    /home/devProject/server/CrowdAnalyze-app
    Already on 'v2.3.0'
    From http://gitlab.sensenets.com/zhangkesong/CrowdAnalyze
    * branch v2.3.0 -> FETCH_HEAD
    Already up-to-date.
    # On branch v2.3.0
    nothing to commit, working directory clean
    /home/devProject/server/VideoForward
    Already on 'v2.3.0'
    From http://gitlab.sensenets.com/jiangzhongxing/VideoForward
    * branch v2.3.0 -> FETCH_HEAD
    Already up-to-date.
    # On branch v2.3.0
    nothing to commit, working directory clean
    get web git log
    /home/devProject/web/crowd-web-static
    Already on 'v2.4.0'
    Your branch is ahead of 'v2.4.0/v2.4.0' by 16 commits.
    (use "git push" to publish your local commits)
    From http://gitlab.sensenets.com/panlong/crowd-web-static
    * branch v2.4.0 -> FETCH_HEAD
    Updating 5d64ce1..892f2b0
    Fast-forward
    .project | 17 ++
    module/ocx/PlayVideoTool.js | 1 -
    module/ocx/VideoOcxTool.js | 1 -
    module/statistic/statistic.main.js | 17 +-
    module/statistic/statistic.status.js | 341 +++++++++++++++++++++-
    template/statistic/stat-status-by-minute-tpl.html | 8 +
    template/statistic/statistic-main.html | 1 +
    7 files changed, 374 insertions(+), 12 deletions(-)
    # On branch v2.4.0
    # Your branch is ahead of 'v2.4.0/v2.4.0' by 18 commits.
    # (use "git push" to publish your local commits)
    #
    nothing to commit, working directory clean
    xxxxnpan | Thu Mar 30 15:10:04 2017 +0800 | 进出人数统计导出
    xxxxnpan | Thu Mar 30 09:54:35 2017 +0800 | 进出计数统计代码提交/home/devProject/web/crowd-web-server
    Already on 'v2.4.0'
    From http://gitlab.sensenets.com/panlong/crowd-web-server
    * branch v2.4.0 -> FETCH_HEAD
    Already up-to-date.
    # On branch v2.4.0
    nothing to commit, working directory clean
    build time:2017-03-31 10:06
    format releaseNotes done .............
    /home/shench/script/releaseNotes
    build time:2017-03-31 10:06
    【web】pan | Thu Mar 30 15:10:04 2017 +0800 | 进出人数统计导出
    【web】pan | Thu Mar 30 09:54:35 2017 +0800 | 进出计数统计代码提交
    4.0K getReleaseNotes_v2.3.0.rb
    8.0K getReleaseNotes_v2.4.0.rb
    4.0K releaseNotes.txt
    0 sdk_CLsourceNotes.txt
    0 sdk_sourceNotes.txt
    0 server_app_sourceNotes.txt
    0 server_forward_sourceNotes.txt
    0 server_node_sourceNotes.txt
    0 webServer_sourceNotes_v2.4.0.txt
    4.0K webStatic_sourceNotes_v2.4.0.txt
  • 相关阅读:
    理论四:接口隔离原则有哪三种应用?原则中的“接口”该如何理解?
    gunicorn 配置文件
    转载——gunicorn的实践经验
    pympler 模块
    类属性的名称空间
    django——实现事务
    django-apscheduler报错——Run time of job …… next run at: ……)” was missed by
    阿里云连接数据库服务
    第十三周总结
    IDEA常用模板
  • 原文地址:https://www.cnblogs.com/fithon/p/6650174.html
Copyright © 2020-2023  润新知