Добавить драйвер git merge в хранилище? - PullRequest
15 голосов
/ 12 января 2012

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

filename merge=mergeStrategy

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

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

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

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

1 Ответ

11 голосов
/ 12 января 2012

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

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

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

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

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

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

...