[PATCH 3 of 3 RFC] import: add new --faithful flag to use metadata but relax checks

Kevin Bullock kbullock+mercurial at ringworld.org
Tue Mar 29 10:23:05 EDT 2016


> On Mar 27, 2016, at 13:16, Pierre-Yves David <pierre-yves.david at ens-lyon.org> wrote:
> 
> On 03/11/2016 01:12 PM, Augie Fackler wrote:
>> On Fri, Mar 11, 2016 at 3:11 PM, Pierre-Yves David
>> <pierre-yves.david at ens-lyon.org> wrote:
>>> 
>>> 
>>> On 03/11/2016 06:25 PM, Augie Fackler wrote:
>>>> 
>>>> # HG changeset patch
>>>> # User Augie Fackler <augie at google.com>
>>>> # Date 1457539063 18000
>>>> #      Wed Mar 09 10:57:43 2016 -0500
>>>> # Node ID 7d53477e4496e8f2b16b12ed445407e79bbb787b
>>>> # Parent  602504c64084d85820c883a43b02951a61e992f5
>>>> # EXP-Topic import
>>>> import: add new --faithful flag to use metadata but relax checks
>>>> 
>>>> Sometimes it's helpful to import a patch with as much of the metadata
>>>> (especially parents) intact as possible, but some bit of extra didn't
>>>> make the trip through the exported patch. This gives users a tool to
>>>> preserve as much metadata as possible without having to get an exact
>>>> byte-for-byte match on the import process.
>>> 
>>> 
>>> In my opinion, the key part here is to:
>>> 1) bypass working copy
>>> 2) use the parent informations
> 
> I'm not sure we should automatically turn the bypassing here. Having a flag that make sure a patch is applied on parent.
> 
> (On the same "perpendicular" but important topic, there is the question of updating on the result or not).
> 
>>> I would rather see a name related to parents that "faithful". I don't
>>> "faithful" is very explicite and it mostly make sense in regards with
>>> --exact.
>> 
>> I'm not in love with the name "faithful", so I'd love constructive
>> suggestions about what we could name the flag.
> 
> The important part here is the fact we read and use the parent information in the patch. So I think having "parent" in the name make sense:
> 
>  --originalparents
>  --useparents
>  --onparents
>  --parents
>  --onorigin
> 
> I think --useparents is my favorite but I don't have a strong opinion.

It seems like we have three classes of metadata here:

1. user, date, description, branch name - always imported, no problems here
2. node id + original parent (others?) - can be used as hints in importing
3. extra data that is part of the commit hash but not the patch - causes problems with --exact

For the sake of completeness, though it's probably a bad idea: Would it be reasonable to make --exact behave like your new flag instead? When --exact first appeared there were fewer things that wrote into extra, thus fewer ways that an export could fail to exactly represent a commit. (transplant_source notably dates from before import --exact.)

pacem in terris / мир / शान्ति / ‎‫سَلاَم‬ / 平和
Kevin R. Bullock



More information about the Mercurial-devel mailing list