2013-02-28 52 views
2

是否可以通过编程方式找到包含子模块的.git目录的路径?以编程方式获取bash中的git目录路径(包括子模块)

我想写一个脚本,安装一个git钩子,但我找不到一个简单的方法来找到项目的.git目录。理想情况下,应包括以下情况:

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

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

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

+0

howabout使用'找到'来搜索'.git'目录? – 2013-02-28 21:42:42

+0

@Fredrik你怎么知道有多少目录上去?还有,如果有一个名称完全相同的目录? – 2013-02-28 21:44:16

+5

重复http://stackoverflow.com/questions/14073053/find-path-to-git-hooks-directory-on-the-shell – qqx 2013-02-28 21:55:33

回答

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 

这让我很吃惊,因为在mysubmodule一个.git,但它竟然是一个文件,其内容如下:

gitdir: ../.git/modules/mysubmodule 
2

This SO问题使用git rev-parse --show-toplevel找到顶层目录。

+0

这不会给你的.git目录 – 2013-03-01 01:25:16

+1

它是在那里的'.git'目录... – vonbrand 2013-03-01 01:29:24

+1

这不能通过测试3和4 – 2013-03-01 03:22:44

相关问题