mbox series

[0/4] Flag to add a newline after decorations for --oneline log output

Message ID pull.1065.git.1635542128.gitgitgadget@gmail.com (mailing list archive)
Headers show
Series Flag to add a newline after decorations for --oneline log output | expand

Message

David Mandelberg via GitGitGadget Oct. 29, 2021, 9:15 p.m. UTC
Add a flag --newlineafter to be able to pass in "decorations" to enable a
nicer format for the --oneline output so the commit subjects are aligned
when decorations are printed.

0b96396ef5ff7a3a01e137b3735893c970759dfa (HEAD -> jc/two-line-pretty-decoration, john-cai/jc/two-line-pretty-decoration)
                                         Improve UX for oneline with decorations
e9e5ba39a78c8f5057262d49e261b42a8660d5b9 (origin/master, origin/HEAD, master)
                                         The fifteenth batch
c6fc44e9bf85dc02f6d33b11d9b5d1e10711d125 Merge branch 'ab/test-lib-diff-cleanup'
63ec2297d26155adb0e38745bf2284cd663add8e Merge branch 'ab/fix-make-lint-docs'


original thread in
https://lore.kernel.org/git/CA+55aFwT2HUBzZO8Gpt9tHoJtdRxv9oe3TDoSH5jcEOixRNBXg@mail.gmail.com/T/#t

John Cai (4):
  oneline: parse --newlineafter flag
  oneline: print newline after decorations if flag provided
  oneline: test for --newlineafter feature
  doc: add docs for newlineafter flag

 Documentation/pretty-options.txt |  4 ++++
 builtin/log.c                    | 25 +++++++++++++++++++++++++
 log-tree.c                       | 20 ++++++++++++++++----
 log-tree.h                       |  7 +++++--
 pretty.c                         |  4 ++--
 revision.h                       |  4 ++++
 t/t4205-log-pretty-formats.sh    | 10 ++++++++++
 7 files changed, 66 insertions(+), 8 deletions(-)


base-commit: e9e5ba39a78c8f5057262d49e261b42a8660d5b9
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1065%2Fjohn-cai%2Fjc%2Ftwo-line-pretty-decoration-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1065/john-cai/jc/two-line-pretty-decoration-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1065

Comments

Christian Couder Nov. 12, 2021, 4:27 p.m. UTC | #1
On Fri, Oct 29, 2021 at 11:17 PM John Cai via GitGitGadget
<gitgitgadget@gmail.com> wrote:
>
> Add a flag --newlineafter to be able to pass in "decorations" to enable a
> nicer format for the --oneline output so the commit subjects are aligned
> when decorations are printed.

I wonder if --newlinebefore or --newlinefor rather than --newlineafter
would be better. It seems to me that it would be easier for users to
guess what the result will look like with --newlinefor.

Another possibly more generic solution would be something like
--format-field=<field>:<format> where, in the output, the field
<field> (which corresponds to the "%(<field>)" format) would be
replaced by <format> which should contain "%(<field>)". For example
`--format-field=decorations:'[[%(decorations)]]\n'` would enclose the
decorations using [[...]] and would add a newline after them.

Also it would be nice if this could be extended to other fields and to
formats other than "oneline". You might want to discuss a bit about
how it could be done with generic code.

> 0b96396ef5ff7a3a01e137b3735893c970759dfa (HEAD -> jc/two-line-pretty-decoration, john-cai/jc/two-line-pretty-decoration)
>                                          Improve UX for oneline with decorations
> e9e5ba39a78c8f5057262d49e261b42a8660d5b9 (origin/master, origin/HEAD, master)
>                                          The fifteenth batch
> c6fc44e9bf85dc02f6d33b11d9b5d1e10711d125 Merge branch 'ab/test-lib-diff-cleanup'
> 63ec2297d26155adb0e38745bf2284cd663add8e Merge branch 'ab/fix-make-lint-docs'

Not sure why the above lines are included in your cover letter.

> original thread in
> https://lore.kernel.org/git/CA+55aFwT2HUBzZO8Gpt9tHoJtdRxv9oe3TDoSH5jcEOixRNBXg@mail.gmail.com/T/#t

It would be nice if you could summarize the threads a bit in this
cover letter, and tell a bit about how your design evolved from what
was discussed.

> John Cai (4):
>   oneline: parse --newlineafter flag
>   oneline: print newline after decorations if flag provided
>   oneline: test for --newlineafter feature
>   doc: add docs for newlineafter flag

The 2 last patches look very small and might want to be squashed into
the patch that introduces the --newlineafter flag.

Thanks!
John Cai Nov. 21, 2021, 1:19 a.m. UTC | #2
On Fri, Nov 12, 2021 at 05:27:45PM +0100, Christian Couder wrote:
> On Fri, Oct 29, 2021 at 11:17 PM John Cai via GitGitGadget
> <gitgitgadget@gmail.com> wrote:
> >
> > Add a flag --newlineafter to be able to pass in "decorations" to enable a
> > nicer format for the --oneline output so the commit subjects are aligned
> > when decorations are printed.
> 
> I wonder if --newlinebefore or --newlinefor rather than --newlineafter
> would be better. It seems to me that it would be easier for users to
> guess what the result will look like with --newlinefor.
> 
> Another possibly more generic solution would be something like
> --format-field=<field>:<format> where, in the output, the field
> <field> (which corresponds to the "%(<field>)" format) would be
> replaced by <format> which should contain "%(<field>)". For example
> `--format-field=decorations:'[[%(decorations)]]\n'` would enclose the
> decorations using [[...]] and would add a newline after them.
> 
> Also it would be nice if this could be extended to other fields and to
> formats other than "oneline". You might want to discuss a bit about
> how it could be done with generic code.
> 
> > 0b96396ef5ff7a3a01e137b3735893c970759dfa (HEAD -> jc/two-line-pretty-decoration, john-cai/jc/two-line-pretty-decoration)
> >                                          Improve UX for oneline with decorations
> > e9e5ba39a78c8f5057262d49e261b42a8660d5b9 (origin/master, origin/HEAD, master)
> >                                          The fifteenth batch
> > c6fc44e9bf85dc02f6d33b11d9b5d1e10711d125 Merge branch 'ab/test-lib-diff-cleanup'
> > 63ec2297d26155adb0e38745bf2284cd663add8e Merge branch 'ab/fix-make-lint-docs'
> 
> Not sure why the above lines are included in your cover letter.
> 
> > original thread in
> > https://lore.kernel.org/git/CA+55aFwT2HUBzZO8Gpt9tHoJtdRxv9oe3TDoSH5jcEOixRNBXg@mail.gmail.com/T/#t
> 
> It would be nice if you could summarize the threads a bit in this
> cover letter, and tell a bit about how your design evolved from what
> was discussed.
> 
> > John Cai (4):
> >   oneline: parse --newlineafter flag
> >   oneline: print newline after decorations if flag provided
> >   oneline: test for --newlineafter feature
> >   doc: add docs for newlineafter flag
> 
> The 2 last patches look very small and might want to be squashed into
> the patch that introduces the --newlineafter flag.
> 
> Thanks!

There was a discussion in https://lore.kernel.org/git/CA+55aFwT2HUBzZO8Gpt9tHoJtdRxv9oe3TDoSH5jcEOixRNBXg@mail.gmail.com/T/#t

about improving the --oneline output with decorations. To summarize, currently, when
decorations are printed with --oneline the subject message ends up misaligned like so:

```
7140c4988f t/lib-git.sh: fix ACL-related permissions failure
88d915a634 (jc-test-peff-revlist-patch) A few fixes before -rc2
9cc14a5b5d Sync with maint
5fbd2fc599 (origin/maint) Merge branch 'vd/pthread-setspecific-g11-fix' into maint
494cb27e57 Merge branch 'ma/doc-git-version' into maint
```

It would improve the user experience of this format if we could allow a newline after
the decorations so that the logs are formatted in the following manner:

```
7140c4988f t/lib-git.sh: fix ACL-related permissions failure
88d915a634 (jc-test-peff-revlist-patch)
           A few fixes before -rc2
9cc14a5b5d Sync with maint
5fbd2fc599 (origin/maint)
           Merge branch 'vd/pthread-setspecific-g11-fix' into maint
494cb27e57 Merge branch 'ma/doc-git-version' into maint
```

In order to accomplish this, we can add a new flag called --format-field=<format>.
<format> is similar to what is passed into --format.

For example, if --format-field=[[%d]]%n is used, the --oneline format will print
decorations enclosed with [[ ]] and a newline after it.

This would be convenient when one wants to modify just one field of the
log output.


cc: Christian Couder <christian.couder@gmail.com>