2017-06-16 8 views
2

私の開発ブランチがv 1.0.1-SNAPSHOT上にあるとしましょう。私のマスターは1.0.0です。 修正プログラムを作成する必要があります。 SourceTreeのGit Flowメニュー(またはその他のツール)を使用して、私はマスターからhotfixブランチを作成し、pomをv 1.0.0.1にアップデートします(mvnのバージョンを使用:set -DnewVersion = 1.0.0.1)。マルチモジュールのmavenプロジェクトのGitフロー修正をマージする最適なツール

Git-Flowを使用して修正プログラムを完成させたら、開発ブランチにマージする必要があります。これは、pomファイルが競合することを意味します。大規模なモジュールツリーを持つマルチモジュールプロジェクトがある場合、すべてのポームを解決する必要があります。両方のブランチで変更された他のファイルも競合します。

このホットフィックスでは、ポムの変更はありませんでしたが、開発ブランチのバージョンを使用するだけで解決できます。

これはすべての修正プログラムで行う必要がありますが、たとえばSourceTreeを使用して、視覚的には、ポムと他の競合するファイルを区別することは困難です。どうやらこれらのファイルを何とか分けて、私が安全に無視してマージできるのは、すでに開発ブランチにあるものを受け入れることができてうれしいことです。

これにはどのような方法がありますか?

+0

「開発」ブランチで働いているのはあなただけですか? –

答えて

0

これはgit flowにとって大きな質問です。

シナリオでは、バージョン外でPomに変更を加えることは言及していませんが、それはホットフィックスの可能性があります。いくつかの本当に素晴らしいgitトリックを除いて、私たちはこれを手で解決します。

私たちのワークフローでは、手動マージの解決を行い、次にmavenを使用して正しいスナップショットのバージョンが設定されていることを確認します。

mvn versions:set -DnewVersion=1.0.1-SNAPSHOT -DgenerateBackupPoms=false 

次にテストを実行し、1日とします。

私は約git rerereを読んでいて、ここで非常に役立つと思います。

名は「リユース記録解像度」の略で、その名が示すとおり、それはあなたが次の時間が、それは同じ競合が、Gitができる見ているように、あなたは塊の競合を解決した方法を覚えておくことにGitを依頼することができます自動的に解決します。 More here

これは私が他の人のソリューションを見て興味を持って、ほとんどのdevのチームのスーパー厄介な問題です!

1

私が知っている最も簡単な解決策は、リテラルの代わりにバージョンのプロパティを使用して、それらをpomファイルに定義することです。これはMaven 3.5.0から利用可能です。

あなたはこのようにそれを行うことができます。今、あなたが経由でそれを構築することができ

<project ...> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
    <groupId>org.apache</groupId> 
    <artifactId>apache</artifactId> 
    <version>18</version> 
    </parent> 
    <groupId>org.apache.maven.ci</groupId> 
    <artifactId>ci-parent</artifactId> 
    <name>First CI Friendly</name> 
    <version>${revision}</version> 
    ... 
</project> 

mvn -Drevision=1.2.0-SNAPSHOT clean package 

しかし、これは改正にあなたがしているコマンドラインからMavenを呼び出すたびに定義することを意味しますちょっと面倒です。だから、.mvn/maven.configファイルには、

-Drevision = 1.2が含まれています。

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
    <groupId>org.apache</groupId> 
    <artifactId>apache</artifactId> 
    <version>18</version> 
    </parent> 
    <groupId>org.apache.maven.ci</groupId> 
    <artifactId>ci-parent</artifactId> 
    <name>First CI Friendly</name> 
    <version>${revision}</version> 
    ... 
    <properties> 
    <revision>1.0.0-SNAPSHOT</revision> 
    </properties> 
</project> 

これは、あなたが唯一のバージョンが定義されている場所ではなく、すべてのモジュール内など

を持っていることを意味:あなたはこのように自分自身をPOMのMavenの中にプロパティを定義することができます0-SNAPSHOT

マルチモジュールの設定は、上記の親の子はこのようになります。どこのようにも動作します:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
    <groupId>org.apache.maven.ci</groupId> 
    <artifactId>ci-parent</artifactId> 
    <version>${revision}</version> 
    </parent> 
    <groupId>org.apache.maven.ci</groupId> 
    <artifactId>ci-child</artifactId> 
    ... 
</project> 

しかし、あなたはを使用する必要があることに注意してくださいdeploy such artifacts to a repositoryが好きな場合や、mvn installとしたい場合は、を入力してください。これは、このように見える必要があります:

あなたのプロジェクトのバージョンが定義されており、それが、これは劇的な問題をマージ減らす必要があり、単一の行を持って、最後に意味
<project> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
    <groupId>org.apache</groupId> 
    <artifactId>apache</artifactId> 
    <version>18</version> 
    </parent> 
    <groupId>org.apache.maven.ci</groupId> 
    <artifactId>ci-parent</artifactId> 
    <name>First CI Friendly</name> 
    <version>${revision}</version> 
    ... 
    <properties> 
    <revision>1.0.0-SNAPSHOT</revision> 
    </properties> 

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>flatten-maven-plugin</artifactId> 
     <version>1.0.0</version> 
     <configuration> 
     <updatePomFile>true</updatePomFile> 
     </configuration> 
     <executions> 
     <execution> 
      <id>flatten</id> 
      <phase>process-resources</phase> 
      <goals> 
      <goal>flatten</goal> 
      </goals> 
     </execution> 
     <execution> 
      <id>flatten.clean</id> 
      <phase>clean</phase> 
      <goals> 
      <goal>clean</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
    </build> 
    <modules> 
    <module>child1</module> 
    .. 
    </modules> 
</project> 

慎重にお読みください。

${revision},${changelist}または${sha1}他のプロパティは現在サポートされていません。

関連する問題