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

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

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Apr 25, 2019, 19:36 UTC
Message-ID
<CAPig+cRaOAX+Yap+SiPjEoPRcH9z5qTHV6KPGGwN2LfPfxyA8Q@mail.gmail.com>
In-Reply-To
<20190425155118.7918-3-newren@gmail.com>
On Thu, Apr 25, 2019 at 11:51 AM Elijah Newren <newren@gmail.com> wrote:
Show 16 quoted lines
> 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
Show 12 quoted lines
> @@ -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');
Show 7 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: Elijah NewrenNext: Elijah Newren
Message 6 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.