实现过程:

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个字段内容

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

ruby 规整git commit 信息的更多相关文章

  1. 修改已经提交到远端的git commit信息

    有这么一种场景,就是以前没有设置用户名和邮箱,导致提交时git commit信息中用户信息不正确.这样的情况导致后来我们提交代码到git上面时因为身份验证错误,只有到 push 阶段了才发现提交不上去 ...

  2. Git commit 信息标准和丢弃必须要的commit

    /***************************************************************************** * Git commit 信息标准和丢弃必 ...

  3. 给程序添加git commit信息

    遇到了一个客户程序出问题,自己这边始终无法重现的bug.为了检查问题,查到了一个添加git的commit信息到程序中的方法,感觉对程序版本控制十分好用. 一,项目中添加如下文件 文件结构: GitVe ...

  4. 如何写好git commit message

    1.触发事件 我有这样一个版本库,里面包含两个学习用的练习项目:BookStore(以下简称BS)和PictureFriend(以下简称PF) 我在更改PF以后,未进行提交,同时又到BS中优化了一下文 ...

  5. git commit的规范

    https://www.yuque.com/fe9/basic/nruxq8#6c228def 制定一个 git commit 信息的提交规范是开发团队工作流必不可少的环节.试想一下,如果查看主分支上 ...

  6. git commit 、CHANGELOG 和版本发布的标准自动化

    一直以来,因为团队项目迭代节奏很快,每次发布的更新日志和版本更新都是通过人肉来完成的.有时候实在忙的团团转,对于手动的写这些更新信息就显得力不从心了.对于团队新来的小伙伴,有时候遇到些紧急情况,就更显 ...

  7. 自家公司关于git commit 的规范

    代码提交的commit info提个建议,fix的issue是哪个issue?都要有明确的链接.推荐方式:1.建立issue,说明问题的背景和原因.http://git.startdt.net/pay ...

  8. git 修改commit信息

    可以使用 git commit --amend 修改上一次的提交信息. 操作示例 如下: git commit --amend 后会出现编辑界面,如下 可以在最上面红框的地方,修改要提交的信息,然后按 ...

  9. git修改已push的commit信息

    本条适用于修改已push的最新的commit信息,确保本地的文件是最新的. 使用 git commit --amend 命令,(修改最近一次提交的注释信息),会进入到vim 编辑器 编辑提交信息,保存 ...

随机推荐

  1. IOS 自定义Layer(图层)

    方式1: @interface NJViewController () @end @implementation NJViewController - (void)viewDidLoad { [sup ...

  2. 【洛谷2468】[SDOI2010] 粟粟的书架(二合一)

    点此看题面 大致题意: 问你选取一个矩形区间内至少几个数,才能使它们的和\(\ge H_i\). 二合一 根据数据范围,比较显然能看出它是一道二合一的题目. 对于第一种情况,\(R,C\le 200\ ...

  3. linux怎么进home目录下

    可以使用cd命令,cd命令的功能是切换到指定的目录: 命令格式:cd [目录名] 有几个符号作为目录名有特殊的含义: “/”代表根目录.“..”代表上一级目录.“~”代表HOME目录.“-”代表前一目 ...

  4. C语言 数组名不是首地址指针

    今天上计算机系统课的时候老师讲到了C中的聚合类型的数据结构.在解释数组名的时候说"数组名是一个指针,指向该数组的第一个元素",附上ppt(第二行): 我觉得这是不正确的,是一个常见 ...

  5. mysql 获取系统时间的下一天 年-月-日 时:分:秒

    DAY) as date

  6. shell脚本,awk结合正则来打印文件里面的内容。

    文件内容如下:key1abc d key2 1.想得到如下结果: abc d 2.想得到如下结果: key1key2

  7. rem适配方案

    页面布局单位计算 一般有两大类:绝对长度单位和相对长度单位 绝对长度单位: px 像素:是显示屏上显示的每一个小点,为显示的最小单位 in 英寸,1in = 96px cm 厘米,1cm = 37.8 ...

  8. 两台centos之间使用scp命令传输文件

    1.将本地文件copy到远程 (1)复制文件 scp local_file remote_username@remote_ip:remote_folder 例如:将/usr/local/aa.png文 ...

  9. 揭密 Vue 的双向绑定

    Vue 中需要输入什么内容的时候,自然会想到使用 <input v-model="xxx" /> 的方式来实现双向绑定.下面是一个最简单的示例 剖析Vue原理& ...

  10. web前端的环境配置

    1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源(如html 页 ...