如何使用GitHub的API从diff或补丁创建提交?

时间:2017-05-03 20:32:35

标签: git github github-api

给定.patch文件(或任何类型的差异,但是它存储了),是否可以将其应用于给定分支上的存储库仅使用GitHub的API

我见过Update file API endpoint。但它只支持一次更新一个文件,创建与文件一样多的提交,因此不是一个好的解决方案。

我也看过Create commit endpoint,但我真的不明白我是如何创建提交内容的。我想知道我是否应该上传补丁as a blob first,但我不确定它是如何运作的......

为什么?

不使用git的原因是我想避免克隆存储库,甚至将存储库放在磁盘上。

我正在构建一个SaaS应用程序,如果有任何方法可以避免在磁盘上存储第三方代码,即使只是一分钟,我也会喜欢它,因为它更安全。

将通过下载the archived version of the repository并在目录中运行工具来生成差异。对于该步骤,我将不得不下载代码,但至少我不下载整个历史记录。生成.patch文件后,该目录将被删除。

如果还有其他方式,我也会对此持开放态度。

1 个答案:

答案 0 :(得分:0)

我不认为GitHub提供了任何API,可以让您提供补丁程序数据并自动构建提交。但是,如果您确实致力于此,则可以解析补丁文件,从GitHub的API请求每个更改路径的原始内容(例如,使用manual page),在内存中应用补丁,然后{{ 3}},其中包含更新的内容。为所有更改的文件更新Blob之后,您可以getContents API在正确的位置包含所有新Blob,然后create a new blob引用树。

这是假设补丁可以干净地应用。如果您想正确处理冲突,最好的选择是使用完整的本地结帐。