簡體   English   中英

如何使用 GitHub 的 API 從差異或補丁創建提交?

[英]How to create a commit from a diff or patch using GitHub's API?

給定一個.patch文件(或任何類型的差異,無論它是如何存儲的),是否可以僅使用 GitHub 的 API將其應用到給定分支上的存儲庫?

我見過Update file API 端點 但它一次只支持更新一個文件,創建與文件數量一樣多的提交,所以不是一個好的解決方案。

我還看到了Create commit endpoint ,但我真的不明白我是如何創建提交內容的。 我想知道我是否應該先將補丁作為 blob上傳,但我完全不確定它是如何工作的......

為什么?

不使用 git 的原因是我想避免克隆存儲庫,甚至將存儲庫放在磁盤上。

我正在構建一個 SaaS 應用程序,如果有任何方法可以避免將第 3 方的代碼存儲在磁盤上,即使只有一分鍾,我也希望這樣做,因為它更安全。

差異將通過下載存儲庫的存檔版本並在目錄中運行工具來生成。 對於那一步,我將不得不下載代碼,但至少我不會下載整個歷史記錄。 該目錄將在生成.patch文件后立即刪除。

如果有任何其他方式,我也對此持開放態度。

我不相信 GitHub 提供任何 API 可以讓您提供補丁數據並自動構建提交。 但是,如果您真的致力於此,您可以解析補丁文件,從 GitHub 的 API 請求每個更改路徑的原始內容(例如使用getContents API ),在內存中應用補丁,並創建一個新的 blob更新的內容。 為所有更改的文件更新 blob 后,您可以創建一個新樹,將所有新 blob 包含在正確的位置,然后創建一個引用該樹的提交

這是假設補丁應用干凈。 如果您想正確處理沖突,最好的辦法可能是使用完整的本地結帳。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM