0

リモート リポジトリのクローンを作成していて、複数のブランチをチェックアウトしてそれらと相互運用したい (作業ディレクトリに変更を適用せずに)。

だから私はリポジトリを複製します:

CloneCommand clone = Git.cloneRepository();
clone.setURI(project.getUrl());
clone.setDirectory(new File(RepositoryHandlerHelper
        .getFilePath(project)));
clone.setCredentialsProvider(getCredentials());
clone.setCloneAllBranches(true);

clone.call();

そして、それは機能します。ここで、ローカル ハードドライブにリモート ブランチを作成します (ループ内):

git.branchCreate().setName(currentBranchToBuild)
.setUpstreamMode(SetupUpstreamMode.TRACK)
.call();

これも同様に機能します。ただし、これが必要かどうかはわかりません..その後、各ブランチをチェックアウトしようとします:

git.checkout().setName(currentBranchToBuild).call();

正しいブランチ名が に送信されていると確信していsetName()ます。例外はスローされませんが、コマンドは作業ディレクトリに影響を与えないようです。

ここで何か不足していますか?

4

2 に答える 2

0

実用的な解決策を見つけました:各ブランチのローカルコピーを作成する必要はありません。リモートブランチのチェックアウトを行うだけで機能します。私の問題は何か違うものでした。各ブランチのJavaDocを生成しています(チェックアウトしてからJavaDocを作成します)。しかし、チェックアウトはすぐには有効にならないようです。git.checkout ...とJavaDocを生成するための呼び出しの間にThread.sleep(1000)を置くと、問題なく動作します。

助けてくれてありがとう。

于 2012-10-26T14:56:16.653 に答える