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

Възможно ли е програмно да се намери пътят до директорията .git, включително за подмодули?

Опитвам се да напиша скрипт, който инсталира git hook, но не мога да намеря лесен начин за намиране на директорията .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

Това ме изненада, тъй като имаше .git в mysubmodule, но се оказа файл със следното съдържание:

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