Это довольно простой вопрос: как новичок Git мне было интересно узнать, есть ли способ для вывода моего журнала Git в файл, желательно в каком-то сериализованном формате, таком как XML, JSON или YAML, Любые предложения?
Git выход журнала в XML, JSON или YAML?
Ответ 1
для вывода в файл:
git log > filename.log
Чтобы указать формат, например, вы хотите, чтобы все на одной строке
git log --pretty=oneline >filename.log
или вы хотите, чтобы формат был отправлен по электронной почте через программу, такую как sendmail
git log --pretty=email |email-sending-script.sh
для создания JSON, YAML или XML, похоже, вам нужно сделать что-то вроде:
git log --pretty=format:"%h%x09%an%x09%ad%x09%s"
Этот gist (не мой) отлично форматирует вывод в JSON: https://gist.github.com/1306223
См. также:
Ответ 2
Я сделал что-то вроде этого, чтобы создать минимальный виджет веб-api/javascript, который покажет последние 5 коммитов в любом репозитории.
Если вы делаете это с любого языка сценариев, вы действительно хотите создать свой JSON с чем-то отличным от "
для вашего символа кавычки, чтобы вы могли избежать реальных кавычек в сообщениях фиксации. (Вы будете иметь их рано или поздно, и это не приятно для этого, чтобы сломать вещи.)
Итак, я закончил с ужасающим, но маловероятным разделителем ^@^
и этой командной строки.
var cmd = 'git log -n5 --branches=* --pretty=format:\'{%n^@^hash^@^:^@^%h^@^,%n^@^author^@^:^@^%an^@^,%n^@^date^@^:^@^%ad^@^,%n^@^email^@^:^@^%aE^@^,%n^@^message^@^:^@^%s^@^,%n^@^commitDate^@^:^@^%ai^@^,%n^@^age^@^:^@^%cr^@^},\'';
Затем (в node.js) мое тело ответа HTTP построено из stdout
вызова git log
следующим образом:
var out = ("" + stdout).replace(/"/gm, '\\"').replace(/\^@\^/gm, '"');
if (out[out.length - 1] == ',') {
out = out.substring (0, out.length - 1);
}
и результат - хороший JSON, который не разбивается с кавычками.
Ответ 3
Этот script обертывает журнал git и выдает вывод JSON: https://github.com/paulrademacher/gitjson
Ответ 4
Вот https://github.com/dreamyguy/gitlogg, последний парсер git-log => JSON
, который вам когда-либо понадобится!
Некоторые функции Gitlogg:
- Разберите
git log
из нескольких репозиториев в одинJSON
файл. - Введено
repository
ключ/значение. - Введены клавиши
files changed
,insertions
иdeletions
. - Введено
impact
ключ/значение, представляющее кумулятивные изменения для фиксации (insertions
-deletions
). - Санизировать двойные кавычки
"
путем преобразования их в одинарные кавычки'
для всех значений, которые разрешают или создаются путем ввода пользователем, напримерsubject
. - Доступны все заполнители
pretty=format:
. - Легко включать/исключать, какие ключи/значения будут анализироваться на
JSON
, комментируя/раскомментируя доступные. - Легко читаемый код, который тщательно прокомментировал.
- Script обратная связь исполнения на консоли.
- Обработка ошибок (поскольку путь к репозиториям необходимо установить правильно).
Успех, JSON был разобран и сохранен.