菜单

将Git版本号编写翻译进度序

2019年5月25日 - LINUX

难点的建议

不论是是哪些版本处理工科具,每一条提交记录都会有二个对应的版本号,一般是3个大背头,git是1个hash字符串。不管如何,那一个版本号是唯一的,不常候我们在程序运转的时候会在日记里面输出程序的本子号,只怕在命令行运营的时候在调控新北输出当前先后的版本号。一般来说,假如我们先后输出的版本号,与版本调节系统源码对应的本子号关于联关系是寡二少双可是的,那样当运营的先后出现难点的时候,能够由此程序的本子号,去源码的版本调整系统中找到呼应的源码实行解析,也正是说大家明白当前运作的次第对应在版本调节系统中的源码。

序##\

在读书中接触了Git这么些版本调控工具,刚开头并不知道怎么选用这么些工具扶助自个儿来支付(尽管自己领会它很强劲),也是行使英特网的一对素材入门,由于未有完全明白那个版本调节工具,小编把它只是用来作为备份代码的三个工具而已,当时并从未体会到使用Git支持开荒带来的有益。

新兴在高校的教室不经常见到了一本介绍Git的书籍《Git权威指南》,发掘那本书写的不胜科学,周密仔细的介绍了Git使用的法门以及本领。作者在放寒假回家时借了那本书,筹算动用一寒假的年华来系统的学习Git。

放假回家学习Git特别顺遂,作者花了大概2周的时日便学完了Git,多亏了那本书,解说的非常健全,而且各种命令都有讲明,学习起来10分快。

本人在念书的时候选用的操作系统是Ubuntu,在地点安装Git极其便利,而且学习起来格外轻易。

学学完Git后作者的最刚强的感触是:小编干什么未有早点学习它。Git特别有力,小编前几天在支付中早就完全离不开Git了,Git给支付带来了庞大的有益,不止能够很便利的缓和版本调节的难题,也足以缓和协会的1块儿开采难题,是支付的2个绝佳助手。

出于Git如此多的功利,笔者引入每种还一向不系统学习Git的开垦者都去学习下Git,它会让开采变得简单。

说了这么多了,还并未有聊到写此书的用意啦。好,上面小编就说说自家写下此书的目标。

经过git命令得到版本号

此间的采纳条件是Linux,我们的源码客户端是git,通过git命令大家得以获得当前风行版本库中的源码版本,使用git
log
命令的格式化输出,能够获得每一次提交结果中的种种部分,举例版本号,提交时间,提交日志。git
log
命令暗中认可情状下会输出全体提交记录的详细消息,通过行使其提供的–pretty选项大家能够钦定git
log 输出大家需求的一些,例如代表版本号的hash字符串部分。

git log –pretty=format:”%H”

输出:

082472d159a9ccd72fe241319d120b1a3dd87283
59ab0468389b511d0949aaef4e5324277e1899ce
134cb39bbb64b203b146626776a56037bccb469f
395db26c60e2f3544ec85d62e6caef911e9b16df
a29c1f4b7d72bb636ea844fc2d2e70c6f49eb046

不容置疑大家也得以只输出短hash就可以,举个例子:

git log –pretty=format:”%h”

输出:

082472d
59ab046
134cb39
395db26
a29c1f4

一致大家的代码提交时候的时光足以通过上边包车型客车格式获得,仅仅是修改format参数就能够:

git log –format=”%ct”

输出:

1499330142
1499245162
1499244031
1499237075
1498813631

此处出口的是装有提交记录的Unix时间戳,我们要博得最新的一条,只须求加上参数 -n
 个中n为大于0的整数,表示输出log的前n次的付出记录,举个例子:

git log -1 –format=”%ct”

输出:
1499330142

意味着输出最新的一遍提交的交由时间戳。既然有了这一个音讯,我们就足以取妥贴前最新的源码各种部分的新闻,其实最要紧正是付诸时间,以及版本号码了,有了眼下的命令使用,大家得以写出上边包车型客车shell代码:

#!/bin/sh
commit_ts=`git log -1 –format=”%ct”`
commit_time=`date -d@$commit_ts +”%Y-%m-%d %H:%M:%S”`
current_time=`date +”%Y-%m-%d %H:%M:%S”`
git_version=`git log -1 –format=”%h”`
sed  s/MYVERSION/”version: $git_version commit: $commit_time build:
$current_time”/g version.h.tmp > version.h
make clean
make

将脚本内容保留为 build.sh 每便提交源码之后,直接运转build.sh
脚本即会变动最新的头文件,该头文件被编写翻译到程序中,大家看到版本新闻包蕴了流行的本子号,提交时间,编译时间。个中大家有三个模板文件,version.h.tmp,其剧情如下:

#ifndef _VERSION_
#define _VERSION_ “MYVERSION”
#endif

运作build.sh之后生成的version.h文件类似如下:

#ifndef _VERSION_
#define _VERSION_ “version: 082472d commit: 2017-07-06 16:35:42
build: 2017-07-11 21:01:31”
#endif

在大家的源文件中一直动用 _VERSION_
宏就可以啦,在git提交版本的时候大家应有将version.h.tmp模版文件添加到版本调整系统中,而脚本生成的version.h由于每便build都会生成,能够忽略掉。

写此书的指标##\

Git命令较多,或者过多初学者会记不住。笔者也是那样的,纵然已经系统的求学了上Git,不过假如过个两三个月不利用Git的话,作者也会遗忘一些命令。

那么,写此书的目标来了,为了在作者记不清一些限令时,笔者可以查阅那本书,便能够重复Git的指令,解决忘记的标题。由于单独写成此书,比较书本来讲,更简便,在这本书中节约了壹部分有关Git命令的详细介绍,只保留要求的有个别。这样使得此书的页数大大缩小,省去了翻阅书籍的大方时间,进步了工效。同期,书中有关Git命令都有着详细的演示,部分演示配有截图,能够越来越好地翻阅。

除外方便已经有Git基础的人手查看外,那本书还适合未有基础,但想快速上手Git的人士阅读,那本书相比较《Git权威指南》、《Pro
Git》来讲,保留了有着Git的根基命令,并有适当的量的讲解,能够更加快的就学Git,利用Git开荒。可是不引入这么做,想要真正的施用Git那个壮大的版本调节工具,还是去读书更详尽更权威一点的图书吗,但要是你兴奋看那本书,笔者也不行欢迎。

有关git log 命令的格式表达

本身这里列出1份git log 越发圆满的格式表达,供大家仿效: 

%H: commit hash
%h: 缩短的commit hash
%T: tree hash
%t: 缩短的 tree hash
%P: parent hashes
%p: 缩短的 parent hashes
%an: 笔者名字
%aN: mailmap的小编名字
(.mailmap对应,实际情况参见git-shortlog(壹)可能git-blame(1))
%ae: 小编邮箱
%aE: 小编邮箱 (.mailmap对应,详细情形参见git-shortlog(一)或然git-blame(1))
%ad: 日期 (–date= 制定的格式)
%aD: 日期, RFC2822格式
%ar: 日期, 相对格式(一 day ago)
%at: 日期, UNIX timestamp
%ai: 日期, ISO 8601 格式
%cn: 提交者名字
%cN: 提交者名字
(.mailmap对应,详细情形参见git-shortlog(一)或许git-blame(壹))
%ce: 提交者 email
%cE: 提交者 email
(.mailmap对应,详细的情况参见git-shortlog(一)只怕git-blame(壹))
%cd: 提交日期 (–date= 制定的格式)
%cD: 提交日期, XC60FC282贰格式
%cr: 提交日期, 相对格式(壹 day ago)
%ct: 提交日期, UNIX timestamp
%ci: 提交日期, ISO 860一 格式
%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).

最终分享三个相比好的git log
格式输出:

git log –graph
–pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %cn %s
%Cgreen(%cr)%Creset’ –abbrev-commit –date=relative

其出口效果如下:

图片 1

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永远更新链接地址https://www.linuxidc.com/Linux/2018-07/153239.htm 

图片 2

本书的集体##\

本书共有六篇。

首先篇首要介绍了版本调控系统的前生今生,详细讲授了Git、SVN、CVS之间的分别,同一时候介绍了Git的一些闪亮本性;最后详细介绍了Git在Linux、windows、OS
X系统下的设置格局,没有设置好Git的用户可以详细的开卷并在温馨的系统下安装Git。

其次篇是Git入门。
根本介绍了Git的相关布署以及开创Git仓库、暂存、提交的命令、改造Git历史、查看提交日志等一声令下,在那壹章,你会调整git的骨干命令,初始入门git。

第三篇Git进阶。
在那1篇中,你将会触发到利用git来创建分支、打标志、使用Git远程版本库等知识,这个都是git的闪光性情,学会那个,利用Git会变得越来越风趣。

第四篇是使用github。
作者们原本创制版本库等各类操作都以在地点计算机上操作的,在那一篇中,我们会介绍如何使用github等楼台备份代码、开荒项目。

第4篇是Git别的使用。
在那一篇中,作者会介绍一些应用Git的其余手艺。

第4篇Git常用命令。
由来,大家曾经整整学完了Git,在这1篇中,作者会总结运用Git的健全命令,在支付中得以连忙查看。

适用读者##\

适用全体想学学Git的读者。

排版约定##\

本书中约定的排版格式如下:
指令输出级示例代码git version 一.九.壹
$ git –version

在提示符$后的字符为输入指令,输入指令为黄铜色粗体,而在输入指令后的非粗体字符为出口。

在线财富##\

正文全体公布在小编的博客上:
法定博客:
http://blog.lxx1.com/
本书下载地址:http://www.lxx1.com/
Github下载地址:http://github.com/xinxingli/git

迎接大家阅读、下载,同不经常候有哪些疑点也足以同自身交换。

李新星(http://blog.lxx1.com
20壹伍年四月2三十日星期3 20时一分

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图