2012-04-25 191 views
7

我通过Google,论坛和JGit用户指南进行搜索,但无法找到如何使用API​​连接到远程存储库。 任何人都有一个例子或只是一个想法如何做到这一点?JGit:连接到远程存储库

感谢您的帮助。

回答

5

目前,JGit 2.0.0快照复制只提供

org.eclipse.jgit.storage.file.FileRepository 
org.eclipse.jgit.storage.dfs.InMemoryRepository 

具体Repository类,这意味着自org.eclipse.jgit.api.Git需要Repository,这是不可能的远程工作。由于Git本身并不是按照我认为你的意思进行远程操作,我怀疑我们很快就会看到这样的功能。

更多介绍:

因此,您需要在本地克隆。你这样做,通过发出

Git.cloneRepository() 
     .setURI(myRemoteURIString) 
     .setDirectory(new File(myLocalPathString)) 
     .call(); 

然而,对于Git的一致性的考虑,您应该只克隆一个纯仓库,在一个偏远的位置,这样的非纯仓库,而不是技术上的,几乎是人迹罕至。

+0

嗨,谢谢你的回答卢卡。所以最好的方法是使用CloneCommand clone = Git.cloneRepository()来获取项目ID的最后一个版本,以将其克隆到新的本地目录中;“我是对的吗?部分地为 – Brice 2012-04-25 15:32:21

+0

。正如我上面所说的,如果你在某个地方有一个非裸仓库,那么对它进行处理实际上是不可行的,因为你不应该克隆它。 – 2012-04-25 15:40:41

0

我不确定我是否理解这个问题,因为Git是用来访问其他存储库的,这就是“Git is distributed”的含义。

如果你想连接到一个遥远的仓库,那么你应该克隆它。

我不知道这是你在找什么,但你也可以使用多个遥控器。使用Git使用git remote add <remote_name> <remote_uri>来添加一个。至于Jgit,不幸的是我不记得简单的代码,但你可以弄清楚。

至少可以通过修改配置,从存储库对象调用getConfig(),然后调用setString(...) - 不要忘记最后保存配置。但在修改配置之前,我认为你应该先了解更多关于Git和JGit的知识。

我建议您阅读更多关于它的信息,并与您的存储库一起玩。看看这篇文章:http://caiustheory.com/adding-a-remote-to-existing-git-repo。 另一个将帮助你的道路是How do I do the equivalent of “git remote update” with jgit?

也许别人知道究竟哪些命令运行,可以帮助。