にベアリポジトリがあり、別のリポジトリでmain.git
ブランチ(たとえば、)をフェッチしようとしています。foo
test
git init
fetchtest/
|- main.git/
|- test/
|- .git/
通常のgitコマンドを使用して、を実行できます。git fetch ../main.git foo:foo
これにより、新しいブランチが作成foo
さtest/
れ、ブランチに必要なオブジェクトがフェッチされます。次に、同じことをプログラムでJGitを使用して実行したいと思います。つまり、git CLIを使用せず、Javaコードのみを使用します。gitCLIを使用する方法はありません。
Git git = Git.init().setDirectory(new File("fetchtest/test/")).call();
git.fetch().setRemote(new File("../main.git"))
.setRefSpecs(new RefSpec("foo:foo"))
.call();
しかし、それはただエラーになります:
org.eclipse.jgit.api.errors.TransportException: Remote does not have foo available for fetch.
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:137)
// ......
Caused by: org.eclipse.jgit.errors.TransportException: Remote does not have foo available for fetch.
at org.eclipse.jgit.transport.FetchProcess.expandSingle(FetchProcess.java:349)
at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:139)
at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:113)
at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1069)
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:128)
これを機能させるにはどうすればよいですか?