Использование git hooks для создания отчета о различиях для каждого файла, который изменился для текущей фиксации.

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

Большинство решений, которые я видел, говорят об использовании команды git diff для создания отчета, но мне нужно, чтобы это было сделано для каждого файла, который изменился, И мне нужно, чтобы он был создан без сравнения, в частности, как параллельный HTML-отчет.

Таким образом, для каждого файла, который был изменен, мне нужно было бы вызывать «вне сравнения», чтобы создать некоторый файл.html с подробным описанием того, что изменилось. Если бы изменились 63 файла, я бы хотел, чтобы 63 html-файла отображали разницу изменений.

У меня есть приблизительное представление о том, как автоматизировать вне сравнения для создания diff, я просто не знаю, как получить пути к файлам, которые изменились, вместе с путями к локальному кешу удаленных файлов, которые изменились .

Кто-нибудь делал что-нибудь подобное?

РЕДАКТИРОВАТЬ. Я хотел использовать githooks, потому что хотел, чтобы файлы различий генерировались автоматически для каждой фиксации, и никому не приходилось об этом думать. Это часть нашего процесса проверки сейчас (как продиктовано руководством), и это утомительно делать вручную для каждого измененного файла.


person ACA-Ken    schedule 28.02.2014    source источник
comment
Почему хук и когда он будет вызван?   -  person ibizaman    schedule 01.03.2014


Ответы (2)


  1. Чтобы просмотреть измененные файлы:

    git diff --name-only
    
  2. Чтобы напечатать содержимое файла в указанной версии:

    git show <revision>:<file>
    
  3. Beyond Compare выглядит, чтобы принять стандартный ввод в качестве входных данных, добавив - к команде .

Комбинируя их, предполагая, что вы работаете в Windows и если сервер находится в ветке origin/master, вы можете сделать что-то вроде этого: (обратите внимание, что я не проверял это)

for f in $(git diff --name-only)
    git show origin/master:"$f" | BCompare.exe "$f" - # add correct option(s) before "$f" to generate html
do
person ibizaman    schedule 01.03.2014

Вне сравнения, похоже, не понравилось использование переданного текста со списком аргументов, поэтому в итоге я сделал что-то вроде этого:

COUNTER=0
for f in $(git diff --name-only --cached); do
    git show HEAD:"$f" > tempRemote.dat
    "C:\Program Files (x86)\Beyond Compare 3\BCompare.exe" "$f" tempRemote.dat "C:\output\output${COUNTER}.html" @"script.txt"
    rm tempRemote.dat
    ((COUNTER++))
done
person ACA-Ken    schedule 04.03.2014