我一直在使用Git流了几个月,并且它一直很好。 我想自动化“凹凸版”操作。
该项目是PHP和footer.php有一个令牌与当前版本的标签来代替。 我确信,使用Git日志和PHP文件的一切有些awk'ing应该工作了,但我相信有人这样做过......
有任何想法吗?
我一直在使用Git流了几个月,并且它一直很好。 我想自动化“凹凸版”操作。
该项目是PHP和footer.php有一个令牌与当前版本的标签来代替。 我确信,使用Git日志和PHP文件的一切有些awk'ing应该工作了,但我相信有人这样做过......
有任何想法吗?
你可以使用的semver宝石 ,增加了一个文件.semver
你混帐回购协议的根源。 语义版本号是具有结构化/一致/有意义的版本号的建议,创业板只是更容易实现。
因此,所有你需要做的就是添加:
semver inc major|minor|patch
为您的工作流程(手动或脚本),使得.semver被释放时更新。
如果你不希望依赖红宝石做,semver是非常简单的,所以有点SED实验可能会产生一个有效的解决方案。
还有bumpversion (更多资讯: https://github.com/peritus/bumpversion ,旨在取代sed的魔法)。
与安装pip install bumpversion
,告诉它该文件包含您的版本号以及是否要提交和标记这一点。 这也是(与语义版本默认)高度可配置的,这样你就可以添加如何撞击该软件项目的版本到您选择的VCS和其他人也能碰到版本声明配置文件。
在我的分叉混帐流的项目,我实际执行钩子和过滤器,许多在原来的项目所做但至今尚未付诸实施的请求。 有了这些,你可以自动在您的项目更新的版本号。 分叉项目可以在这里找到https://github.com/petervanderdoes/gitflow
有关版本颠簸一些Bash脚本,你可以参考两个学家,我创建https://gist.github.com/2877083或https://gist.github.com/2878492
Semver网页状态:
给定一个版本号MAJOR.MINOR.PATCH,递增:
- 当你做出不兼容的API改变主要版本,
- 次要版本,当你在一个向后兼容的方式增加功能,和
- 补丁版本,当你做向后兼容的bug修复。
预发行版本的附加标签,并建立元数据作为扩展到MAJOR.MINOR.PATCH格式。
Gitflow用来分支的命名惯例,bug修复住在前缀分支hotfix/
和新功能的前缀feature/
。
当这种类型的任何分支合并到发布分支这将导致PATCH
增加。 如果某个功能已被合并未成年场应该增加。
给出了具体的修改,你应该能够推测的如果任一分支机构已合并和颠簸的字段。
困难的部分是找出一个重大更改。 在过去,我一直在使用的编译代码反射来确定API是否发生了变化考虑,但是,我想这将是更容易也许只是使用关键字在提交信息到指定的重大更改。
下面是我们用来递增constants.h版本号的代码:
constants='../Include/constants.h'
# Get the current build number
currentbuild=`grep PRODUCT_BUILD $constants|sed 's/[^0-9]//g'`
currentversion=`grep PRODUCT_VERSION $constants|sed 's/[^.0-9]//g'`
echo "currentbuild=$currentbuild and currentversion=$currentversion"
newver=$((1+$currentbuild))
# Update the build number on-disk:
cp $constants /tmp/constants
if sed -e "/PRODUCT_BUILD/ s/[0-9][0-9]*/${newver}/" < /tmp/constants > $constants
then
echo "Updated build number from $currentversion.$currentbuild to $currentversion.$newver."
cd ../Include
# Check it into version control
svn ci -m "updated build number to ${currentversion}.${newver} for $buildid in $buildroot"
else
echo "There was a problem updating $constants to build $newver"
fi
您还可以看看我的回购为bumpversion其目前为Python安装文件进行可修改使用,bumpversion包
如果我没有理解你的“凹凸版”操作,那么你的意思是增加文件的任意数量的版本号,一旦你开始有释放git flow release start xxx
,那里的版本也git的标签中表示。
由于从Driessen的原gitflow已经停产了,非官方的继任者似乎是彼得·范德是否gitflow-avh
( https://github.com/petervanderdoes/gitflow-avh/ ),其中包含的git流挂钩的大量。 见https://github.com/petervanderdoes/gitflow-avh/tree/develop/hooks的完整列表。
我做了版本对撞post-flow-release-start
与这个小脚本:
VERSION=$1
# Get rid of version prefix
STRIPPED_VERSION=`echo $VERSION | cut -d'v' -f 2`
sed -i '' -E "s/^([ |#|[:alpha:]]*)\[.*\]$/\1[$STRIPPED_VERSION]/1" ./README.md
sed -i '' -E "s/^([\t| ]*\"version\": )\".*\"/\1\"$STRIPPED_VERSION\"/1" ./package.json
git commit -a -m "version $STRIPPED_VERSION"
exit 0
这是一个有点僵硬,因为这两个文件进行硬编码(README.md和的package.json)。 你可以做旧版本从过去的标签搜索,然后repleace它为一个循环中的所有配置文件。
注意事项:
OSX需要后缀sed -i
,你才能使用该空引号。 此外,对于扩展的正则表达式PARAM sed
命名不同在Linux上。
您可以自动版本碰撞每次提交。 在这里,你可以找到它使用shell脚本和内置的git的钩来完成: https://github.com/addonszz/Galileo/tree/develop/githooks
外壳纸条运行是: https://github.com/evandrocoan/.versioning/blob/master/scripts/updateVersion.sh
问题有关自动化的每一件事是如何知道你是否正在更新的主要,次要,补丁或建造,当你犯了一切。
我的意思是,对于构建你可以自动化每个开发分支提交,如上面的链接来实现。
该补丁,你可以连接每一个混帐流修复完成。 上面的链接只是缺少勾修复完成递增补丁版本运行: ./githooks/updateVersion.sh patch
但主要和次要有没有绝招,它们在功能完成版本中全部完成。
我找到了解决挂钩预修补程序,提交,它是这样一个问题: 如何预钩gitflow修补程序结束?