以前在使用 CSV、SVN 等版本管理软件时,这些版本管理软件都有提供版本编号可以查看。我们由版本编号就可以判断一个文件的新旧,这个特性在 Git 上就有些不同了,Git 是采用 SHA-1 的 Hash 来做版本标识的。如果我们要生成一个易读的数字编号,又应该怎么做呢?
如果要像 CVS、SVN 一样,用数字大小来查看和比较新旧版,我们可以使用下面的方式实现。
1. 方法一
代码语言:javascript复制# 用 commit 次数当 version number
$ git rev-list HEAD | wc -l
12904
2. 方法二
如果要使用 HASH 来当版本编号,可以按下面的方法。
- 短 Hash 生成方式
短 Hash 生成有下面三种方式,区别在于生成速度不同。
代码语言:javascript复制# real 0m0.097s
$ git describe --always
d5c364b18
# real 0m0.004s
$ git log --pretty="%h" -n1 HEAD
d5c364b18
# real 0m0.003s
# 短 hash 建议使用这个,速度最快。
$ git rev-parse --short HEAD
d5c364b18
- 长 Hash 生成方式
$ git rev-parse HEAD
d5c364b18aa9c7542bb4c55c4e36545d03c1985a
最后我们以 PHP 为例,来看下如何抓取版本编号。
代码语言:javascript复制<?php
function get_version()
{
chdir('/var/www/project/');
exec('git rev-list HEAD | wc -l', $version); // commit 笔数当版本编号
exec('git rev-parse --short HEAD', $version_short_hash);
exec('git rev-parse HEAD', $version_full_hash);
$version['short'] = 'v' . trim($version[0]) . '.' . $version_short_hash[0];
$version['full'] = 'v' . trim($version[0]) . '.' . $version_full_hash[0];
return $version;
}
print_r(get_version());
/*
Array
(
[0] => 12904
[short] => v12904.d5c364b18
[full] => v12904.d5c364b18aa9c7542bb4c55c4e36545d03c1985a
)
*/
?>
来源:Tsung's Blog 原文:http://t.cn/Eox0NNe 题图:来自谷歌图片搜索 版权:本文版权归原作者所有 投稿:欢迎投稿,投稿邮箱: editor@hi-linux.com
推荐阅读
- lsof 命令使用指南
- 浅谈几种常用负载均衡架构
- 抓包神器 TCPDUMP 使用教程
- 5 分钟小技巧系列 | 使用 AWK 过滤多余的列
- 5 分钟小技巧系列 | 巧用 Curl 命令分析请求耗时情况