Хук предварительного приема GIT

Есть ли способ изменить файл, который отправляется на сервер, с помощью на стороне сервера pre-receive hook?

Скажем, я хочу добавить что-нибудь в конец файла, например:

//End of Org

каждый раз кто-то нажимает на мое репо.

Есть ли способ изменить входящий файл с помощью git hooks?


person beast    schedule 01.09.2010    source источник


Ответы (2)


Я бы предпочел использовать драйвер фильтра, который может работать с содержимым каждого файла, чтобы проверить, есть ли ваша строка, и добавить ее, если нет, на этапе оформления заказа.

alt text

Это было бы:

  • скрипт размазывания
  • возможность репликации при клонировании репо (в отличие от хуков, которые не копируются при клонировании репо, если вы не используете каталог шаблонов)
person VonC    schedule 01.09.2010
comment
Как мне скопировать драйвер фильтра в каждое репо после выполнения клонирования / извлечения? - person beast; 02.09.2010
comment
@beast: драйвер фильтра - это .gitattributes файл, управляемый как любые другие файлы, и выталкиваемый / вытягиваемый как любой другой файл. Сценарий smudge, на который он ссылается, также может иметь версии. - person VonC; 02.09.2010
comment
Итак, у меня есть настройка файла .gitattributes и в репо. У меня есть * .c filter = test в файле .gitattributes. Как мне сделать так, чтобы [filter test] clean = cat smudge = cat копировался в каждый клон / вытягивание репо, чтобы мне не приходилось делать git config filter.test.smudge cat каждый раз, когда я клонирую репо? Если вы не можете сказать, что я новичок в git и пытаюсь получить одну и ту же конфигурацию на нескольких компьютерах. - person beast; 02.09.2010
comment
@beast: вам нужно воспроизвести настройку вашей конфигурации (если вы не клонируете на том же сервере, и в этом случае достаточно git config --global). Обычно я сохраняю команды конфигурации в файле версии, чтобы я мог воспроизвести их после клона. - person VonC; 02.09.2010
comment
@VonC, не могли бы вы это проверить! stackoverflow.com/questions/45931921/ - person ; 29.08.2017

Просто для полноты: из названия должно быть довольно очевидно, что то, что вы просите, просто невозможно. Хук pre-receive не может изменять файлы, потому что он еще не получил!

person Jörg W Mittag    schedule 01.09.2010
comment
У вас есть источник для этого? - person Adrian; 04.06.2013
comment
Это просто вздор. Совершенно возможно сделать то, что просит OP, хотя это довольно плохая идея. - person jwg; 26.11.2014