Я пытаюсь выяснить, как лучше написать хук "pre-init" или "pre-clone".Я бы использовал его для студентов, которые только изучают git - какой-то сценарий, который проверяет родительские каталоги до того, как фактически выполнить инициацию или клонирование репо.
Я знаю, что есть рядхуков pre [action], доступных в git, но на уровне хранилища, а не на глобальном уровне.Есть ли способ создать такой хук или мне лучше написать какой-нибудь псевдоним?Я прочитал документацию, и, кажется, намекнул, что этот тип вещей возможен, но не уточнил, как это сделать.
ОБНОВЛЕНИЕ: В итоге я создал пару псевдонимов.Вот они.Если у кого-то есть предложения о том, как сделать их лучше, мне определенно будет интересно - скрипты bash не моя область знаний.
is_git_repo() {
$(git rev-parse --is-inside-work-tree &> /dev/null)
}
is_git_dir() {
$(git rev-parse --is-inside-git-dir 2> /dev/null)
}
check_for_git_repo() {
if is_git_repo || is_git_dir; then
echo "You are currently in a git repository. Please leave this repository and try again."
return 1
fi
}
check_for_git_parent() {
if tree -a -d | grep -q '.git'; then
echo "This directory is not a git repository, but one of its subdirectories is. Please create a new subdirectory and try again."
return 1
fi
}
alias ginit='check_for_git_repo && check_for_git_parent && echo "Creating repository" && git init'
gclone() {
check_for_git_repo && git clone $*
}