Я должен генерировать своего рода журнал изменений между двумя Тегами в рамках проекта, которым управляют с помощью мерзавца, конкретно исходный код андроида. Этот список должен включать любые файлы/каталоги/и т.д., которые были отредактированы, перемещены, переименованы, удалены, созданы.
Любая справка была бы большой. И если у Вас есть способ сделать это по всему источнику андроида сразу... еще лучше.
Если вам нужно найти, какие файлы отличаются:
git diff --name-only <tag1> <tag2>
Если вам нужно найти все измененные файлы:
git log --name-only --pretty=format: <tag1>..<tag2> |
grep -v '^$' | sort | uniq
- pretty = format:
предназначен для подавления печати информации о коммитах и печати только часть diff. Обратите внимание, что в случае git log имеет значение порядок
и
.
Как я упоминал в комментариях, "Как найти общие файлы, измененные между ветками git?" является основным решением здесь:
git log [--pretty=<format>] --name-only tag1..tag2
или
git diff --name-only tag1 tag2
(Также упоминается в Gitology recipe)
НО: как упоминалось в "Как получить список директорий, удаленных в моем git-репозитории?", Git отслеживает только содержимое файлов, а не сами директории.
Чтобы включить информацию о каталогах, вам нужно начать играть с git diff-tree
.
любой каталог, который был создан или удален, будет иметь
040000
во второй или первой колонке и000000
в первой или второй колонке соответственно. Это "режимы" записи дерева для левой и правой записей.
Что-то вроде (согласно Charles Bailey):
git diff-tree -t origin/master master | grep 040000 | grep -v -E '^:040000 040000'