本文使用jgitflow插件简化实现git flow工作流程,具体流程参考Git工作流程最佳实践--git flow
开发流程:
每次开发从develop拉出feature分支,开发完成后合并到dev分支。
发布流程:
从develop分支检出release分支,测试完成后合并回develop分支和master分支
修复bug:
从master分支检出hotfix分支,测试完成后合并回develop(如果存在release,合并到release)分支和master分支
添加插件
pom 中加入jgitflow插件:
<plugin>
<groupId>external.atlassian.jgitflow</groupId>
<artifactId>jgitflow-maven-plugin</artifactId>
<version>1.0-m3</version>
<configuration>
<!-- see goals wiki page for configuration options -->
<flowInitContext>
<masterBranchName>master</masterBranchName>
<developBranchName>develop</developBranchName>
<featureBranchPrefix>feature-</featureBranchPrefix>
<releaseBranchPrefix>release-</releaseBranchPrefix>
<hotfixBranchPrefix>hotfix-</hotfixBranchPrefix>
<versionTagPrefix>loan-</versionTagPrefix>
</flowInitContext>
<username>name@9188.com</username>
<password>yourpassword</password>
</configuration>
</plugin>
使用命令
开始一个新功能
mvn jgitflow:feature-start -DfeatureName=myfeature -DallowSnapshots=true
完成一个新功能
开发完成,合并回dev分支,删除feature分支
mvn jgitflow:feature-finish
开始发布
自动拉出release分支并升级版本号。确保pom中没有snapshot版本的依赖。
在工程目录下执行命令:mvn jgitflow:release-start -DreleaseVersion=上线后的正式版本号 -DdevelopmentVersion=下一次使用的版本号 -DpushReleases=true -DallowSnapshots=true
如当前工程是1.0.0-SNAPSHOT版本,则上线后版本应为1.0.0,对应的下一次开发版本号为1.1.0-SNAPSHOT,此时命令为
mvn jgitflow:release-start -DreleaseVersion=1.0.0 -DdevelopmentVersion=1.1.0-SNAPSHOT -DpushReleases=true -DallowSnapshots=true
执行完成后,将在本地自动生成一个release分支,名为:release-1.0.0
。
完成发布
发布:将relase分支合并到master并打tag。执行命令
mvn jgitflow:release-finish -DnoReleaseBuild=true -DnoDeploy=true -DpushReleases=true
完成后relese自动合并到master并且打tag。
pom中的版本号也相应改变,这是此时dev分支的版本号:1.1.0-SNAPSHOT
最后在master分支上打包上线。
修复bug,创建hotfix分支
mvn jgitflow:hotfix-start -DallowSnapshots=true
修复bug完成
mvn jgitflow:hotfix-finish
build-number
命令:
mvn jgitflow:build-number -DbuildNumber=1.0.0
说明:
通过添加build版本号"-buildX"来修改当前分支中的pom版本号,其中“X”是通过参数传入的用来保证CI任务中每次构建的版本号是唯一的并且是非SNAPSHOT。
本文参考:jgit-flow 插件