Tue, 26 Sep 2017 03:56:20 -0700 dirstate: move parents source of truth to dirstatemap
Durham Goode <durham@fb.com> [Tue, 26 Sep 2017 03:56:20 -0700] rev 34339
dirstate: move parents source of truth to dirstatemap As part of moving dirstate storage to its own class, let's move the source of truth for the dirstate parents to dirstatemap. This requires that dirstate._pl no longer be a cache, and that all sets go through dirstatemap.setparents. Differential Revision: https://phab.mercurial-scm.org/D759
Tue, 26 Sep 2017 03:56:20 -0700 dirstate: move parent reading to the dirstatemap class
Durham Goode <durham@fb.com> [Tue, 26 Sep 2017 03:56:20 -0700] rev 34338
dirstate: move parent reading to the dirstatemap class As part of moving dirstate storage logic to a separate class, let's move the function that reads the parents from the file. This will allow extensions to write dirstate's that store the parents in other ways. Differential Revision: https://phab.mercurial-scm.org/D758
Tue, 26 Sep 2017 03:56:20 -0700 dirstate: move opendirstatefile to dirstatemap
Durham Goode <durham@fb.com> [Tue, 26 Sep 2017 03:56:20 -0700] rev 34337
dirstate: move opendirstatefile to dirstatemap As part of moving the dirstate storage logic to another class, let's move opendirstatefile to dirstatemap. This will allow extensions to replace the pending abstraction. Future patches will move the consumers of _opendirstatefile into dirstatemap as well. Differential Revision: https://phab.mercurial-scm.org/D757
Tue, 26 Sep 2017 03:56:20 -0700 dirstate: move _copymap to dirstatemap
Durham Goode <durham@fb.com> [Tue, 26 Sep 2017 03:56:20 -0700] rev 34336
dirstate: move _copymap to dirstatemap As part of moving all dirstate storage to a new class, let's move the copymap onto that class. In a future patch this will let us move the read/write functions to the dirstatemap class, and for extensions this lets us replace the copy storage with alternative storage. Differential Revision: https://phab.mercurial-scm.org/D756
Tue, 26 Sep 2017 03:56:20 -0700 dirstate: move _dirs to dirstatemap
Durham Goode <durham@fb.com> [Tue, 26 Sep 2017 03:56:20 -0700] rev 34335
dirstate: move _dirs to dirstatemap As part of moving the dirstate storage logic to a new class, lets move the _dirs computation onto the class so extensions can replace it with a persisted index of directories. Differential Revision: https://phab.mercurial-scm.org/D755
Tue, 26 Sep 2017 03:56:20 -0700 dirstate: move filefoldmap to dirstatemap
Durham Goode <durham@fb.com> [Tue, 26 Sep 2017 03:56:20 -0700] rev 34334
dirstate: move filefoldmap to dirstatemap As part of moving the dirstate storage logic to a separate class, lets move the filfoldmap computation to that class. This will allow extensions to replace the dirstate storage with something that persists the filefoldmap. Differential Revision: https://phab.mercurial-scm.org/D754
Tue, 26 Sep 2017 03:56:20 -0700 dirstate: move nonnormalentries to dirstatemap
Durham Goode <durham@fb.com> [Tue, 26 Sep 2017 03:56:20 -0700] rev 34333
dirstate: move nonnormalentries to dirstatemap As part of moving dirstate storage to its own class, let's move the nonnormalentries logic onto the dirstatemap class. This will let extensions replace the nonnormalentries logic with a persisted cache. Differential Revision: https://phab.mercurial-scm.org/D753
Tue, 26 Sep 2017 03:56:20 -0700 dirstate: create new dirstatemap class
Durham Goode <durham@fb.com> [Tue, 26 Sep 2017 03:56:20 -0700] rev 34332
dirstate: create new dirstatemap class This is part of a larger refactor to move the dirstate storage logic to a separate class, so it's easier to rewrite the dirstate storage layer without having to rewrite all the algorithms as well. Step one it to create the class, and replace dirstate._map with it. The abstraction bleeds through in a few places where the main dirstate class has to access self._map._map, but those will be cleaned up in future patches. Differential Revision: https://phab.mercurial-scm.org/D752
Fri, 29 Sep 2017 15:49:43 +0000 style: always use `x is not None` instead of `not x is None`
Alex Gaynor <agaynor@mozilla.com> [Fri, 29 Sep 2017 15:49:43 +0000] rev 34331
style: always use `x is not None` instead of `not x is None` Differential Revision: https://phab.mercurial-scm.org/D842
Sun, 24 Apr 2016 18:41:23 +0900 templatekw: add new-style template expansion to {manifest}
Yuya Nishihara <yuya@tcha.org> [Sun, 24 Apr 2016 18:41:23 +0900] rev 34330
templatekw: add new-style template expansion to {manifest} The goal is to allow us to easily access to nested data. The dot operator will be introduced later so we can write '{p1.files}' instead of '{revset("p1()") % "{files}"}' for example. In the example above, 'p1' needs to carry a mapping dict along with its string representation. If it were a list or a dict, it could be wrapped semi-transparently with the _hybrid class, but for non-list/dict types, it would be difficult to proxy all necessary functions to underlying value type because several core operations may conflict with the ones of the underlying value: - hash(value) should be different from hash(wrapped(value)), which means dict[wrapped(value)] would be invalid - 'value == wrapped(value)' would be false, breaks 'ifcontains' - len(wrapped(value)) may be either len(value) or len(iter(wrapped(value))) So the wrapper has no proxy functions and its scope designed to be minimal. It's unwrapped at eval*() functions so we don't have to care for a wrapped object unless it's really needed: # most template functions just call evalfuncarg() unwrapped_value = evalfuncarg(context, mapping, args[n]) # if wrapped value is needed, use evalrawexp() maybe_wrapped_value = evalrawexp(context, mapping, args[n]) Another idea was to wrap every template variable with a tagging class, but which seemed uneasy without a static type checker. This patch updates {manifest} to a mappable as an example.
(0) -30000 -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 +10000 tip