Заставить Git log stats иметь собственную колонку? - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь создать выходной файл .csv, который содержит информацию об истории репозиториев, которой затем можно манипулировать извне с помощью таких программ, как excel или аналогичных. Моя текущая команда, которую я использую: git log --pretty=format:"%h%x09%an%x09%ad%x09%s" --author=x --numstat --sparse --cc --date=local folder > test.csv

Есть ли способ получить выходные данные numstat в отдельных столбцах, по крайней мере, вдали от столбца хеш-кода фиксации? Спасибо

1 Ответ

0 голосов
/ 04 июля 2018

Короткий ответ неудовлетворителен: нет, сделать это невозможно.

Однако существует простой (хотя и немного медленный) обходной путь. Каждый раз, когда существующие форматы вывода Git неудовлетворительны, вы можете:

  1. Замените git log (включая большинство его опций) на git rev-list, исключая любые опции git log, ориентированные на форматирование и вывод, и добавив HEAD, если вы не перечислили имена ветвей , В этом случае это даст:

    git rev-list --author=x --sparse folder HEAD
    
  2. Прочитать вывод этой команды. Он содержит хэш-идентификаторы каждого из коммитов, которые вы хотели бы проверить. Теперь вы можете запустить одну или несколько команд, таких как:

    git log --no-walk --pretty=format:... --cc --numstat <hash>
    

    и прочитайте их вывод, преобразовав вывод в формат, который вы предпочитаете. (Вы можете использовать git log -1 вместо git log --no-walk, но я предпочитаю --no-walk для иллюстрации, по крайней мере.)

Единственная причина делать это по отдельности за раз, а не массово, состоит в том, что при массовом выполнении программа, пытающаяся проанализировать вывод и переформатировать его в любой формат, который вам нравится, не может вообще различить вывод непосредственно из git log и текст, хранящийся в теле сообщения фиксации, поскольку последнее может имитировать первое. Если ваш вывод достаточно контролируется - в данном случае это, вероятно, будет: %s текст будет весь в одной строке, в отличие от %b или %B - вы можете обойтись без отдельного git rev-list, но вам все равно нужен Программа для чтения вывода и преобразования его в нужный формат.

Возможно, достаточно простой программы:

git log --pretty=format:"%h%x09%an%x09%ad%x09%s" --author=x \
    --numstat --sparse --cc --date=local folder | awk ... > test.csv

скорее всего сработает. Написание простой программы awk - это упражнение для вас, или фураж для вопроса, отправленного на . (Совет: рассмотрите возможность добавления отличительного первого символа в строку --pretty=format:, поскольку вы знаете, что --numstat создает цифру в качестве первого выходного символа для каждой строки.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...