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

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 信息的更多相关文章
- 修改已经提交到远端的git commit信息
有这么一种场景,就是以前没有设置用户名和邮箱,导致提交时git commit信息中用户信息不正确.这样的情况导致后来我们提交代码到git上面时因为身份验证错误,只有到 push 阶段了才发现提交不上去 ...
- Git commit 信息标准和丢弃必须要的commit
/***************************************************************************** * Git commit 信息标准和丢弃必 ...
- 给程序添加git commit信息
遇到了一个客户程序出问题,自己这边始终无法重现的bug.为了检查问题,查到了一个添加git的commit信息到程序中的方法,感觉对程序版本控制十分好用. 一,项目中添加如下文件 文件结构: GitVe ...
- 如何写好git commit message
1.触发事件 我有这样一个版本库,里面包含两个学习用的练习项目:BookStore(以下简称BS)和PictureFriend(以下简称PF) 我在更改PF以后,未进行提交,同时又到BS中优化了一下文 ...
- git commit的规范
https://www.yuque.com/fe9/basic/nruxq8#6c228def 制定一个 git commit 信息的提交规范是开发团队工作流必不可少的环节.试想一下,如果查看主分支上 ...
- git commit 、CHANGELOG 和版本发布的标准自动化
一直以来,因为团队项目迭代节奏很快,每次发布的更新日志和版本更新都是通过人肉来完成的.有时候实在忙的团团转,对于手动的写这些更新信息就显得力不从心了.对于团队新来的小伙伴,有时候遇到些紧急情况,就更显 ...
- 自家公司关于git commit 的规范
代码提交的commit info提个建议,fix的issue是哪个issue?都要有明确的链接.推荐方式:1.建立issue,说明问题的背景和原因.http://git.startdt.net/pay ...
- git 修改commit信息
可以使用 git commit --amend 修改上一次的提交信息. 操作示例 如下: git commit --amend 后会出现编辑界面,如下 可以在最上面红框的地方,修改要提交的信息,然后按 ...
- git修改已push的commit信息
本条适用于修改已push的最新的commit信息,确保本地的文件是最新的. 使用 git commit --amend 命令,(修改最近一次提交的注释信息),会进入到vim 编辑器 编辑提交信息,保存 ...
随机推荐
- git入门使用摘录
无论使用github或者gitlab,第一步都是在本地生产ssh-key,ssh-key作为客户端的身份证存放在user用户的.ssh文件夹下.如果之前没有生产过,需要用ssh-keygen命令生成. ...
- 可以让表格变为拖动边界调整列宽度的JS办法
需要引入文件: jquery.resizableColumns.min.js 和 jquery.resizableColumns.css 代码如下: $(".tableclass" ...
- UVA 10564 Paths through the Hourglass(背包)
为了方便打印路径,考虑从下往上转移.dp[i][j][S]表示在i行j列总和为S的方案, dp[i][j][S] = dp[i+1][left][S-x]+dp[i+1][right][S-x] 方案 ...
- CSS3 - - Media(css3媒介查询) 属性
语法结构及用法: @media 设备名 only (选取条件) not (选取条件) and(设备选取条件),设备二{sRules} 实际应用一 判断设备横竖屏: /* 这是匹配横屏的状态,横屏时的 ...
- Problem K: 搜索基础之棋盘问题
Problem K: 搜索基础之棋盘问题 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 92 Solved: 53[Submit][Status][W ...
- fifo - 先进先出的特殊文件, 又名管道
描述 (DESCRIPTION) 一个 FIFO 特殊 文件 (又名 管道) 同 管道线 相似, 但是 它是 作为 文件 系统 的一部分 访问的. 可以 有 多个 进程 打开它 以供 读写. 当 进程 ...
- C# 文件操作 常用的类
File------实用类,提供许多静态方法,用于移动.删除.和复制文件. Directory------实用类,提供许多静态方法,用于移动.删除和复制目录. Path------ 实用类,用于处理路 ...
- 如何利用WordPress的菜单功能实现友情链接功能?
导语:对于wordpress网站的友情链接,有很多种方法可以实现,例如我们可以利用WordPress的链接功能,或者利用WordPress的菜单功能.本文章介绍的是如何利用菜单功能来实现友情链接. 前 ...
- WordPress免费清新响应式博客/杂志/图片三合一主题Nana
WordPress免费清新响应式博客/杂志/图片三合一主题Nana 一.主题安装须知 1.本主题必须安装文章点击统计插件:WP-PostViews,可以直接在后台插件→安装插件中直接搜索安装官方最新版 ...
- python2, 3环境变量配置(win10下)
1.找到此电脑,右击点击属性 2.左边侧栏,高级系统设置 3.系统属性中点击高级 4.点击环境变量 5.可以看到 某某某用户变量和系统变量两个方框 其中,系统变量是要你在打开cmd是用管理员身份运行所 ...