在将主分支合并到一个分支时,是否有避免pom.xml
版本标签冲突的方法?我有相当多的pom文件(80个),它们都有相同的版本,但与主分支中的版本不同。仅为版本标签执行80次git mergetool
非常费力和耗时。
在将主分支合并到一个分支时,是否有避免pom.xml
版本标签冲突的方法?我有相当多的pom文件(80个),它们都有相同的版本,但与主分支中的版本不同。仅为版本标签执行80次git mergetool
非常费力和耗时。
我总是使用Maven版本插件在从另一个分支合并(带有不同版本)之前更改模块的版本:
mvn versions:set -DnewVersion=1.1 -DgenerateBackupPoms=false
这将更改所有当前模块(父级和子级)的版本为您指定的newVersion参数。更改版本后,进行新提交(git commit ...),然后执行合并操作。我已经使用Jenkins任务自动化了所有这些操作,但在其他方式(例如sh脚本)中实现它也不难。
你还可以使用自定义的合并驱动程序,例如pom-merge-driver。
根据您的工作流程,您可能希望将pom作为普通文件合并,但对项目版本进行不同处理:始终采用合并分支版本,或在合并到develop分支时做出例外...
看一下resolve-maven-version-conflicts.pl
。它是一个专门解决pom冲突的合并工具。它会忽略双方都是-SNAPSHOT
版本的任何更改,但会将其他冲突保留以供进一步解决。
git checkout develop
pom.xml中的develop版本仍为3.10.0-SNAPSHOT
git合并mybranch
所有的pom.xml都有冲突,最终可能会有其他文件也存在冲突。
获取所有的pom.xml
文件(假设只有版本存在冲突)
find -name pom.xml -not -path "**/target*" -exec git co --theirs {} +
在运行查找命令之前,我需要解决一些其他的冲突,例如新分支中已删除的子项目。
之后,所有的pom.xml都是新版本,并且编译没有任何问题。
既然你所有的版本都相同,那么通配符匹配pom.xml不应该很简单吗?
git checkout --ours *pom.xml