Git не отслеживает каталоги как таковые.Он только отслеживает файлы, которые живут в некотором каталоге.(См. Как добавить пустой каталог в репозиторий Git? )
Однако, если у меня есть определенная история коммитов, у меня неявно также есть история изменений в дереве каталогов.
Итак, как мне ответить на такие вопросы, как:
- когда был создан каталог foo / bar (в терминологии git: когда был создан первый файл в этом каталоге).Может быть несколько квалификационных коммитов, если foo / bar был удален некоторое время в истории и воссоздан позже.
- когда был удален каталог foo / bar (в терминологии git: когда был удален последний файл из этого каталога).Как и выше, может быть несколько квалификационных коммитов.
- Какие подкаталоги foo / bar существовали в любой момент времени в истории
Ближайший, который я мог придуматьв псевдокоде:
loop over all commits (git rev-list --all)
start from repo root directory
do recursively on the directory tree rebuilt so far
call git ls-tree and grep the tree lines
rebuild next level of directory tree
end
end
Очевидно, что это может быть написано на вашем любимом языке сценариев.
Тогда у меня есть все деревья каталогов, и мне все еще нужно искать их разумно, чтобы ответить на вопросы типа 1 - 3. Опять же, выполнимо, но, вероятно, не через пару минут.
Вопросы:
- Есть ли более простой способ?
- Если нет: подходят ли сценарии уже в сети?(мой поисковый запрос не выявил ничего, но я также не нашел подходящих поисковых слов)