14747


`git log` を使って特定範囲のコミットの一覧を一行一コミットで作成しようと思っています。

[code]

    - subject: body @hash
    - subject: body @hash
    
[/code]

`git log` の `--format=` オプションを使う際、コミットのsubject、body、ハッシュはそれぞれ `%s` `%b` `%h`
で出力できることがわかりました。また、bodyは長くなることが考えられるので要約したいですが、これは `<(20,mtrunc)`
で概ね実現できるようです。

ところが、それを使って実際に出力すると、どうやら `%b` の後に改行が出力されるようなのです。

[code]

    $ git log --format="- %s: %b @%h"
    - Add something feature: Lorem ipsum.
     @573c2ea
    - Add something feature: Lorem ipsum dolor sit amet, consectetur adipisicing elit,
    sed do eiusmod tempor incididunt
     @785c29c
    - Commit without body:  @119c6d7
    
    $ git log --format="- %s: %<(20,mtrunc)%b @%h"
    - Add something feature: Lorem ipsum.
              @573c2ea
    - Add something feature: Lorem ips..incididunt
     @785c29c
    - Commit without body:  @119c6d7
    
[/code]

上の例ではbodyとhashの間に改行が入っていますが、本来は同じ行に出力したいのです。

`%b` の後ろに何も置かないようにすれば空行になるので後から取り除くのも容易ではありますが、この改行を `git log`
側で抑制する方法はないものでしょうか？


CC BY-SA 3.0
2015-08-22T15:56:52.867
14738
2015-08-23T04:09:12.500
8000
question
git
git log --format="%b" で出力される改行を抑制したい


git のドキュメントに、

> If you add a `-` (minus sign) after '%' of a placeholder, line-feeds that  
>  immediately precede the expansion are deleted if and only if the  
>  placeholder expands to an empty string.

とありますので、例えば、

[code]

    $ git log --format="- %s: %b%-:@%h"
    
[/code]

としますと、

[code]

    - Add something feature: Lorem ipsum.:@573c2ea
    
[/code]

と表示されます。ただ、body と hash 値の区切りを明示するために `:` を入れました。これは適宜変更して下さい。


CC BY-SA 3.0
2015-08-23T04:09:12.500
14747
2015-08-23T04:09:12.500
14738
answer