当前位置: 首页 > 面试题库 >

JGit和找到负责人

易镜
2023-03-14
问题内容

我正在尝试使用JGit进行HEAD提交:

val builder = new FileRepositoryBuilder()
val repo = builder.setGitDir(new File("/www/test-repo"))
  .readEnvironment()
  .findGitDir()
  .build()

val walk: RevWalk = new RevWalk(repo, 100)

val head: ObjectId = repo.resolve(Constants.HEAD)
val headCommit: RevCommit = walk.parseCommit(head)

我发现它可以打开存储库,但head值设置为null。我不知道为什么找不到HEAD?

我正在阅读此文档:http :
//wiki.eclipse.org/JGit/User_Guide

该存储库的构建就像doc所说的RevWalk一样。我使用的是最新版本的JGit的是2.0.0.201206130900-r从http://download.eclipse.org/jgit/maven。

我的问题:我需要更改我的代码以使JGit返回实际实例RevCommit而不是null现在的实例吗?

更新: 此代码:

val git = new Git(repo)
val logs: Iterable[RevCommit] = git.log().call().asInstanceOf[Iterable[RevCommit]]

给我这个例外: No HEAD exists and no explicit starting revision was specified

异常很奇怪,因为一个简单的git rev-parse HEAD告诉我0b0e8bf2cae9201f30833d93cc248986276a4d75,这意味着存储库中有一个HEAD。我尝试了不同的存储库,无论是我的存储库还是其他人的存储库。


问题答案:

/www/test-repo/.git调用时setGitDir,您需要指向Git元数据目录(可能是),而不是工作目录(/www/test- repo)。

我必须承认我不确定findGitDir应该怎么做,但是在指定.git目录起作用之前,我已经遇到了这个问题。



 类似资料:
  • 到目前为止我们已经介绍了一堆Vim命令,这可以让你可以快速自定义Vim。除了自动命令组外其他的命令都是单行的命令,你可以不费吹灰之力就把它们添加到你的~/.vimrc文件中。 这本书的下一部分我们会开始专注于Vim脚本编程,将其当作一个真正的编程语言对待,不过在此之前,我会先讲一些在编写大量的Vim脚本时需要注意的东西。 注释 Vim脚本非常强大,但对于那些想进入这个领域的程序员而言,在最近几年它

  • 进入考勤打卡-设置-我是团队管理员-点击考勤负责人查看该负责人管理的考勤区域详情-点击“删除该考勤负责人”进行删除

  • 进入考勤打卡-设置-我是团队管理员-添加考勤负责人-选择要设置的成员-完成

  • 问题内容: 在课堂上,我们现在学习如何构建Spring应用程序,即使没有直接涉及spring,我们也学习了如何为DAO和服务层对象创建接口。 如果我错了,请纠正我:DAO层是非常抽象的:它仅包含CRUD操作,并进一步用于读取数据(即:获取所有对象,获取特定对象等) 服务层:包含用于创建事物和删除事物的服务,这是业务逻辑应该存在的地方。 现在,所有这些对于服务层来说都是有意义的。除了“更新”对象。你

  • 我使用Jersey和嵌入式Tomcat开发了REST服务器。 当我的客户端使用Jersey向我的服务器发送请求并添加其值为UTF-8编码的请求参数时,我会收到服务器端解码的参数。 我的问题是,谁负责解码这个参数?是雄猫吗?球衣<我可以禁用此功能吗?

  • 就异步编程而言,这可能是一个非常基本的问题,但我试图阅读它,但找不到任何相同的资源。 假设:我对异步编程有一个大致的想法: 当我们开始阻塞操作(网络调用,从DB/文件中读取)时,我们可以将其委托给内核线程,这将使我们的应用程序线程保持空闲,以执行其他任务。内核线程等待作业完成,并在作业完成时向应用程序线程提供回调。 科鲁蒂斯:过去几天我一直在读关于科特林·科鲁蒂斯的书。不过,我认为概念wise c