使用JGit从Assembla中提取更新

时间:2014-03-23 20:27:53

标签: git fetch jgit

我无法弄清楚如何让MergeCommand使用JGit。我在Assembla上托管了我的回购。在本地文件夹cal Git上,我有一个repo的副本。我可以从这个回购推动集合。在另一个名为Git6的文件夹中,我有一个远程仓库的克隆。

我想要做的是对Git repo做一些更改,推送到assembla,并在Git6上用jgit提取这些更改。

到目前为止,我可以连接到assembla,我可以结账,我可以获取。我的挑战是合并和拉动。拉一直告诉我“没有指定合并头”。为了解决这个问题,我决定采取并合并。我可以看到fetch正在按预期工作。实际上,我可以通过命令行获取代码和git merge origin/sit以获得预期的结果。

问题是,如何通过JGit git merge origin/sit进行操作?

以下是我与jgit合并后得到的结果:

Merge of revisions 9014971ef8cb9261e8a4816b067ecf82fdb7bcd2, 9014971ef8cb9261e8a4816b067ecf82fdb7bcd2 with base 9014971ef8cb9261e8a4816b067ecf82fdb7bcd2 using strategy recursive resulted in: Already-up-to-date. 

我的提取和合并代码段是:

Git git = Git.open(f);
StoredConfig config = git.getRepository().getConfig();
config.setString("remote", "sit", "url",remoteRepoURL);
config.save();

git.checkout().setName("sit").setForce(true).call();
RefSpec spec = new RefSpec("+refs/heads/sit:refs/remotes/origin/sit");
git.fetch().setCredentialsProvider(provider).setRemote("sit").setRefSpecs(spec).call();
MergeResult r= git.merge().include(git.getRepository().getRef("sit")).setStrategy(MergeStrategy.RECURSIVE).call();

我怀疑RefSpec或包含有问题。但我无法弄明白。我试图拉的分支称为坐在所有回购。

1 个答案:

答案 0 :(得分:1)

解决。我不必在合并中调用getRef(“sit”),而是调用getRef(“remotes / origin / sit”)。