在实验上,似乎git hooks在当前目录设置为存储库根目录的情况下运行。但是,我在git文档中看不到任何保证。我应该依靠当前的工作目录来定位git存储库,还是有一种更好的方法来计算与该挂钩相关联的git存储库?
Answers:
它基于为环境变量设置的值GIT_DIR。当挂钩开始运行时,它将设置为存储库的根目录。许多挂钩,尤其是那些从另一个仓库中拉出的挂钩,会根据需要取消设置(并重置)此环境变量。
.git/hooks/post-commit: 1: .git/hooks/post-commit: post-commit_push_gitweb.sh: not found
当前答案似乎已过时。从2.9.0版开始,文档规定以下内容:
在Git调用钩子之前,它将其工作目录更改为非裸存储库中工作树的根目录,或裸存储库中的$ GIT_DIR。
.git目录组成且没有检出文件的存储库。)
您可以使用环境变量$GIT_DIR。$GIT_DIR指向.git目录。
$GIT_DIR/..指向存储库根的可能性有多大?
$GIT_DIR/..。当回购是裸回购时,这将中断。裸仓库没有工作目录,因此没有“存储库根目录”。当.git代替链接时,它也会中断。
.git而且git reset --hard实际上在目录内部创建了工作目录结构.git,我认为这是完全错误的事情!