On Fri, Feb 10, 2017 at 01:07:49PM -0800, Jun Wu wrote: > Side-effects are basically everything related to writes, like mutating > (wrapping) internal Python objects, etc. They are done by Python code > provided by an extension out of core's control. Usually that means > reposetup, uisetup, etc.
Usually, but not always - I've seen many extensions that call wrapfunction or similar outside of {repo,ui}setup. > > Reading things is fine - loading configs, changelog.i, obsstore, etc. as > long as no malicious extension changes the loading logic. Currently for chg > to work correctly, this assumption must be true. > > The difference of the above two is whether we can revert the effects. For > objects loaded by reading certain things, once we discard the object, the > effect is considered reverted. But for things like x.__class__ = y; > extensions.wrapfoo(...), etc., they are basically impossible to revert > cleanly (confidently). So we avoid them at all costs. I'm having trouble wrapping my head around this series in a useful way - should we defer it to the sprint, or do you want to try and explain the arc of this a little more in a v2 with more details in the first commit message as to what you mean by side effects and what the expected boundary between these components is? (I'm specifically a little perplexed by the inheritance relationship to avoid side effects, I just can't quite get my head around it.) > > > Excerpts from Kevin Bullock's message of 2017-02-10 14:53:22 -0600: > > > On Feb 9, 2017, at 19:46, Jun Wu <qu...@fb.com> wrote: > > > > > > # HG changeset patch > > > # User Jun Wu <qu...@fb.com> > > > # Date 1486675034 28800 > > > # Thu Feb 09 13:17:14 2017 -0800 > > > # Node ID 5e47a19fae82f4659f1e7df37f8f26dd56c4f246 > > > # Parent 2c1834e1e6b5f734c27199d47de9b2252b8f4913 > > > # Available At https://bitbucket.org/quark-zju/hg-draft > > > # hg pull https://bitbucket.org/quark-zju/hg-draft -r > > > 5e47a19fae82 > > > localrepo: move ui loading to baselocalrepository > > > > I can't quite say exactly why, but it surprised me that you're loading the > > repo's hgrc in the "side-effect-free" base class. We're not loading > > extensions, but the hgrc can maybe do other things that could be > > considered "side effects". > > > > It's a vague request I know, but could you tell us a little bit more about > > what specific "side effects" get in the way of your chg work, and maybe > > why other things in the config won't cause problems? > > > > pacem in terris / мир / शान्ति / سَلاَم / 平和 Kevin R. > > Bullock > _______________________________________________ > Mercurial-devel mailing list > Mercurial-devel@mercurial-scm.org > https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel