マージの競合をプログラムで解決しようとしています。つまり、マージを強制します。リポジトリの状態JGitでのマージ
org.eclipse.jgit.api.errors.WrongRepositoryStateException:マージ:状態でリポジトリにコミットすることはできません私は、以下の例外を取得コミットしようとした場合、マージの競合を解決した後 。
リポジトリステータスを変更するにはどうすればよいですか、何か不足していますか? コードスニペット:
MergeCommand
if((RepositoryState.SAFE == pullCommand.getRepository().getRepositoryState())) {
PullResult result = pullCommand.call();
if(MergeStatus.CONFLICTING == result.getMergeResult().getMergeStatus()){
mgCmd = git.merge();
mgCmd.include(repo.getRef("refs/remotes/origin/development"));
mgCmd.setStrategy(MergeStrategy.OURS);
mgCmd.setCommit(true);
res = mgCmd.call();
System.out.println("Failing Path ==="+res.getFailingPaths());
pullCommand.getRepository().resolve("C:\\CODE\\thin\\thinclient\\.git");
if(res.getMergeStatus().equals(MergeResult.MergeStatus.CONFLICTING)){
System.out.println("Merge status=========+++"+res.getMergeStatus());
}
ありがとう しかし、私は手動でローカル作業ディレクトリのファイルを変更する必要があることを意味しますか。 マージの競合がある場合は、ファイルのローカル変更のみを行います。そして私はこれをプログラム的に達成しようとしています。私はちょうどjgit apiを探索し始めました。ありがとうございます – Jenitta
あなたのユースケースではMergeStrategy 'ÜURS'が十分であれば、その戦略を使用するようPullCommandに伝える必要があります(' 'pullCommand.setStrategy(OURS)')。それを試してみますか? –
こんにちは、私はpullCommand.setStrategy(OURS)を試しました。それは期待どおりに働いています。 – Jenitta