git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] rev-list: restore the NUL commit separator in --header mode

From
Dennis Kaarsemaker <dennis@kaarsemaker.net>
Date
Oct 20, 2016, 18:02 UTC
Message-ID
<1476986542.28685.3.camel@kaarsemaker.net>
In-Reply-To
<xmqq8ttkj740.fsf@gitster.mtv.corp.google.com>
On Wed, 2016-10-19 at 15:39 -0700, Junio C Hamano wrote:
Show 46 quoted lines
> Jacob Keller <jacob.keller@gmail.com> writes:
> 
> > Hi,
> > 
> > On Wed, Oct 19, 2016 at 2:04 PM, Dennis Kaarsemaker
> > <dennis@kaarsemaker.net> wrote:
> > > Commit 660e113 (graph: add support for --line-prefix on all graph-aware
> > > output) changed the way commits were shown. Unfortunately this dropped
> > > the NUL between commits in --header mode. Restore the NUL and add a test
> > > for this feature.
> > > 
> > 
> > 
> > Oops! Thanks for the bug fix.
> > 
> > > Signed-off-by: Dennis Kaarsemaker <dennis@kaarsemaker.net>
> > > ---
> > >  builtin/rev-list.c       | 4 ++++
> > >  t/t6000-rev-list-misc.sh | 7 +++++++
> > >  2 files changed, 11 insertions(+)
> > > 
> > > diff --git a/builtin/rev-list.c b/builtin/rev-list.c
> > > index 8479f6e..cfa6a7d 100644
> > > --- a/builtin/rev-list.c
> > > +++ b/builtin/rev-list.c
> > > @@ -157,6 +157,10 @@ static void show_commit(struct commit *commit, void *data)
> > >                         if (revs->commit_format == CMIT_FMT_ONELINE)
> > >                                 putchar('\n');
> > >                 }
> > > +               if (revs->commit_format == CMIT_FMT_RAW) {
> > > +                       putchar(info->hdr_termination);
> > > +               }
> > > +
> > 
> > 
> > This seems right to me. My one concern is that we make sure we restore
> > it for every case (in case it needs to be there for other formats?)
> > I'm not entirely sure about whether other non-raw modes need this or
> > not?
> 
> 
> Right.  The original didn't do anything special for CMIT_FMT_RAW,
> and 660e113 did not remove anything special for CMIT_FMT_RAW, so it
> isn't immediately obvious why this patch is sufficient.  
> 
> Dennis, care to elaborate?
The original logic was (best seen with git show -w 660e113):
if(showing graphs) {
     do pretty things
}
else {
     just print the buffer and the header terminator
}
660e113 changed that to
do pretty things

Given that the 'do pretty things part' works for other uses of git rev- list, it made sense that the \0 should only be added back in CMIT_FMT_RAW mode. Changing the first putchar('\n') as Jacob proposes (that mail arrived while I'm typing this) might work too, I haven't tested it.

D.
Previous: Keller, Jacob ENext: Junio C Hamano
Message 14 of 23 in “submodule inline diff format”
  1. 0/8 submodule inline diff formatJacob Keller, Aug 31, 2016
  2. 1/8 cache: add empty_tree_oid object and helper functionJacob Keller, Aug 31, 2016
  3. 8/8 diff: teach diff to display submodule difference with an inline diffJacob Keller, Aug 31, 2016
  4. 7/8 submodule: refactor show_submodule_summary with helper functionJacob Keller, Aug 31, 2016
  5. 6/8 submodule: convert show_submodule_summary to use struct object_id *Jacob Keller, Aug 31, 2016
  6. 5/8 allow do_submodule_path to work even if submodule isn't checked outJacob Keller, Aug 31, 2016
  7. 4/8 diff: prepare for additional submodule formatsJacob Keller, Aug 31, 2016
  8. 3/8 graph: add support for --line-prefix on all graph-aware outputJacob Keller, Aug 31, 2016
  9. Dennis KaarsemakerOct 19, 2016
  10. rev-list: restore the NUL commit separator in --header modeDennis Kaarsemaker, Oct 19, 2016
  11. Jacob KellerOct 19, 2016
  12. Junio C HamanoOct 19, 2016
  13. Keller, Jacob EOct 20, 2016
  14. Dennis KaarsemakerOct 20, 2016
  15. Junio C HamanoOct 19, 2016
  16. Dennis KaarsemakerOct 20, 2016
  17. Jacob KellerOct 20, 2016
  18. Junio C HamanoOct 20, 2016
  19. Torsten BögershausenOct 20, 2016
  20. Jacob KellerOct 19, 2016
  21. 2/8 diff.c: remove output_prefix_length fieldJacob Keller, Aug 31, 2016
  22. Stefan BellerAug 31, 2016
  23. Junio C HamanoSep 1, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.