Как заменить локальные хуки git на обновленные версии с помощью git init?

У меня точно такой же вопрос, как у этого пользователя здесь:

шаблон инициализации git, заменяющий модифицированные хуки

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

С http://www.cs.potsdam.edu/cgi-bin/man/man2html?1+git-init:

Запуск git init в существующем репозитории безопасен. Он не перезапишет то, что уже есть. Основная причина перезапуска git init — получение вновь добавленных шаблонов.

Так что же является хорошим способом принудительной перезагрузки новых хуков шаблонов git? У меня есть много хуков во многих репозиториях git, на нескольких компьютерах, и они используются разными пользователями. Самый практичный способ — дать пользователям выполнить определенную команду, а не предлагать им сначала удалить хук, а затем запустить команду git init. Есть ли способ сделать это?


person User402841    schedule 28.05.2012    source источник


Ответы (1)


Самый практичный способ - заставить пользователей выполнить определенную команду, а не говорить им сначала удалить хук, а затем запустить команду git init.

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

  • снять крючки
  • позвоните в git init --template=

Но остерегайтесь пути, который вы используете с параметром --temaplate.
Относительный pathname, заданный для "git init --template=<path> <repo>", должен относиться к каталогу, в котором вызывается "git init", но вместо этого он был сделан относительно репозитория, который был исправлен в Git 2.22.1 (второй квартал 2019 г.).

См. commit e1df7fe (10 мая 2019 г.) от Нгуен Тай Нгок Зуй (pclouds).
(объединено Хунио С. Хамано -- gitster -- в commit 35d7715, 25 июля 2019 г.)

инициализация: сделать --template путь относительно $CWD

Во время git-init мы chdir() переходим к целевому каталогу, но --template не корректируем.
Таким образом, это относительно целевого каталога, а не текущего каталога.

Было бы хорошо, если бы это было задокументировано, но --template в git-init.txt ничего не упоминает об этом поведении.
Измените его, чтобы оно относилось к $CWD, что гораздо более интуитивно понятно.

person VonC    schedule 29.05.2012