Добавить в репозиторий драйвер слияния git?

Я создаю драйвер слияния. Я определил файл .gitattributes следующим образом:

filename merge=mergeStrategy

Я создал драйвер слияния в $PROJECT/.git/config следующим образом:

[merge "mergeStrategy"]
    name = My merge strategy
    driver = scripts/mergeScript.sh

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

Можно ли добавить этот (или другие параметры конфигурации git) в репозиторий?

Ответ 1

Вы можете просто добавить и зафиксировать (и нажать) script/mergeScript (вместе с файлом .gitattributes, конечно)

Это будет работать до тех пор, пока:

  • mergeScript как-то находится в $PATH пользователя, выполняющего драйвер слияния.
  • mergeScript является исполняемым, chmod +x
  • mergeScript не имеет расширения, чтобы позднее можно было изменить его содержимое (от оболочки bash до Perl script до исполняемого файла C...) при необходимости.

(Спасибо, MestreLion, за последние два момента, как он упомянул их в комментарии)

Это было для вас локально, поскольку я подозреваю, что "." был в вашем $PATH, но вы не можете предположить, что для всех.

Однако локальный файл конфигурации (.git/config) не будет нажат/клонирован (как Александр Приймак указывает на комментарий), поэтому пользователям по-прежнему необходимо реплицировать объявление пользовательского драйвера слияния.
Это базовая мера безопасности, чтобы вы не нажимали потенциальный "вредный" script, который затем автоматически запускался при следующем объединении.