本文使用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.jgitflowgroupId>
<artifactId>jgitflow-maven-pluginartifactId>
<version>1.0-m3version>
<configuration>
<flowInitContext>
<masterBranchName>mastermasterBranchName>
<developBranchName>developdevelopBranchName>
<featureBranchPrefix>feature-featureBranchPrefix>
<releaseBranchPrefix>release-releaseBranchPrefix>
<hotfixBranchPrefix>hotfix-hotfixBranchPrefix>
<versionTagPrefix>loan-versionTagPrefix>
flowInitContext>
<username>[email protected]username>
<password>yourpasswordpassword>
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分支上打包上线。
mvn jgitflow:hotfix-start -DallowSnapshots=true
mvn jgitflow:hotfix-finish
命令:
mvn jgitflow:build-number -DbuildNumber=1.0.0
说明:
通过添加build版本号”-buildX”来修改当前分支中的pom版本号,其中“X”是通过参数传入的用来保证CI任务中每次构建的版本号是唯一的并且是非SNAPSHOT。
本文参考:jgit-flow 插件