obsolete: store user name and note in UTF-8 (issue5754) (BC)
Before, user names were stored in local encoding and transferred across
repositories, which made it impossible to restore non-ASCII user names on
different platforms. This patch fixes new markers to be encoded in UTF-8
and decoded back to local encoding when displaying. Existing markers are
unfixable so they may result in mojibake.
I don't like the API that requires metadata dict to be UTF-8 encoded, which
is a source of bugs, but there's no abstraction layer to process the encoding
thingy efficiently. So we apply the same rule as extras dict to obsstore
metadata.
$ . "$TESTDIR/narrow-library.sh"
$ hg init repo
$ cd repo
$ cat << EOF > .hg/narrowspec
> [includes]
> path:foo
> [excludes]
> EOF
$ echo treemanifest >> .hg/requires
$ echo narrowhg-experimental >> .hg/requires
$ mkdir -p foo/bar
$ echo b > foo/f
$ echo c > foo/bar/f
$ hg commit -Am hi
adding foo/bar/f
adding foo/f
$ hg debugindex -m
rev linkrev nodeid p1 p2
0 0 14a5d056d75a 000000000000 000000000000
$ hg debugindex --dir foo
rev linkrev nodeid p1 p2
0 0 e635c7857aef 000000000000 000000000000
$ hg debugindex --dir foo/
rev linkrev nodeid p1 p2
0 0 e635c7857aef 000000000000 000000000000
$ hg debugindex --dir foo/bar
rev linkrev nodeid p1 p2
0 0 e091d4224761 000000000000 000000000000
$ hg debugindex --dir foo/bar/
rev linkrev nodeid p1 p2
0 0 e091d4224761 000000000000 000000000000
$ hg debugdata -m 0
foo\x00e635c7857aef92ac761ce5741a99da159abbbb24t (esc)
$ hg debugdata --dir foo 0
bar\x00e091d42247613adff5d41b67f15fe7189ee97b39t (esc)
f\x001e88685f5ddec574a34c70af492f95b6debc8741 (esc)
$ hg debugdata --dir foo/ 0
bar\x00e091d42247613adff5d41b67f15fe7189ee97b39t (esc)
f\x001e88685f5ddec574a34c70af492f95b6debc8741 (esc)
$ hg debugdata --dir foo/bar 0
f\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc)
$ hg debugdata --dir foo/bar/ 0
f\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc)