以编程方式获取bash中git目录的路径(包括子模块)

时间:2013-02-28 21:40:33

标签: git bash git-submodules

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

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

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

    我可以手动执行所有操作,但我不想解析子模块的.git文件。

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

2 个答案:

答案 0 :(得分:2)

This所以问题使用git rev-parse --show-toplevel来查找顶级目录。

答案 1 :(得分:1)

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中有一个mysubmodule,但结果却是一个文件,其中包含以下内容:

gitdir: ../.git/modules/mysubmodule