实现过程:

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. sql常识

    1.UNION与UNION ALL的区别UNION去重且排序UNION ALL不去重不排序2.sql语句or与union all的执行效率比较:union all>union> in &g ...

  2. Finite Encyclopedia of Integer Sequences(找规律)

    6617: Finite Encyclopedia of Integer Sequences 时间限制: 1 Sec  内存限制: 128 MB提交: 375  解决: 91[提交] [状态] [讨论 ...

  3. 2018.6.27 Ajax实现异步刷新

    Servlet获取URL地址.在HttpServletRequest类里,有以下六个取URL的函数: getContextPath 取得项目名 getServletPath 取得Servlet名 ge ...

  4. display:inline-block解决文字有间隙问题

    定义:display:inline-block是使元素以块级元素的形式呈现在行内.意思就是说,让这个元素显示在同一行不换行,但是又可以控制高度和宽度,这相当于内联元素的增强. 但是display:in ...

  5. 解决ndk编译lua时遇到 undefined reference to '__srget'的问题

    今天用ndk r10d版本编译lua时,遇到几个错误,提示没有找到__srget 没有定义,于是看了国外的大神的解决方法, 是因为ndk在r10c之后的版本已经将getc函数屏蔽了,所以导致编译器找不 ...

  6. Mybatis中的增删改查

    相比jdbc mybatis在操作数据库方面比jdbc节省了大量的代码,及大量的代码冗余.使得操作起来更加简洁. 在Mapper中分别有着 select,insert, update,delete的这 ...

  7. html5支持drag的拖放排序插件sortable.js

    html5支持drag的拖放排序插件sortable.js <script src="//cdnjs.cloudflare.com/ajax/libs/Sortable/1.5.1/S ...

  8. JZOJ 5195. 【NOIP2017提高组模拟7.3】A

    5195. [NOIP2017提高组模拟7.3]A Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed Limits   Goto Pro ...

  9. relu函数为分段线性函数,为什么会增加非线性元素

    relu函数为分段线性函数,为什么会增加非线性元素 我们知道激活函数的作用就是为了为神经网络增加非线性因素,使其可以拟合任意的函数.那么relu在大于的时候就是线性函数,如果我们的输出值一直是在大于0 ...

  10. day 44 前端HTML

    前端HTML   HTML介绍 Web服务本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk ...