如何使用Github API获取目录中的最新提交?
我一直在做的是获取所有文件的目录内容,然后我一直在请求每个文件的提交。
我想做的是映射所有文件的提交哈希。然后,如果其中一些相同,我可以“保存”一些对Github的API调用。
这可能吗?或者还有其他方法吗?
答案 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
您将不得不采取与初始填充数据时几乎相同的操作,但是您将需要避免重复处理已经拥有的哈希。
此外,如果您使用多个分支,则可能要为每个提交哈希存储分支,但这将是此方法的第二种版本。