Программно получить путь к каталогу git в bash (включая подмодули)

Можно ли программно найти путь к каталогу .git в том числе и для подмодулей?

Я пытаюсь написать скрипт, который устанавливает git-хук, но не могу найти простой способ найти каталог .git для проекта. В идеале он должен охватывать следующие случаи:

  1. В корневом каталоге проекта
  2. В подкаталоге проекта
  3. В корневом каталоге подмодуля внутри проекта
  4. В подкаталоге подмодуля внутри проекта

Я мог бы сделать все это вручную, но я бы не стал анализировать файл .git подмодуля.

Изменить: меня также интересует решение на python.


person Jason Axelson    schedule 28.02.2013    source источник
comment
как насчет использования find для поиска каталога .git?   -  person Fredrik Pihl    schedule 01.03.2013
comment
@Fredrik, как бы ты узнал, сколько каталогов нужно открыть? И что, если есть каталог с точно таким же именем?   -  person Jason Axelson    schedule 01.03.2013
comment
Дубликат stackoverflow.com/questions/14073053/   -  person qqx    schedule 01.03.2013
comment
@qqx спасибо! Этого при гуглении не нашлось. Хотя stackoverflow.com/questions/10848191/git-submodule-commit-hooks сделал   -  person Jason Axelson    schedule 01.03.2013
comment
Этот вопрос по-прежнему является первым в Google, поэтому копирование stackoverflow.com/questions/14073053/ ниже.   -  person ntc2    schedule 09.05.2013


Ответы (2)


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
person Brandon    schedule 07.03.2015

Это ТАК вопрос использует git rev-parse --show-toplevel для поиска верхнего каталога.

person vonbrand    schedule 01.03.2013
comment
Это не дает вам каталог .git - person Jason Axelson; 01.03.2013