2016-04-02 12 views
2

にコンフリクトがあったプロジェクトのJGitですべてのマージシナリオを実行しようとしていますJGitとマージする前に競合を取得するには?

実際のマージの前に競合を取得することは可能ですか?言い換えれば、JGitとのマージをシミュレートすることは可能ですか?

私のゴールは、プロジェクトのすべてのマージシナリオについて、各ファイルの競合する行にアクセスすることです。

+0

私はあなたが新しいことを知っています。回答が問題を解決したと感じる場合は、緑色のチェックマークをクリックして「受け入れ済み」とマークしてください。これにより、まだ回答のない古い投稿に焦点を当てることができます。 –

+0

私は@RüdigerHerrmannを理解していますが、助言に感謝します。私はあなたの答えをまだ見ていない。私はJGitのテストクラスに言及した他のSOの質問で見つけたものと似たものを試しました。この道を行くことで、私が望むものを得ることができたようです。私は自分の質問を編集したので、私は自分の目標から最も近いものを提示する。 –

+0

答えを求める必要がない[質問をする](http://stackoverflow.com/help/how-to-ask)の前に、まず最初に**ソリューションを検索して、時間を無駄にしないようにしてください。あなたの編集は実際には異なる質問です。別の疑問がある場合は、新しい投稿を作成してください。 –

答えて

2

ThreeWayMergerのいずれかを使用して、2つのコミットをマージできるかどうかを判断できます。

デフォルトでは、JGitのMergeCommandは、の再帰的マージ戦略を使用します。したがって、おそらくこの合併を使いたいと思うでしょう。

コアの合併にを作成してください(newMergerの第2パラメータをtrueに設定してください)。このモードでは、合併は作業ディレクトリには触れません。

ThreeWayMerger merger = MergeStrategy.RECURSIVE.newMerger(repository, true); 
boolean canMerge = merger.merge(headCommit, commitToMerge); 

マージ方法は、そうでなければ所与のコミットをマージすることができればtruefalse返します。

ベースコミットは、setBaseで明示的に設定することも、共通の祖先を使用することもできます。

ResolveMergerおよびRecursiveMergerは、どのファイルをマージできないかを照会する方法も提供します。

+0

こんにちは@RüdigerHerrmann、どうすれば 'headCommit'を見つけることができますか? –

+0

refのコミットIDは、 'repository.resolve(" HEAD ")'のように 'Repository'の' resolve'メソッドで解決できます。 –

関連する問題