簡體   English   中英

如何獲得GitHub推送的電子郵件差異?

[英]How to get email diffs for GitHub pushes?

有人提出了一個很好的方法來獲取電子郵件,當提交被推送到你的GitHub倉庫 - 包括文件差異改變?

(我知道他們有一個電子郵件服務掛鈎 - 但不包括差異)

如果使用可在Gmail中查看的內聯CSS對差異進行着色,則可獲得巨額獎勵積分。

我寫了一個小的WebHook,它正好填補了這個空白: gitdub 它利用git-notifier為每次提交發送一封電子郵件。

你是對的,GitHub電子郵件服務鈎子不包括diff:這是一個功能請求

J-16 SDIZ也是對的, git-hook-update-notify-email只能在本地執行,而不能在GitHub端執行。

這並不意味着所說的腳本無法幫助:這個想法將是

  • 在你身邊設置一個裸倉庫,克隆GitHub倉庫
  • 設置該基礎倉庫的克隆
  • 有一個cron作業(或Windows任務)每10分鍾獲取一次GitHub倉庫
  • 立即推送到當地的非裸倉庫

在本地非裸倉庫中,您可以:

  • 使用預接收掛鈎( 如Git書中所述 ,可用於計算old-revnew-rev之間的差異)
  • 或使用前面提到的git-hook-update-notify-email

在這兩種情況下,這意味着在本地設置這種服務,這是不理想的。

可能不是你的理想答案,但如果你在自己的服務器上設置gitolite ,你可以設置git-commit-notifer ,獲得漂亮的彩色差異電子郵件,並擁有無限的git帳戶,因為你擁有服務器。 我這樣做了,我從未回頭。

沒有服務器? 您可以獲得一個微型Amazon EC2實例,價格便宜(每月15美元)。 我們有多達12個開發人員和10個git repos,它們在微型實例上運行良好。

這樣做的方法是添加一個通知掛鈎腳本,該腳本將數據發布到您的系統,每個提交都已推送到github。

例如:有效負載由每個應用的提交組成,每個提交都有一個id:

{
  :before     => before,

  :after      => after,

  :ref        => ref,

  :commits    => [{

    :id        => commit.id, <--- here
[...]

第二步是讓你的腳本使用github API觸發對github的調用,該調用獲取有效負載中包含的每個提交。 響應包括每個文件的差異,然后您可以通過電子郵件發送給開發人員。

例如: http//developer.github.com/v3/repos/commits/#get-a-single-commit

GET /repos/:owner/:repo/commits/:sha

:sha是您獲取代碼的提交的ID,響應如下所示:

[...]

 "files": [

    {
      "filename": "file1.txt",
      "additions": 10,
      "deletions": 2,
      "changes": 12,
      "status": "modified",
      "raw_url": "https://github.com/octocat/Hello-World/raw/7ca483543807a51b6079e54ac4cc392bc29ae284/file1.txt",
      "blob_url": "https://github.com/octocat/Hello-World/blob/7ca483543807a51b6079e54ac4cc392bc29ae284/file1.txt",
      "patch": "@@ -29,7 +29,7 @@\n....." <---- HERE
    } 
[...]

希望這可以幫助。 請詢問您是否需要有關如何操作的更多詳細信息。

暫無
暫無

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

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