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

7
给定一个.patch文件(或任何类型的diff,无论它是如何存储的),是否可能仅使用GitHub的API将其应用于给定分支上的存储库?
我看过更新文件 API端点。但它只支持一次更新一个文件,为每个文件创建许多提交,因此不是一个好的解决方案。
我还看到了创建提交端点,但我真的不明白如何创建提交的内容。我在想是否应该先将补丁作为blob上传,但我完全不确定它是如何工作的...
为什么?
不使用git的原因是我想避免克隆存储库,甚至不想在磁盘上拥有存储库。
我正在开发一款SaaS应用程序,如果有任何方法可以避免将第三方代码存储在磁盘上,即使只有一分钟,我也希望如此,因为这样更安全。
差异将通过下载存档版本的存储库并在目录中运行工具来生成。对于这一步,我将不得不下载代码,但至少我不会下载整个历史记录。在生成.patch文件后,目录将被立即删除。
如果有其他方法,我也愿意尝试。

直接进行浅克隆怎么样? - Lasse V. Karlsen
1个回答

0

我不相信GitHub提供任何API可以让您提供补丁数据并自动构建提交。但是,如果您真的致力于此,您可以解析补丁文件,使用GitHub的API请求每个更改路径的原始内容(例如使用getContents API),在内存中应用补丁,并创建一个新的blob以更新内容。一旦您为所有更改的文件更新了blob,您可以创建一个包含所有新blob的正确位置的新树,然后创建一个引用该树的提交

这是假设补丁可以干净地应用。如果您想正确处理冲突,最好的方法可能是使用完整的本地检出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接