All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org, Paul Tan <pyokagan@gmail.com>
Subject: Re: [PATCH 0/5] "am" state file fix with write_file() clean-up
Date: Mon, 24 Aug 2015 12:57:38 -0700	[thread overview]
Message-ID: <xmqqzj1g31e5.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <20150824183554.GA5883@sigill.intra.peff.net> (Jeff King's message of "Mon, 24 Aug 2015 14:35:55 -0400")

Jeff King <peff@peff.net> writes:

> On Mon, Aug 24, 2015 at 11:15:55AM -0700, Junio C Hamano wrote:
>
>> > This all looks good to me. The topics-in-flight compatibility stuff in
>> > patches 3 and 5 is neatly done. Usually I would just cheat and change
>> > the order of arguments to make the compiler notice such problems, but
>> > that's hard to do here because of the varargs (you cannot just bump
>> > "flags" to the end).
>> 
>> Actually, I think my compatibility stuff is worthless.  It would not
>> catch new callers that wants to only probe and do their own error
>> handling by passing 0 (and besides, assert() is a shoddy way to do
>> this---there is no guarantee that tests will trigger all the
>> codepaths in the first place).
>
> Oh, hrm, you're right. I was focused on making sure the common 1-passers
> were not broken, but patch 3 does break 0-passers (obviously, because
> they needed updated in the same patch ;) ).
>
> And I do agree that build-time assertions are much better than run-time
> ones.
>
>> We should deprecate and remove write_file() by renaming the one with
>> the updated semantics to something else, possibly with a backward
>> compatiblity thin wrapper around it that is called write_file(), or
>> without it to force a link-time error.
>
> That sounds reasonable. Maybe "format_to_file" or something?

I am going into a slightly different tangent.  Binary support is not
something we need right now, so I'll keep the door open for that in
the future by

 - drop the "int fatal" altogether from write_file() without adding
   "unsigned flags";

 - add write_file_gently(), again without "unsigned flags";

 - make them call write_file_v() that takes "unsigned flags" and
   va_list.

I earlier said there were 2 oddball callers, one of them being
suspicious, but it turns out that there are 3 callers that want
write_file_gently().  Only the one in the setup codepath is asking
for "fatal=0" while discarding the error return, which is
suspicious; other two are handling an error themselves and are OK.

  reply	other threads:[~2015-08-24 19:57 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-20 13:22 Minor builtin 'git am' side-effect SZEDER Gábor
2015-08-20 18:40 ` Junio C Hamano
2015-08-23  5:50   ` [PATCH] am: terminate state files with a newline Paul Tan
2015-08-23 12:30     ` SZEDER Gábor
2015-08-23 19:05     ` Junio C Hamano
2015-08-24  5:13       ` Jeff King
2015-08-24  6:48         ` Junio C Hamano
2015-08-24  6:50           ` Jeff King
2015-08-24 17:09             ` [PATCH 0/5] "am" state file fix with write_file() clean-up Junio C Hamano
2015-08-24 17:09               ` [PATCH 1/5] builtin/am: introduce write_state_*() helper functions Junio C Hamano
2015-08-24 17:09               ` [PATCH 2/5] builtin/am: make sure state files are text Junio C Hamano
2015-08-24 17:09               ` [PATCH 3/5] write_file(): introduce an explicit WRITE_FILE_GENTLY request Junio C Hamano
2015-08-24 18:41                 ` Junio C Hamano
2015-08-25 10:08                   ` Duy Nguyen
2015-08-25 10:30                     ` [PATCH] setup: update the right file in multiple checkouts Nguyễn Thái Ngọc Duy
2015-08-25 16:38                       ` Junio C Hamano
2015-08-31 10:29                         ` Duy Nguyen
2015-08-24 17:09               ` [PATCH 4/5] write_file(): do not leave incomplete line at the end Junio C Hamano
2015-08-24 17:09               ` [PATCH 5/5] write_file(): clean up transitional mess of flag words and terminating LF Junio C Hamano
2015-08-24 17:41               ` [PATCH 0/5] "am" state file fix with write_file() clean-up Jeff King
2015-08-24 18:15                 ` Junio C Hamano
2015-08-24 18:35                   ` Jeff King
2015-08-24 19:57                     ` Junio C Hamano [this message]
2015-08-24 20:58                       ` [PATCH v2 0/6] " Junio C Hamano
2015-08-24 20:58                         ` [PATCH v2 1/6] builtin/am: introduce write_state_*() helper functions Junio C Hamano
2015-08-24 20:58                         ` [PATCH v2 2/6] builtin/am: make sure state files are text Junio C Hamano
2015-08-24 23:55                           ` Jeff King
2015-08-25 16:19                             ` Junio C Hamano
2015-08-25 16:47                               ` Jeff King
2015-08-25 18:41                                 ` Junio C Hamano
2015-08-24 20:58                         ` [PATCH v2 3/6] write_file(): drop "fatal" parameter Junio C Hamano
2015-08-24 20:58                         ` [PATCH v2 4/6] write_file_v(): do not leave incomplete line at the end Junio C Hamano
2015-08-24 20:58                         ` [PATCH v2 5/6] write_file(): drop caller-supplied LF from calls to create a one-liner file Junio C Hamano
2015-08-24 20:58                         ` [PATCH v2 6/6] write_file(): drop caller-supplied LF from multi-line file Junio C Hamano
2015-08-25  0:02                         ` [PATCH v2 0/6] "am" state file fix with write_file() clean-up Jeff King
2015-08-24 23:36     ` [PATCH] am: terminate state files with a newline brian m. carlson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqzj1g31e5.fsf@gitster.dls.corp.google.com \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=peff@peff.net \
    --cc=pyokagan@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.