Можно ли ограничить толчок git в зависимости от его размера? - PullRequest
2 голосов
/ 12 февраля 2012

У меня есть git-репозиторий на удаленном сервере.Когда мои пользователи делают «git push» на этом удаленном сервере, я хочу ограничить push на основе его размера.Допустим, если размер push превышает 100 МБ, push должен быть остановлен.

Я пытаюсь сделать это с помощью перехвата предварительного получения в удаленном хранилище git.

Есть вопросы, связанные с некоторыми решениями в stackoverflow.com.Я попробовал их.Но все они не работают из удаленного репозитория.

Может кто-нибудь помочь с этим?

1 Ответ

0 голосов
/ 12 февраля 2012

Вы не можете сделать это.К тому времени, когда выполняются перехваты предварительного получения и обновления, пакет (все данные) уже получен.Все, что осталось сделать, это обновить ссылки, и это то, что ловушка позволяет вам прервать.Из man-страницы:

Непосредственно перед началом обновления ссылок в удаленном репозитории вызывается ловушка предварительного получения.

И есть аналогичное утверждение о ловушке обновления.

Я даже не уверен, что для общего транспортного механизма даже git receive-pack знает окончательный размер всего, что он получит.

Какую проблему вы на самом деле пытаетесь решить, хоть?Спасать пользователей от трудоемких толчков?(Они могут отменить их сами; это очевидно со стороны пользователя.) Держать место на диске под контролем на пульте?В большинстве случаев вы, вероятно, можете просто ограничить доступ пользователям, которым вы можете доверять, чтобы не испортить это, и обращаться с исключениями вручную.

Если вам абсолютно необходимо сделать это, единственный способ, которым вы действительно сможетесделать это, обернув push на стороне пользователя, чтобы они запустили my-push, который каким-то образом оценивает размер того, что они собираются нажать, и решает, действительно ли push - но тогда вы вернетесь к доверяющим пользователям,поскольку, если они не используют эту обертку, они могут нажать то, что им нравится.

...