2014-09-05 112 views
1

https://api.github.com/repos/shamoons/testrepo/commits/10c71ca13d09fa4a2009888cca9d8433c6eac188爲例,我們看到現在存在一個名爲renamedfile.js的文件。我的問題是......我怎麼才能確定這個文件是什麼?如何從github API的重命名文件中獲取原始文件?

如果我看看parent commit,我可以看到它之前是newfile.js。但是,如果該提交有許多文件被編輯/添加了怎麼辦?我將如何能夠告訴?

+0

你也可以寫信給[GitHub的支持](https://github.com/contact)。缺少「old_filename」屬性,在這種情況下會很好。 – musiKk 2014-09-05 07:10:00

回答

1

沒有直接的方式做到這一點,但你可以用下面的可靠的完成它:

  1. 獲取的「重命名」樹提交("rename" commit's tree URL
  2. 獲取的散列在「重命名」文件(11096a58b82b44aab2fda131badf668ea9272783)
  3. 獲取的「重命名」提交("rename" commit's parent URL
  4. 的「重命名」一中查找具有相同散列作爲你的「改名爲」文件的文件提交的父提交父母,或者相同的樹木。這是原始文件。
+0

散列是文件本身的SHA1還是其他一些哈希? – Shamoon 2014-09-05 11:41:32

+0

文件本身的沙 – 2014-09-06 02:06:40

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" 
    } 
] 

(我知道這是一個老問題,但我想,爲什麼不增加的情況下,任何人真正的答案來尋找在這裏)

相關問題