Получить JSON из команд git, таких как git status
Если я запускаю эту команду:
$ git status
Я получил:
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
Это довольно сложно разобрать.
Но что было бы действительно хорошо, так это вывод --json, в другом мире, я бы хотел увидеть:
$ git status --json
и получите это:
{
"currentBranch": "master",
"remoteTrackingBranch": "origin/master",
"isUpToDateWithRemote": true,
"workingDirectoryClean": true
}
Есть ли какой-нибудь инструмент в экосистеме NPM, который может анализировать вывод Git в JSON? Каков наилучший способ анализа выходных данных git status
, так далее?
1 ответ
Это не JSON, но git status
имеет --porcelain
вариант:
Дайте вывод в простом для анализа формате для сценариев. Это похоже на короткий вывод, но останется стабильным во всех версиях Git и независимо от конфигурации пользователя.
Смотрите фарфоровые форматы v1 и v2:
Формат версии 2 добавляет более подробную информацию о состоянии рабочего дерева и измененных элементов. Версия 2 также определяет расширяемый набор легко разбираемых необязательных заголовков.
Строки заголовка начинаются с "#" и добавляются в ответ на определенные аргументы командной строки. Парсеры должны игнорировать заголовки, которые они не распознают.
vonc@voncvb C:\test
> git status --porcelain=v2 --branch
# branch.oid a4a9ae9616e5f1da136a3ff717e722d055ca9aa7
# branch.head master
# branch.upstream origin/master
1 .M N... 100644 100644 100644 67f7a2a439ffb9dd18dd65bb6fd296f8c16c55b3 67f7a2a439ffb9dd18dd65bb6fd296f8c16c55b3 test/file1.txt
1 .M N... 100644 100644 100644 d59cac0c8acf674ba3316944451dcbec3e6ec3d7 d59cac0c8acf674ba3316944451dcbec3e6ec3d7 test/file2.txt
Смотри как примерrobertgzr/porcelain
, который разбирает git status --porcelain=v2 --branch
и выводит красиво отформатированные строки для вашей оболочки.