2017-02-11 32 views
2

У меня есть псевдоним для git log twoline.git log pretty format

[alias] 
    l  = "log --graph --date=relative --decorate --abbrev-commit --pretty=format:'%h - %aD (%ar)%d%n %s - %an'" 

Это работает красиво.

выход # 1:

$ git l -2 
* 714a14e - Fri, 18 Nov 2016 00:04:19 -0800 (3 months ago) (HEAD -> dev, github/dev) 
| Adding BitSet implementation. - hippy 
* 87dce5f - Sat, 10 Dec 2016 12:50:40 -0800 (9 weeks ago) 
| Turning on recommended code analysis rules. - hippy 

Однако, с --name-status, я могу видеть трубку после того, как имя автора.

выход # 2:

$ git l -2 --name-status 
* 714a14e - Fri, 18 Nov 2016 00:04:19 -0800 (3 months ago) (HEAD -> dev, github/dev) 
| Adding BitSet implementation. - hippy| 
| M README.md 
| A rm.Extensions/BitSet.cs 
| M rm.Extensions/Properties/AssemblyInfo.cs 
| M rm.Extensions/rm.Extensions.csproj 
| A rm.ExtensionsTest/BitSetTest.cs 
| M rm.ExtensionsTest/rm.ExtensionsTest.csproj 

* 87dce5f - Sat, 10 Dec 2016 12:50:40 -0800 (9 weeks ago) 
| Turning on recommended code analysis rules. - hippy| 
| M rm.Extensions/GraphExtension.cs 
| M rm.Extensions/Wrapped.cs 
| M rm.Extensions/WrappedExtension.cs 
| M rm.Extensions/rm.Extensions.csproj 

Если бы я добавить %n в самом конце (так ...%an%n), выход # 1 становится 3 строки вместо 2.

I хотите, чтобы это было желательно --name-status, но дополнительная строка новой строки перед списком файлов в порядке:

$ git l -2 --name-status 
* 714a14e - Fri, 18 Nov 2016 00:04:19 -0800 (3 months ago) (HEAD -> dev, github/dev) 
| Adding BitSet implementation. - hippy 
| M README.md 
| A rm.Extensions/BitSet.cs 
| M rm.Extensions/Properties/AssemblyInfo.cs 
| M rm.Extensions/rm.Extensions.csproj 
| A rm.ExtensionsTest/BitSetTest.cs 
| M rm.ExtensionsTest/rm.ExtensionsTest.csproj 
| 
* 87dce5f - Sat, 10 Dec 2016 12:50:40 -0800 (9 weeks ago) 
| Turning on recommended code analysis rules. - hippy 
| M rm.Extensions/GraphExtension.cs 
| M rm.Extensions/Wrapped.cs 
| M rm.Extensions/WrappedExtension.cs 
| M rm.Extensions/rm.Extensions.csproj 

Это похоже на ошибку, поскольку я ничего не могу найти в pretty formats man page.

$ git version 
git version 2.11.0.windows.1 

Как исправить это pretty format?

Примечание: Я подал здесь ошибку (bug link) и соответственно обновит билет.

ответ

0

Это, очевидно, ошибка (вертикальная полоса находится в неправильном положении место; обратите внимание на промежуток ниже --name-status элементов). К счастью, существует тривиальное обходное решение: используйте tformat вместо простого format. Разница в том, что tformat добавляет новую строку, если это необходимо, а не в случае необходимости.

Отметьте, что --format (доступно с версии Git 1.6.3) по существу является синонимом для --pretty=tformat:, так как большинство обращенных к пользователю кода обычно должны использовать tformat.

+0

Я попробовал 'tformat'. Я думаю, что 'format' с'% n' в конце лучше, чем 'tformat' из-за удобочитаемости. Я бы использовал 'git log -graph --decorate --oneline', но не выводил автора, даты. Думаю, я покажу отчет об ошибке. – hIpPy

+0

Но как вы отметили, явный '% n' ('% an% n') помещает в новую строку, когда вы этого не хотите, а также когда вы делаете («вывод №1 становится 3 строками ...»). С 'tformat', это не так. – torek