Символическая ссылка на крючок в git


Я написал свой собственный пользовательский крюк после слияния, теперь я добавил каталог "hooks" в свою основную папку проекта (поскольку git не отслеживает изменения .git / hooks), где-то я читал, что могу сделать символическую ссылку с крючков .git / hooks поэтому мне не нужно копировать файл из одной папки в другую каждый раз, когда кто-то меняет его, поэтому я попытался:

ln -s -f hooks/post-merge .git/hooks/post-merge

но это не работает, любые идеи, почему? "Л. Н. Крюков/после слияния .git / hooks / post-merge " отлично работает, но делает жесткий ссылка такая же, как copyin я думаю....

5 63

5 ответов:

вы просто использовали неправильный путь, он должен быть:

ln -s -f ../../hooks/post-merge .git/hooks/post-merge

изменение каталога представлены ссылки

cd /path/to/project-repo/.git/hooks
ln -s -f ../../hooks/post-merge ./post-merge

хотя вы можете использовать символические ссылки, вы также можете изменить папку hooks для вашего проекта в настройках git с помощью:

git config core.hooksPath hooks/

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

Если у вас уже есть крючки в .git/hooks/ что вы не хотите поделиться с вашей командой вы можете добавить их в крючки/ и добавить .gitignore так они не общий.

Почему бы и нет панель управления./крючки. */git / hooks/

Это сработало для меня в Mac OS

вычисление пути выполняется относительно символьной ссылки. Давайте разберемся на примере,

ln -s path/to/file symlink/file

здесь путь к файлу должен фактически быть относительным путем от пути символической ссылки.
Система вычисляет путь к файлу, как symlink/path/path/to/file
Приведенная выше команда должна быть переписана как

ln -s ../path/to/file symlink/path

Структура папок является,

/ code
------ символическую ссылку/файл
------ путь/к / файлу