我正在努力弄清楚如何最好地编写一个" pre-init"或者"预先克隆"钩。我正在将它用于刚学习git的学生 - 某种脚本在实际执行启动或克隆回购之前一直检查父目录。
我知道git中有许多pre [[action]挂钩,但是在存储库级别,而不是全局级别。有没有办法创建这样的钩子,或者我最好写一些别名?我仔细阅读了文档,似乎暗示这种类型的东西是可能的,但并没有具体说明如何。
更新:我最终创建了几个别名。他们来了。如果有人有关于如何让它们变得更好的建议,我肯定感兴趣 - 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 $*
}