2010-09-21 64 views
6

如何確定誰推送到存儲庫?git:誰在推送後接收鉤

I.e.有人做git push origin master,並在origin回購後的接收掛鉤我需要使用Somebody的名稱或電子郵件。

回答

10

如果您使用SSH協議將更改推送到服務器,並且每個用戶都有自己的帳戶在服務器上,那麼您的腳本應該以執行推送的用戶身份運行。因此,您應該可以使用whoamiid -un來獲取推送人員的用戶名。

如果您不使用此設置,跟蹤推薦人的最佳方式可能是使用功能強大的Git身份驗證和授權系統Gitolite。在Gitolite中,您可以使用update.secondary and post-update.secondary hooks,它將環境變量GL_USER設置爲當前的Gitolite用戶。

+0

謝謝。我忘了那些鉤子。 – takeshin 2010-09-22 07:11:46

+0

鉤子的鏈接現在被打破。 – 2011-11-29 08:16:56

+0

@AlexanderGladysh鏈接應該現在修復。 – 2011-11-29 09:12:34

0

我不確定Git是爲了管理那種訪問控制。

這就是爲什麼你有基於ssh的包裝,如gitosisgitolite,這將提供足夠的身份驗證級別。

+0

我已經在使用'gitolite'進行訪問控制。我只需要通知腳本的信息。 – takeshin 2010-09-21 15:57:06

+0

@takeshin ...好吧,如果我知道的話,請看Brian的回答(+1);) – VonC 2010-09-21 16:55:30

0

你不能說使用Git。如果您使用SSH進行推送,那麼您可以使用SSH獲取用戶名,如果您使用用戶管理前端(如gitolite),則可以使用獲取用戶名,如果您使用HTTP進行身份驗證,則可以使用您的網絡服務器獲取用戶名,但Git網絡協議不傳輸任何用戶名。