2012-02-12 90 views
2

我在遠程服務器上有一個git存儲庫。當我的用戶對這個遠程服務器執行「git push」時,我想根據它的大小限制推送。讓我們說,如果推送的大小超過100MB,推送應該停止。是否可以根據其大小限制git推送?

我正在嘗試使用遠程git存儲庫上的預接收鉤來執行此操作。

在stackoverflow.com中有一些解決方案。我試過了。但是,他們都不在遠程存儲庫中工作。

任何人都可以幫忙嗎?

+0

我想一個有趣的問題是你爲什麼需要這樣做? – 2012-02-12 17:02:51

+0

檢查git遠程存儲庫是否會超過推送的配額限制。 – MDT 2012-02-14 10:14:52

回答

0

你不能這樣做。當預接收和更新掛鉤運行時,包(所有數據)已經被接收。剩下要做的就是更新引用,這就是鉤子允許你放棄的東西。從手冊頁:

在開始更新遠程存儲庫上的引用之前,調用預接收鉤子。

並且有關於更新掛鉤的相同聲明。

即使git receive-pack知道它將接收的所有內容的最終大小,我甚至不確定對於一般傳輸機制。

雖然你真的想解決什麼問題?從耗時的推動中保存用戶? (他們可以自己取消;從用戶的角度來看很明顯)。遠程控制磁盤空間?在大多數情況下,您可能只需限制對可信的用戶的訪問權限,而不要手動處理異常。

如果你絕對必須這樣做,你真的能做到這一點的唯一方法是通過在用戶身上包裝推動,以便他們運行my-push,它以某種方式估計他們即將到來的大小推送,並決定是否實際推送 - 但隨後你又回到了信任用戶,因爲如果他們不使用該包裝,他們可以推動他們想要的。

+0

感謝Jefromi的迴應。我正在嘗試檢查git遠程存儲庫是否會通過推送超出配額限制。 – MDT 2012-02-14 10:30:27

相關問題