D6183: copies: add config option for writing copy metadata to file and/or changset

Yuya Nishihara yuya at tcha.org
Sun Apr 14 19:01:28 EDT 2019


>   > >   >  extras field. Almost all extras data are texts, and IIRC we regret that
>   > >   >  transplant sources are stored in binary form.
>   > >   
>   > >   Why not? I picked \0 and \n because they won't appear in filenames, so it's convenient in that way.
>   >
>   > I don't remember, but we do store even boolean value as text, not in binary
>   >  `\0`/`\1` form. `transplant_source` is the solo exception.
>   
>   
>   Perhaps it's just so `{extras}` doesn't print ANSI escape codes and such? (I assume that can still happen if put escape characters in your filenames, for example.)

Ok. That might be the reason, and I'm fine with the `\0` separator.

>   > https://www.mercurial-scm.org/wiki/ChangesetExtra
>   > 
>   > And if we pick \0/\n separators, _string_escape() wouldn't be needed
>   >  at the encodecopies() layer.
>   
>   Oh, now I see what you're saying! That's embarrassing. So maybe we should `_string_escape()` the whole thing? I'll do that.

Not really. I meant `_string_escape()` could be removed entirely if we store
copies in binary (valid_filename + invalid_filename_separator) form. The extra
dict will be encoded later.


More information about the Mercurial-devel mailing list