xDrivenDevelopment / precommit1c

Набор утилит для автоматической разборки/сборки внешних обработок и отчетов, при помещении (commit) в git
Other
224 stars 61 forks source link

Продукт не работает, если ветка развернута в другом рабочем каталоге с использованием git worktree #102

Open artbear opened 7 years ago

artbear commented 7 years ago

Буквально вчера нарвался на небольшую проблему при работе с сабжем. Использую механизм worktree, положил нужную ветку в соседний рабочий каталог, делаю коммит, а мне выдается ошибка 'не удается найти .git/hooks/v8file-extractor.os' Для решения хотел сделать копию продукта и положить в папку .git/hooks/, но нелья - существует файл .git для связи с корневым каталогом гит, и папку не создать. Проблему решил временно - подменив путь в корневом каталоге в файле .git/hooks/pre-commit на ../КорневойКаталог/.git/hooks/v8file-extractor.os (правильный путь к корневому каталогу), сделал коммит и вернул обратно.

Хотелось бы уметь штатно работать и в режиме worktree

bambr1975 commented 7 years ago

Могу ошибаться, но

#!/bin/sh
if ! [ -d .git/ ]
then
oscript -encoding=utf-8 $(cat .git|sed 's/^gitdir: //'|sed 's/.git\/worktrees\/.*//').git/hooks/v8file-extractor.os --git-precommit $(pwd)/src
else
oscript -encoding=utf-8 .git/hooks/v8file-extractor.os --git-precommit src
fi
artbear commented 6 years ago

Еще интересная информация https://longair.net/blog/2011/04/09/missing-git-hooks-documentation/ Можно использовать переменную среды GIT_DIR спасибо @bambr1975

bambr1975 commented 6 years ago

вроде вот так универсально получится

#!/bin/sh
if ! [ -d .git/ ]
then
ppwd=`pwd`
cd $GIT_DIR
oscript -encoding=utf-8 ../../../.git/hooks/v8file-extractor.os --git-precommit $ppwd/src
else
oscript -encoding=utf-8 .git/hooks/v8file-extractor.os --git-precommit src
fi