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

Re: [PATCH 2/5] fast-import: don't fail on omitted committer name

From
Dmitry Ivankov <divanorama@gmail.com>
Date
Aug 2, 2011, 17:07 UTC
Message-ID
<CA+gfSn-15+z+PYhFH6=RQF7HKC7i_1p=fyJqtepv3xPdUnTVdQ@mail.gmail.com>
In-Reply-To
<7voc07g3fr.fsf@alter.siamese.dyndns.org>
On Tue, Aug 2, 2011 at 10:53 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 6 quoted lines
> Dmitry Ivankov <divanorama@gmail.com> writes:
>
>> fast-import format declares 'committer_name SP' to be optional. But SP
>> between empty or not name and a email is obligatory and checked by
>
> Sorry, cannot parse this.

Ok, the point is fast-import input format for identities is declared to be '(name SP)? LT email GT' (followed by a datetime) where name and email are allowed to be empty (and should not have LF, LT, GT characters). While git-fsck checks identities to be in form 'name SP LT email GT' (followed by a datetime) where name and email are allowed to be empty (and should not have LF, LT, GT characters). So fast-import must prepend a space if the name part is omitted. This patch makes it do so.

Show 45 quoted lines
>
>> git-fsck, so fast-import must prepend the SP if the name is omitted.
>> Currently it doesn't.
>>
>> Name cannot contain LT or GT and ident always comes after SP in
>> fast-import. So reuse that SP as if a valid 'SP <email>' ident was passed.
>>
>> This fixes a ident parsing bug for a well-formed fast-import input.
>> Though the parsing is still loose and can accept a ill-formed input.
>>
>> Signed-off-by: Dmitry Ivankov <divanorama@gmail.com>
>> ---
>>  fast-import.c          |    4 ++++
>>  t/t9300-fast-import.sh |    2 +-
>>  2 files changed, 5 insertions(+), 1 deletions(-)
>>
>> diff --git a/fast-import.c b/fast-import.c
>> index 9e8d186..3194f4e 100644
>> --- a/fast-import.c
>> +++ b/fast-import.c
>> @@ -1972,6 +1972,10 @@ static char *parse_ident(const char *buf)
>>       size_t name_len;
>>       char *ident;
>>
>> +     /* ensure there is a space delimiter even if there is no name */
>> +     if (*buf == '<')
>> +             --buf;
>> +
>>       gt = strrchr(buf, '>');
>>       if (!gt)
>>               die("Missing > in ident string: %s", buf);
>> diff --git a/t/t9300-fast-import.sh b/t/t9300-fast-import.sh
>> index a659dd4..09ef6ba 100755
>> --- a/t/t9300-fast-import.sh
>> +++ b/t/t9300-fast-import.sh
>> @@ -352,7 +352,7 @@ data <<COMMIT
>>  empty commit
>>  COMMIT
>>  INPUT_END
>> -test_expect_failure 'B: accept and fixup committer with no name' '
>> +test_expect_success 'B: accept and fixup committer with no name' '
>>       git fast-import <input &&
>>       out=$(git fsck) &&
>>       echo "$out" &&
>
Previous: Junio C HamanoNext: Dmitry Ivankov
Message 5 of 11 in “fixes for committer/author parsing/check”
  1. 0/5 fixes for committer/author parsing/checkDmitry Ivankov, Jul 28, 2011
  2. 1/5 fast-import: add input format testsDmitry Ivankov, Jul 28, 2011
  3. 2/5 fast-import: don't fail on omitted committer nameDmitry Ivankov, Jul 28, 2011
  4. Junio C HamanoAug 2, 2011
  5. Dmitry IvankovAug 2, 2011
  6. 3/5 fast-import: check committer name more strictlyDmitry Ivankov, Jul 28, 2011
  7. Junio C HamanoAug 2, 2011
  8. 4/5 fsck: add a few committer name testsDmitry Ivankov, Jul 28, 2011
  9. 5/5 fsck: improve committer/author checkDmitry Ivankov, Jul 28, 2011
  10. Junio C HamanoAug 2, 2011
  11. Dmitry IvankovAug 2, 2011

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.