如何使用礼品库获取git提交文件的内容?

时间:2014-11-21 18:24:45

标签: node.js git gift

我正在使用https://github.com/notatestuser/gift库,这就是我所拥有的:

gitCommit.tree().contents (err, gitTreeContents) ->
  console.log gitTreeContents

这给了我树的内容,这是一个包含如下对象的数组:

{ repo: 
   { path: '/mygitrepo',
     bare: false,
     dot_git: '/mygitrepo/.git',
     git: 
      { [Function]
        cmd: [Function],
        streamCmd: [Function],
        list_remotes: [Function],
        refs: [Function] } },
  id: 'ed38d79b10503a4e7e68910f37f387f24dedd5fa',
  name: 'address.js',
  mode: '100644' }

所以有两个问题。首先,id指的是什么?这不是一个承诺,所以我认为它是一个树木?其次,我怎样才能看到该文件在那个时间点的样子?

由于

1 个答案:

答案 0 :(得分:1)

  1. 是的,它是一个树形ID,它是给定文件系统对象的sha-1,如果是普通文件,则是其内容的sha-1。
  2. 要在给定的时间点获取对象,您应该首先选择适当的提交。请注意,在项目中,由于可能存在分支,在给定时间可能会有一个具有给定名称的文件的多个提交。因此,您应该选择一个分支,然后在那时查询该分支状态。再一次可能会有多个提交,因为分支中可能有合并。
  3. gift是命令行git的简单包装器。在命令行git中,您应该运行如下命令:git cat-file blob <commit-sha-1>:</path/to/file>。看看它似乎http://github.com/notatestuser/gift/blob/master/src/blob.coffee,它完全符合你的需要。