From: Jonathan Nieder <jrnieder@gmail.com>
To: Pete Wyckoff <pw@padd.com>
Cc: git@vger.kernel.org, Dmitry Ivankov <divanorama@gmail.com>,
David Barr <davidbarr@google.com>,
Sverre Rabbelier <srabbelier@gmail.com>,
Junio C Hamano <gitster@pobox.com>,
Johan Herland <johan@herland.net>
Subject: Re: [PATCHv2 2/2] fast-import: tighten parsing of mark references
Date: Wed, 4 Apr 2012 00:32:37 -0500 [thread overview]
Message-ID: <20120404053236.GA2460@burratino> (raw)
In-Reply-To: <20120404012037.GB4124@padd.com>
Pete Wyckoff wrote:
> jrnieder@gmail.com wrote on Tue, 03 Apr 2012 09:20 -0500:
>> Simpler:
>>
>> if (*p == ':') {
>> oe = find_mark(parse_mark_ref_space(p, &p));
>> hashcpy(sha1, oe->idx.sha1);
>> } else if ...
>
> Yes. I thought about just passing in plain old &p. Even though
> these approaches would work, it is a bit more difficult for
> novice C coders to read. Figured we should err on the side of
> helping future code readers. I can add more cleverness if you
> feel strongly.
It would be clearest with one argument, like so:
oe = find_mark(parse_mark_...(&p));
hashcpy(sha1, oe->idx.sha1);
[...]
> Insead of "Missing space after 'inline'", you'll get "Invalid
> SHA1". You misspelled "inline" with "inliness"? And would
> prefer to be told you provided an invalid SHA1?
It wasn't a great example, but what I meant is that if someone
asked me, a human, to parse
M 100644 foobar path/to/file
I would assume that foobar is a <dataref>. Likewise, for any
string baz in
M 100644 baz path/to/file
including strings that start with "inline", except for "inline"
itself.
To put it another way: checking for 'inline' at the start of a word as
a way to check for typos seems odd to me. We do not diagnose
M 100644 Inline path/to/file
as a misspelled version of "inline", nor
M 100644inline path/to/file
as an instance of a missing space character, and we shouldn't.
The goal in fast-import's behavior is usually predictability and
simplicity in terms of the mental model of the person writing a
frontend. Trying to guess the user's intention on malformed input
only takes away from that goal.
Why I care: if some day git permits other kinds of <dataref> (for
example if it supports refnames some day), I do not want datarefs
beginning with "inline" to be forbidden.
[...]
> There are two cases it handles: mark and sha1. The mark case
> uses the handy new parse_mark_ref_space(), which does the space
> checking. The sha1 branch had no check in this function. So
> I hoisted the space check up to make the branches symmetrical.
I think it's ok to sacrifice symmetry here, but:
[...]
> I would prefer just to inline the whole thing. Or new name
> parse_ls_dataref() if you have a preference.
if changing the behavior of the function that parses a treeish dataref
seems right, that's fine with me as long as its name or signature
changes.
For example, it could become
static struct object_entry *parse_treeish(const char **p);
Hope that helps,
Jonathan
next prev parent reply other threads:[~2012-04-04 5:33 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-01 22:54 [PATCH] fast-import: catch garbage after marks in from/merge Pete Wyckoff
2012-04-01 23:12 ` Jonathan Nieder
2012-04-02 0:13 ` Pete Wyckoff
2012-04-02 6:56 ` Dmitry Ivankov
2012-04-02 16:16 ` Junio C Hamano
2012-04-02 15:43 ` Jonathan Nieder
2012-04-02 16:15 ` Junio C Hamano
2012-04-03 1:51 ` [PATCHv2 0/2] fast-import: tighten parsing of mark references Pete Wyckoff
2012-04-03 1:51 ` [PATCHv2 1/2] fast-import: test behavior of garbage after " Pete Wyckoff
2012-04-03 14:00 ` Jonathan Nieder
2012-04-04 0:46 ` Pete Wyckoff
2012-04-04 5:43 ` Jonathan Nieder
2012-04-03 1:51 ` [PATCHv2 2/2] fast-import: tighten parsing of " Pete Wyckoff
2012-04-03 14:20 ` Jonathan Nieder
2012-04-04 1:20 ` Pete Wyckoff
2012-04-04 5:32 ` Jonathan Nieder [this message]
2012-04-03 2:00 ` [PATCHv2 0/2] " Sverre Rabbelier
2012-04-05 1:51 ` [PATCHv3] " Pete Wyckoff
2012-04-05 2:24 ` Jonathan Nieder
2012-04-05 17:20 ` Junio C Hamano
2012-04-07 22:59 ` [PATCHv4] fast-import: tighten parsing of datarefs Pete Wyckoff
2012-04-10 21:40 ` Junio C Hamano
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=20120404053236.GA2460@burratino \
--to=jrnieder@gmail.com \
--cc=davidbarr@google.com \
--cc=divanorama@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johan@herland.net \
--cc=pw@padd.com \
--cc=srabbelier@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).