2013-09-09 2 views
1

У меня 1000+ версий XML в git, я написал скрипт для анализа и работы с данными XML. В течение этого года содержимое XML было изменено и передано git. Я хотел бы проверить содержимое старого XML с текущей фиксации на первый коммит. Есть ли возможность иметь все файлы, все версии, которые были добавлены в git, включая удаленные в той же папке с другим именем?Как я могу получить все исправленные файлы в git?

+0

Может быть, этот вопрос может помочь: http://stackoverflow.com/ q/278192/90874 – thSoft

+0

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

ответ

1

Вы могли бы просто написать все дни немного Баш скрипт, чтобы сделать это для вас.

dir=files; 
filename=$1; 

mkdir $dir; 

for hash in $(git log --pretty=%H $filename); do 
    git checkout $hash $filename; 
    cp $1 $dir/$hash\_$filename; 
done 

Это поместит все версии файла в папку с именем files. Вы могли бы сделать его более сложным. Укажите имя папки в командной строке, проверьте, существует ли папка и т. Д. Бит, основная идея есть.

0

Если вы хотите увидеть все изменения во всех файлах между двумя коммитами, используйте git diff.

git diff longhashfirstcommit..longhashfromlatestcommit 

Вы можете получить хеши фиксации от запуска git log.

Подробнее здесь.

http://linux.die.net/man/1/git-diff
http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository#Viewing-Your-Staged-and-Unstaged-Changes

0

Предполагая, что вы довольны выполнением небольшого сценария оболочки, вы можете объединить git-сантехнику, чтобы получить то, что вы хотите.

git rev-list --all перечисляет хэши всех изменений в вашем репозитории.
git ls-tree -r <hash> предоставит вам список всех файлов в фиксации (или другом древовидном виде). Вы можете разделить файлы XML, отфильтровав этот список и извлечь хеши.
git show <hash> предоставит вам содержимое файла, учитывая его хэш. Вы можете перенаправить этот контент там, где хотите.

Для начала, следующий конвейер даст вам список всех файлов XML, с их хэш и имя файла:

for i in `git rev-list --all` ; do git ls-tree -r $i ; done | grep ".xml$"