6

是否可以以编程方式找到 .git 目录的路径,包括子模块?

我正在尝试编写一个安装 git 钩子的脚本,但我找不到一个直接的方法来找到项目的 .git 目录。理想情况下,它应该涵盖以下情况:

  1. 在项目的根目录中
  2. 在项目的子目录中
  3. 在项目内子模块的根目录中
  4. 在项目内子模块的子目录中

我可以手动完成所有这些,但我宁愿不解析子模块的 .git 文件。

编辑:我也会对 python 中的解决方案感兴趣。

4

2 回答 2

4

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

这让我很惊讶,因为有一个.gitin mysubmodule,但它原来是一个文件,内容如下:

gitdir: ../.git/modules/mysubmodule
于 2015-03-07T18:10:25.480 回答
2

这个SO question 用于git rev-parse --show-toplevel查找顶级目录。

于 2013-03-01T01:23:50.047 回答