如何从github API中重命名的文件中获取原始文件?

时间:2014-09-05 01:21:59

标签: git github-api

https://api.github.com/repos/shamoons/testrepo/commits/10c71ca13d09fa4a2009888cca9d8433c6eac188为例,我们看到现在存在一个名为renamedfile.js的文件。我的问题是..如何确定此文件之前的内容?

如果我查看parent commit,我可以看到之前是newfile.js。但是,如果该提交编辑/添加了许多文件呢?我怎么能说出来?

2 个答案:

答案 0 :(得分:1)

没有直接的方法可以做到这一点,但你可以通过以下方式可靠地完成它:

  1. 获取“重命名”提交("rename" commit's tree URL
  2. 的树
  3. 获取“重命名”文件的哈希值(11096a58b82b44aab2fda131badf668ea9272783)
  4. 获取“重命名”提交("rename" commit's parent URL
  5. 的父母
  6. 在“重命名”提交的父提交或其中的树之一中查找与“重命名”文件具有相同哈希值的文件。这是原始文件。

答案 1 :(得分:0)

现在有一个GitHub API中指定的字段。 如果查看提供的API调用,则会有一个字段名称previous_filename

"files": [
  {
    "sha": "11096a58b82b44aab2fda131badf668ea9272783",
    "filename": "renamedfile.js",
    "status": "renamed",
    "additions": 0,
    "deletions": 0,
    "changes": 0,
    "blob_url": "https://github.com/shamoons/testrepo/blob/10c71ca13d09fa4a2009888cca9d8433c6eac188/renamedfile.js",
    "raw_url": "https://github.com/shamoons/testrepo/raw/10c71ca13d09fa4a2009888cca9d8433c6eac188/renamedfile.js",
    "contents_url": "https://api.github.com/repos/shamoons/testrepo/contents/renamedfile.js?ref=10c71ca13d09fa4a2009888cca9d8433c6eac188",
    "previous_filename": "newfile.js"
  }
]

(我知道这是一个老问题,但我想为什么不添加真正的答案,以防任何人来这里看看)