是否可以以编程方式找到 .git 目录的路径,包括子模块?
我正在尝试编写一个安装 git 钩子的脚本,但我找不到一个直接的方法来找到项目的 .git 目录。理想情况下,它应该涵盖以下情况:
- 在项目的根目录中
- 在项目的子目录中
- 在项目内子模块的根目录中
- 在项目内子模块的子目录中
我可以手动完成所有这些,但我宁愿不解析子模块的 .git 文件。
编辑:我也会对 python 中的解决方案感兴趣。
是否可以以编程方式找到 .git 目录的路径,包括子模块?
我正在尝试编写一个安装 git 钩子的脚本,但我找不到一个直接的方法来找到项目的 .git 目录。理想情况下,它应该涵盖以下情况:
我可以手动完成所有这些,但我宁愿不解析子模块的 .git 文件。
编辑:我也会对 python 中的解决方案感兴趣。
git rev-parse --git-dir
似乎是你想要的。我刚刚用一个子模块对其进行了测试:
cd mymodule
git rev-parse --git-dir # --> .git
git submodule add ssh://.../path/to/mysubmodule
cd mysubmodule
git rev-parse --git-dir # --> /home/.../mymodule/.git/modules/mysubmodule
这让我很惊讶,因为有一个.git
in mysubmodule
,但它原来是一个文件,内容如下:
gitdir: ../.git/modules/mysubmodule
这个SO question 用于git rev-parse --show-toplevel
查找顶级目录。