在Android上的Jgit克隆

时间:2012-02-24 20:34:47

标签: android clone jgit

我创建了测试Android应用程序。在app我调用克隆操作使用jgit,我得到错误:

Caused by: org.eclipse.jgit.errors.MissingObjectException: Missing unknown e69de29
org.eclipse.jgit.storage.file.WindowCursor.open(WindowCursor.java:125)
org.eclipse.jgit.lib.ObjectReader.open(ObjectReader.java:228)
org.eclipse.jgit.dircache.DirCacheCheckout.checkoutEntry(DirCacheCheckout.java:926)
org.eclipse.jgit.dircache.DirCacheCheckout.doCheckout(DirCacheCheckout.java:444)
org.eclipse.jgit.dircache.DirCacheCheckout.checkout(DirCacheCheckout.java:378)
org.eclipse.jgit.api.CloneCommand.checkout(CloneCommand.java:224)
org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:121)

但是在agit中,这个操作没有错误地执行。我学习了agit的代码,但不明白为什么会这样。

告诉我,我做错了什么?

我的代码:

   Git.cloneRepository()
    .setBare(false)
    .setDirectory(dir)
    .setCloneAllBranches(false)
    .setRemote("origin")
    .setURI(uri)
.call();

1 个答案:

答案 0 :(得分:0)

您可能想尝试在call()之前添加setNoCheckout(true)。结账时出错。然后,您可以使用单独的命令签出。

对于您的问题,可能没有设置分支。例如,查看yourdir / .git /.../ branches /,或者在克隆之后,尝试查找当前分支。也许它没有定义。文件yourdir / .git / HEAD也很有趣。