Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从github API的重命名文件中获取原始文件?_Git_Github Api - Fatal编程技术网

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

如何从github API的重命名文件中获取原始文件?,git,github-api,Git,Github Api,例如,我们看到现在存在一个名为renamedfile.js的文件。我的问题是。。如何确定此文件以前是什么 如果我看一下,我可以看到它以前是newfile.js。但是,如果提交时编辑/添加了许多文件,该怎么办?我该如何判断呢?没有直接的方法可以做到这一点,但您可以通过以下方法可靠地完成这一点: 获取“重命名”提交()的树 获取“重命名”文件(11096a58b82b44aab2fda131badf668ea9272783)的哈希值 获取“重命名”提交()的父级 在“重命名”提交的父提交之一或相同的

例如,我们看到现在存在一个名为
renamedfile.js
的文件。我的问题是。。如何确定此文件以前是什么


如果我看一下,我可以看到它以前是
newfile.js
。但是,如果提交时编辑/添加了许多文件,该怎么办?我该如何判断呢?

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

  • 获取“重命名”提交()的树
  • 获取“重命名”文件(11096a58b82b44aab2fda131badf668ea9272783)的哈希值
  • 获取“重命名”提交()的父级
  • 在“重命名”提交的父提交之一或相同的树中,查找哈希值与“重命名”文件相同的文件。这是原始文件

  • 现在,GitHub API中指定了一个字段。 如果您查看提供的API调用,则会看到一个字段名
    previous\u 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"
      }
    ]
    

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

    您也可以写信给。缺少“old_filename”属性,在这种情况下会更好。散列是文件本身的SHA1还是其他一些散列?这是可行的,但是文件列表在没有分页的情况下限制为300,因此任何超过“file 301”的内容都不会出现在任何地方。