Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git和maven以及发布和合并_Git_Maven - Fatal编程技术网

git和maven以及发布和合并

git和maven以及发布和合并,git,maven,Git,Maven,Maven发行版插件如下所示: 更改pom文件中的版本 承诺 做标签 再次更改pom文件中的版本 承诺 (然后它签出标记并构建发行版) 因此,发生这种情况的分支中的任何合并都将拉取新的(可能是不希望的)版本。当然,现在有了cherry pick,但是手动识别所有上游更改(版本更改除外)的提交列表非常烦人。有人有别的选择吗?(除了总是从没有人视为“上游”的分支释放之外?)不幸的是,在使用GIT时,这是不可能的,因为标记只是指向特定提交的指针。因此,如果您想在标记的POM中拥有正确的版本号,您必须首

Maven发行版插件如下所示:

  • 更改pom文件中的版本
  • 承诺
  • 做标签
  • 再次更改pom文件中的版本
  • 承诺
  • (然后它签出标记并构建发行版)


    因此,发生这种情况的分支中的任何合并都将拉取新的(可能是不希望的)版本。当然,现在有了cherry pick,但是手动识别所有上游更改(版本更改除外)的提交列表非常烦人。有人有别的选择吗?(除了总是从没有人视为“上游”的分支释放之外?)

    不幸的是,在使用GIT时,这是不可能的,因为标记只是指向特定提交的指针。因此,如果您想在标记的POM中拥有正确的版本号,您必须首先修改并提交它们。 maven发布插件中有一个名为
    suppressCommitBeforeTag
    的选项,可以避免提交修改过的POM。然而,这只在SCM(如Subversion)中起作用。如果在GIT环境中启用此选项,则标记的POM将包含您试图发布的快照版本

    因此,如果您不想在主分支上进行中间POM修改,从单独分支发布是唯一的选择。

    您可以使用发布插件的localCheckout和pushChanges选项:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
            <localCheckout>true</localCheckout>
            <pushChanges>false</pushChanges>
        </configuration>
    </plugin>
    
    
    org.apache.maven.plugins
    maven发布插件
    真的
    假的
    

    这样,您就可以在本地完成整个发布,并在最后进行最后一次手动推送。

    我很困惑,您什么时候会想这样做?您需要有3种存储库状态:1)在开始发布之前,X.Y-SNAPSHOT;2) 在释放状态下,X.Y;3) 准备再次开始开发,X.Y+1-SNAPSHOT。我猜你希望#2只存在于一个分支中,那么#3可能在下一个“真正的”变化之前不会被推出?我想,你可以用一个互动的重基压扁它。。。