Короткий ответ неудовлетворителен: нет, сделать это невозможно.
Однако существует простой (хотя и немного медленный) обходной путь. Каждый раз, когда существующие форматы вывода Git неудовлетворительны, вы можете:
Замените git log
(включая большинство его опций) на git rev-list
, исключая любые опции git log
, ориентированные на форматирование и вывод, и добавив HEAD
, если вы не перечислили имена ветвей , В этом случае это даст:
git rev-list --author=x --sparse folder HEAD
Прочитать вывод этой команды. Он содержит хэш-идентификаторы каждого из коммитов, которые вы хотели бы проверить. Теперь вы можете запустить одну или несколько команд, таких как:
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
, но вам все равно нужен Программа для чтения вывода и преобразования его в нужный формат.
Возможно, достаточно простой awk программы:
git log --pretty=format:"%h%x09%an%x09%ad%x09%s" --author=x \
--numstat --sparse --cc --date=local folder | awk ... > test.csv
скорее всего сработает. Написание простой программы awk - это упражнение для вас, или фураж для вопроса, отправленного на awk . (Совет: рассмотрите возможность добавления отличительного первого символа в строку --pretty=format:
, поскольку вы знаете, что --numstat
создает цифру в качестве первого выходного символа для каждой строки.)