预克隆/ pre-init git钩子?

时间:2018-06-04 20:11:05

标签: bash git

我正在努力弄清楚如何最好地编写一个" 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 $*
}

0 个答案:

没有答案