[PATCH 0 of 5] isolate configuration of subrepos

Simon Heimberg simohe at besonet.ch
Thu Oct 4 22:02:57 CDT 2012


Subrepos get the configuration of the parent repo in several places. 
This happens because the "normal" ui is passed to the subrepo. This ui 
(which is passed around by the commands) is the same as repo.ui and 
contains repo specific configuration.

When the patch [1 of 4 V2]* of FUJIWARA Katsunori and patches 4 and 5 of 
this series are applied, this does not happen anymore. No hooks from 
containing repos will run anymore. issue2904 will be fixed.


The patch of FUJIWARA Katsunori creates the subrepo with repo.baseui and 
copies ui.commitsubrepos to the subrepo (with option to copy more 
configuration). This patch is better than my version of the same change, 
so I do not send this.

[Patch 4] calls hg.peer with repo instead of ui wherever a repo is around.
(hg.peer uses the configuration from repo.baseui when it gets a repo.)

[Pacht 5] handles the calls of hg.peer where a repo only is sometimes 
available. repo is passed when it is not null, else ui is passed. This is 
save because no configuration of a repo is included in the ui if there is 
no repo. (Almost a tautology...)


Patches 1-3 are for testing and finding the places to fix.

[Patch 1] extends a test with checking isolation of subrepo configuration. 
This is done by creating hooks in the repo and subrepo. This patch will 
probably conflict with the one form FUJIWARA Katsunori which also contains 
a test expansion. Any will do.

[Patch 2] introduces a warning message when a ui from a repository is 
passed to peer. This was the problem occurring most often. The message would 
show up also in normal running, so extension developer will also be warned. 
And in the test suite this should catch the cases test-subrepo.t leaves out. 
(Introducing this popped up many failures and it took a long time for 
rewriting the patch series.) Because every user would see the warning (only 
when there would be a wrong ui again) the message is kept short.

[Patch 3] extends the warning message when ui.debug is enabled. It appends 
a stacktrace helping the developer to locate the source of the wrong ui 
instance.



* Patch is in Email from FUJIWARA Katsunori with subject:
[PATCH 1 of 4 V2] subrepo: isolate configuration between each repositories in subrepo tree


More information about the Mercurial-devel mailing list