Как я могу надежно найти корневой каталог git с помощью git hook? - PullRequest
0 голосов
/ 03 мая 2018

Имеется 2 репозитория git (продукт A и продукт B) с подмодулями (CommonSubmodule, SomeOtherSubmodule)

D:\Repositories\ProductA\
D:\Repositories\ProductA\CommonSubmodule
D:\Repositories\ProductA\SomeOtherSubmodule
D:\Repositories\ProductA\SomeOtherSubmodule\
D:\Repositories\ProductB\SomeOtherSubmodule\
D:\Repositories\ProductB\CommonSubmodule\

Я нашел в сети скрипт, позволяющий регистрировать ветки с помощью перехвата post_checkout

#!/bin/sh

previous_head_ref=$1
new_head_ref=$2
is_branch_checkout=$3

if [[ "$previous_head_ref" != "$new_head_ref" ]] && [[ "$is_branch_checkout" == 1 ]]; then
    branch=$(git rev-parse --abbrev-ref HEAD)
    #if [[ "develop" != "$branch" ]]; then
        path="$(dirname "$0")/.."
        logfile="$path/x_branch_log"
        ts=$(date +%s)
        echo "$branch|1|$ts" >> $logfile
        echo "Logging $branch|1|$ts to $logfile"
        echo PWD is $PWD
    #fi
fi

В контексте post_checkout, как я могу получить корневой каталог (D: \ Repositories) независимо от того, насколько глубоко в подмодуле установлен хук, без кодирования абсолютных путей?

D:\Repositories\

Кроме того, как я могу получить корневой каталог продукта, например,

D:\Repositories\ProductA\
D:\Repositories\ProductB\

1 Ответ

0 голосов
/ 03 мая 2018

Из комментариев, которые я получил к своему ответу на Корневая папка Git repo , проверьте возвращаемое значение

git rev-parse --git-dir

Возможно, вам придется выполнить итерацию (если вы находитесь в подмодуле подмодуля родительского репо), но он должен вернуть корневую папку родительского репо.

...