Создайте список измененных файлов / каталогов / и т. Д. использование git между двумя тегами

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

Любая помощь была бы замечательной. И если у вас есть способ сделать это сразу для всего исходного кода Android ... даже лучше.


person dan    schedule 30.03.2010    source источник
comment
для уточнения: меня не волнует, какие изменения были внесены в файлы, только те, которые они изменили. Однако мне нужно знать, какие изменения были внесены в каталоги и символьные ссылки.   -  person dan    schedule 31.03.2010
comment
Будет ли stackoverflow.com/questions/1038589/ помогает?   -  person VonC    schedule 31.03.2010
comment
А? Вам нужны файлы, но вам не нужны файлы? Ваш вопрос не очень ясен ...   -  person Andriy Drozdyuk    schedule 31.03.2010
comment
в основном мне было поручено переместить проект, управляемый git, в ClearCase VCS. поэтому мне не нужно знать особенности изменений в файле, только то, что в файл были внесены некоторые изменения. при импорте дельта будет рассчитана с помощью clearcase.   -  person dan    schedule 31.03.2010
comment
для импорта, я полагаю, потребуется clearfsimport. Я рекомендую динамический просмотр. См. stackoverflow.com/questions/2477321/sync-git -and-clearcase /, чтобы узнать больше.   -  person VonC    schedule 31.03.2010


Ответы (2)


Если вам нужно выяснить, какие файлы отличаются:

git diff --name-only <tag1> <tag2>

Если вам нужно найти все измененные файлы:

git log --name-only --pretty=format: <tag1>..<tag2> |
    grep -v '^$' | sort | uniq

--pretty=format: предназначен для подавления печати информации о коммитах и ​​печати только части diff. Обратите внимание, что в случае git log порядок <tag1> и <tag2> имеет значение.

person Jakub Narębski    schedule 30.03.2010
comment
Это определенно помогло, и я думаю, что это по большей части решает мою проблему. Еще пара вопросов. 1) есть ли способ ограничить это, чтобы отображать только один тип элемента (то есть только каталоги) или, по крайней мере, обозначить тип элемента. 2) вы упоминаете, что порядок тегов имеет значение, можете ли вы указать мне документ, в котором объясняется, как порядок имеет значение, чтобы я мог определить свой правильный порядок. (Я продолжу исследовать все это самостоятельно и отправлю ответ, если найду то, что ищу самостоятельно) - person dan; 31.03.2010
comment
отредактируйте приведенный выше пример, чтобы читать (т.е. только символические ссылки), так как прочитав приведенный ниже комментарий, я вижу, что мне понадобится другая команда для поиска измененных каталогов - person dan; 31.03.2010
comment
@dan: Re 2.) в случае git log <tag1>..<tag2> он показывает историю от более позднего tag2 до tag1, т.е. tag1 должен быть раньше, чем tag2. Что ж, вы всегда можете использовать симметричный <tag1>...<tag2>, который показывает отличия от общего предка ... - person Jakub Narębski; 31.03.2010
comment
Спасибо, я просто смог поэкспериментировать с этим и почувствовать разницу. В частности, если файл был добавлен / удален, порядок его классификации изменится. - person dan; 31.03.2010

Как я упоминал в комментариях, «Как мне найти общие файлы меняются между ветками git? " - вот главное решение:

git log [--pretty=<format>] --name-only tag1..tag2

or

git diff --name-only tag1 tag2

(Также упоминается в рецепте гитологии)

НО: как указано в разделе «Как получить список удаленных каталогов в моем репозитории git? ", Git отслеживает только содержимое файлов, а не сами каталоги.

Чтобы включить информацию о каталогах, вам нужно начать играть с git diff-tree.

любой каталог, который был создан или удален, будет иметь 040000 во втором или первом столбце и 000000 в первом или втором столбце соответственно. Это «режимы» записи в дереве для левой и правой записей.

Что-то вроде (согласно Чарльзу Бейли):

git diff-tree -t origin/master master | grep 040000 | grep -v -E '^:040000 040000'
person VonC    schedule 30.03.2010
comment
спасибо за ответ и ссылку на дополнительную информацию. Я просмотрю их и посмотрю, подходят ли они для моей уникальной ситуации. - person dan; 31.03.2010