Как получить манифест файла для каждой ревизии в репозитории git? - PullRequest
4 голосов
/ 27 января 2012

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

Я хочу решить эту проблему.Но для того, чтобы по-настоящему это исправить, мне нужно разобраться с этим.

Есть ли быстрый и простой способ получить список файлов в каждой ревизии?

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

Ответы [ 2 ]

3 голосов
/ 27 января 2012

Один из способов получить это с помощью ls-tree:

git ls-tree -r --name-only <commit>

(Обратите внимание, что это смотрит на часть дерева, соответствующую вашему текущему каталогу, поэтому вы должны либо запустить его с верхнего уровня репо, либо указать параметр --full-tree.)

Это по сути мгновенно, поскольку все, что нужно сделать Git, - это рекурсивно исследовать дерево; ему даже не нужно просматривать содержимое файлов.

Я не уверен, как вы собираетесь использовать список имен файлов для обнаружения одного и того же файла под двумя разными именами. Если вы просто имеете в виду, что хотите искать имена файлов, которые были бы одинаковыми в файловой системе без учета регистра, тогда вам нужен список имен файлов.

Однако, если вы считаете, что файлы на самом деле могут иметь одинаковое содержимое, вы можете удалить --name-only, чтобы вы также видели SHA1 всего файла и могли находить идентичные файлы, просматривая дубликаты хэшей.

0 голосов
/ 27 января 2012

Вы можете запустить что-то вроде этого:

git log --name-only --pretty="format:%H"

Эта команда покажет sha1 и список измененных файлов для каждой ревизии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...