Самый эффективный способ получить путь к репозиторию git, который отслеживает файл - PullRequest
0 голосов
/ 20 марта 2020

Я смотрю произвольную папку с inotifywait. Когда файл изменяется, я хочу определить, какое git репо (если есть) имеет отношение к этому файлу.

Я вижу этот ответ: Как определить, отслеживается ли файл git ( по коду выхода оболочки)?

Разница в том, что мне все равно, отслеживает ли файл git или нет, я просто хочу знать - если git были для отслеживания этого файла, для которого git существующее git репо было бы. Это мой вопрос.

Лучший способ сделать это просто:

#!/usr/bin/env bash

cd "$(dirname "$changed_file")" && git rev-parse --show-toplevel 

? это правильно? Будет ли эта команда git rev-parse --show-toplevel всегда давать соответствующее хранилище для этого файла?

1 Ответ

1 голос
/ 20 марта 2020

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

git rev-parse --show-toplevel покажет вам верхнюю часть рабочего дерева для репо, в котором будет отслеживаться файл, который вы git add оттуда, да, но Git не накладывает никаких требований на то, где части хранилища хранятся. Существует путь поиска для тех, которые вы не вызываете явно, и git rev-parse --show-toplevel показывает вам найденное рабочее дерево, если вы не сказали, или то, которое вы сказали использовать. Скажите git help, чтобы увидеть основные опции для его явного указания и указатели на дальнейшие документы, если они вам нужны.

...