Mat*_*oli 5 git github github-api
给定一个.patch文件(或任何形式的diff,但是存储了),是否可以仅使用GitHub的API将其应用于给定分支上的存储库?
我看过Update fileAPI端点。但是它仅支持一次更新一个文件,创建的提交数量与文件数量一样多,因此不是一个好的解决方案。
我也看到了Create commit端点,但是我不太了解如何创建提交的内容。我想知道我是否不应该首先将补丁作为blob上传,但是我完全不确定它是如何工作的……
不使用git的原因是我想避免克隆存储库,甚至避免将存储库放在磁盘上。
我正在构建一个SaaS应用程序,如果有什么方法可以避免将第三方的代码存储在磁盘上,即使只是一分钟,我也希望这样做,因为它更加安全。
差异将通过下载存储库的归档版本并在目录中运行工具来生成。对于这一步,我将必须下载代码,但至少我不会下载全部历史记录。.patch生成文件后立即删除目录。
如果还有其他方法,我也愿意接受。
我不相信 GitHub 提供任何 API 可以让您提供补丁数据并自动构建提交。但是,如果您真的致力于此,您可以解析补丁文件,从 GitHub 的 API 请求每个更改路径的原始内容(例如使用 API getContents),在内存中应用补丁,并使用以下内容创建一个新的 blob更新内容。更新所有已更改文件的 Blob 后,您可以创建一个新树,其中包含正确位置中的所有新 Blob,然后创建引用该树的提交。
这是假设补丁应用干净。如果您想正确处理冲突,最好的选择可能是使用完整的本地结账。