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

Re: [PATCH 2/5] fast-import: support 'encoding' commit header

From
Elijah Newren <newren@gmail.com>
Date
Apr 26, 2019, 11:39 UTC
Message-ID
<CABPp-BHwyKJuRbYt65HXwLf-AxHRXOr1LMP0WbeSFc05sJVBVQ@mail.gmail.com>
In-Reply-To
<CAPig+cRaOAX+Yap+SiPjEoPRcH9z5qTHV6KPGGwN2LfPfxyA8Q@mail.gmail.com>
Hi Eric,
On Thu, Apr 25, 2019 at 1:37 PM Eric Sunshine <sunshine@sunshineco.com> wrote:
Show 37 quoted lines
>
> On Thu, Apr 25, 2019 at 11:51 AM Elijah Newren <newren@gmail.com> wrote:
> > Since git supports commit messages with an encoding other than utf-8,
> > allow fast-import to import such commits.  This may be useful for folks
> > who do not want to reencode commit messages from an external system, and
> > may also be useful to achieve reversible history rewrites (e.g. sha1sum
> > <-> sha256sum transitions or subtree work) with git repositories that
> > have used specialized encodings in their commit history.
> >
> > Signed-off-by: Elijah Newren <newren@gmail.com>
> > ---
> > diff --git a/fast-import.c b/fast-import.c
> > @@ -2607,6 +2608,9 @@ static void parse_new_commit(const char *arg)
> >         if (!committer)
> >                 die("Expected committer but didn't get one");
> > +       if (skip_prefix(command_buf.buf, "encoding ", &encoding)) {
> > +               read_next_command();
> > +       }
>
> Style nit: unnecessary braces
>
> > @@ -2670,9 +2674,13 @@ static void parse_new_commit(const char *arg)
> >         strbuf_addf(&new_data,
> >                 "author %s\n"
> > -               "committer %s\n"
> > -               "\n",
> > +               "committer %s\n",
> >                 author ? author : committer, committer);
> > +       if (encoding)
> > +               strbuf_addf(&new_data,
> > +                       "encoding %s\n",
> > +                       encoding);
> > +       strbuf_addf(&new_data, "\n");
>
> Alternately:
>
>     strbuf_addch(&new_data, '\n');

Thanks for taking a look. I'll fix both of these items you highlighted and the test_config item you pointed out in 1/5 in the next re-roll.

Show 11 quoted lines
> > diff --git a/t/t9300-fast-import.sh b/t/t9300-fast-import.sh
> > @@ -3299,4 +3299,24 @@ test_expect_success !MINGW 'W: get-mark & empty orphan commit with erroneous thi
> > +test_expect_success 'X: handling encoding' '
> > +       test_tick &&
> > +       [...]
> > +       git cat-file -p encoding | grep $(printf "\360") &&
> > +       git log -1 --format=%B encoding | grep $(printf "\317\200")
>
> This script is already full of instances of Git commands upstream of
> pipes, so this usage is consistent (despite recent work to eliminate
> such situations). Okay.
Previous: Eric SunshineNext: Elijah Newren
Message 7 of 13 in “Fix and extend encoding handling in fast export/import”
  1. 0/5 Fix and extend encoding handling in fast export/importElijah Newren, Apr 25, 2019
  2. 1/5 t9350: fix encoding test to actually test reencodingElijah Newren, Apr 25, 2019
  3. Eric SunshineApr 25, 2019
  4. Junio C HamanoApr 26, 2019
  5. 2/5 fast-import: support 'encoding' commit headerElijah Newren, Apr 25, 2019
  6. Eric SunshineApr 25, 2019
  7. Elijah NewrenApr 26, 2019
  8. 3/5 fast-export: avoid stripping encoding header if we cannot reencodeElijah Newren, Apr 25, 2019
  9. 5/5 fast-export: do automatic reencoding of commit messages only if requestedElijah Newren, Apr 25, 2019
  10. 4/5 fast-export: differentiate between explicitly utf-8 and implicitly utf-8Elijah Newren, Apr 25, 2019
  11. Elijah NewrenApr 25, 2019
  12. Elijah NewrenApr 25, 2019
  13. brian m. carlsonApr 26, 2019

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.