从github Api获取整个目录的文件提交哈希

时间:2018-07-29 12:13:16

标签: github github-api

如何使用Github API获取目录中的最新提交?

我一直在做的是获取所有文件的目录内容,然后我一直在请求每个文件的提交。

我想做的是映射所有文件的提交哈希。然后,如果其中一些相同,我可以“保存”一些对Github的API调用。

这可能吗?或者还有其他方法吗?

1 个答案:

答案 0 :(得分:-1)

您可以轻松实现这一目标,但我建议您为此目的使用数据库。我建议您使用以下数据库表来存储数据:

  

文件(id,文件路径,lasthash_id)

     

哈希(id,哈希)

     

files_of_hash(id,file_id,hash_id)

每个文件记录将代表一个文件,以及该文件最后出现的最后一个哈希ID。哈希将包含每个哈希的记录。 files_of_hash中的每个记录将代表一对文件和一个哈希。这种关系意味着给定文件是在提交中创建,修改或删除的。

现在,如果您运行

git log

您将获得所有哈希,但是您将需要以某种方式解析结果。这样,您将获得初始记录以存储到哈希中。现在,遍历所有哈希并运行

$ git diff-tree --no-commit-id --name-only -r <yourhash>

您将获得文件列表。您将需要遍历结果并检查它们是否存在于文件表中。如果不是,请将其插入文件。无论如何,您都需要将其插入files_of_hash中。完成此迭代后,请更新文件,如果文件不同,则将lasthash_id更改为最新的hash_id。

现在,您将能够获取每个文件和所有哈希的最后一个哈希。

此后,只要您运行

git pull

您将不得不采取与初始填充数据时几乎相同的操作,但是您将需要避免重复处理已经拥有的哈希。

此外,如果您使用多个分支,则可能要为每个提交哈希存储分支,但这将是此方法的第二种版本。