警告:我不是一个git向导,所以我可能没有正确的术语......
在我将发布版推送到github之前,我创建了一个反映当前提交标记的版本文件,类似于:
git commit -m <insert pithy comment here>
MAJOR=1
MINOR=2
BUILD=`git describe --all --tags`
echo VERSION = [${MAJOR}, ${MINOR}, #{BUILD}] > version.rb
git push origin master
这是有效的,但是对于明显的缺陷,在提交发生后修改了version.rb。我可以将verion.rb添加到.gitignore,但有没有办法在提交后将verion.rb隐藏到配置中而不创建新标记?还是有另一种我没想过的方法?
答案 0 :(得分:1)
这是一个特定于Ruby的答案,但你可以在你选择的环境中实现相同的东西......
在查看评论并深入研究git文档之后,尝试使用git标记作为版本号的一部分似乎是不谨慎的,只是因为git标记在提交之后才可用。
所以我写了一个简单的rake任务来直接在我的config / version.rb文件中删除内部版本号。我在执行提交和部署之前运行此脚本:
# Read config/version.rb file containing
# VERSION = [a, b, c]
# Overwrite config/version.rb file to contain:
# VERSION = [a, b, c+1]
task :bump_version do
desc "increment build number in config/version.rb"
file = "config/version.rb"
unless (File.exist?(file))
$stderr.puts("cannot locate version file #{file}")
else
s = File.open(file) {|f| f.read}
if (s =~ /(\d+)\D+(\d+)\D+(\d+)/)
s1 = "VERSION = [#{$1}, #{$2}, #{$3.to_i + 1}]"
$stderr.puts(s1)
File.open(file, "w") {|f| f.puts(s1) }
else
$stderr.puts("cannot parse version file")
end
end
end
对我来说很好。
答案 1 :(得分:-1)
使用git commit --ammend -m <pithy comment>
将更改添加到上次提交。这将在上面示例中的push命令之前发生。