我是AWS CodeCommit中的新成員,我想在每次推送遠程存儲庫後在我的電子郵件中獲得git diff。推動AWS CodeCommit後的Git diff
我已經設置觸發器接收通過SNS推送電子郵件,但是有沒有可能使用lambda函數從上次提交得到純粹的git diff?
我是AWS CodeCommit中的新成員,我想在每次推送遠程存儲庫後在我的電子郵件中獲得git diff。推動AWS CodeCommit後的Git diff
我已經設置觸發器接收通過SNS推送電子郵件,但是有沒有可能使用lambda函數從上次提交得到純粹的git diff?
git
與Lambda函數。最簡單的方法可能是使用this library,但這需要您在NodeJS中編寫函數。如果您想使用Python等其他語言,您可以從該NodeJS庫下載git tar文件,並將其用於Python函數中。git diff
以獲取該提交的差異。如果您將Lambda函數配置爲使用CodeCommit作爲觸發器,您將在您的Lambda event
中獲得提交ID。
使用提交ID,然後可以使用aws-sdk
的getCommit()
和/或甚至getDifferences()
檢索該提交的差異並將其發送到AWS SES。
拉姆達的功能,但如果你使用getDifferences()是你不會響應某些信息是不一樣的git的差異得到JSON? – user821738
@ user821738你是什麼意思?你可以發表你正在用'getCommit()'和'getDifferences()'獲得什麼嗎? – dashmug
所以我沒有測試過這個工作流程,但我懷疑你可以讓它爲你的用例工作。
步驟:
配置一個CodeCommit觸發你的資料庫通知lambda函數。這個有效負載將包含每次推送時分支尖端的新提交ID。
在您的lambda函數中,使用CodeCommit的GetCommit API來獲取您希望與之區分的父承諾ID的列表。除非提交是合併,否則應該只有一個父代。
對於每個父提交,使用CodeCommit的GetDifferences API來獲取其中添加,修改或刪除每個文件的列表。
對於每一組已更改的文件,請使用CodeCommit的GetBlob API將文件的內容作爲Base64編碼的字符串返回。將這些字符串傳遞給diff庫以將diff顯示爲HTML。我懷疑像viranch/Diffy可以工作(雖然我還沒有嘗試過自己)。
一旦你有HTML差異有效載荷,將它們發送到SNS或SES發送電子郵件。
謝謝,我會努力做到實現與Node.js的 – user821738