CONTRIBUTORS
author Gregory Szorc <gregory.szorc@gmail.com>
Wed, 21 Mar 2018 19:48:36 -0700
changeset 37183 0dfb5672f015
parent 5514 c29efd272395
permissions -rw-r--r--
repository: define interface for local repositories Per discussions on the mailing list and at the 4.4 and 4.6 sprints, we want to start defining interfaces for local repository primitives so that we a) have a better idea of what the formal interface for various types is b) can more easily introduce alternate implementations of various components (e.g. in Rust). We have previously implemented interfaces that declare the peer and wire protocol APIs using the abc module. This commit introduces a monolithic interface for the localrepository class. It uses zope.interface - not abc - for defining and declaring the interface. The newly defined "completelocalrepository" interface is objectively horrible. It is based on what is actually in localrepository and doesn't represent a reasonable interface definition IMO. There's lots of... unwanted garbage in the interface. In other words, it reflects the horrible state of the localrepository "god object." But this is fine: a goal of this commit is to get the interface defined so that we have an interface. Future commits can refactor the interface into sub-interfaces, remove unwanted public attributes, etc. I attempted to define reasonable docstrings for the various interface members. But there are so many of them and I didn't know what some are used for. So I was lazy in a number of places and didn't write docstrings or detailed usage docs. Also, the members of the interface are defined in the order they are declared in localrepo.py. This revealed that the grouping of things in localrepo.py is... odd. The localrepository class now declares that it implements our newly defined interface. Unlike abc, zope.interface doesn't check interface conformance at type creation time (abc uses __metaclass__ magic to validate interface conformance when a type is created - usually at module import time). It does provide some functions for validating class and object conformance with declared interfaces. We add these checks to test-check-interfaces.py. We /could/ validate at run-time. But we hold off for now. (I'm a bit scared of doing that because of the various ways extensions monkeypatch repo instances.) After this commit, test-check-interfaces.py will fail if the set of public attributes on the localrepository class or instances change without corresponding updates to the interface. This is by design. Differential Revision: https://phab.mercurial-scm.org/D2933
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5514
c29efd272395 Add note to CONTRIBUTORS file
Matt Mackall <mpm@selenic.com>
parents: 2947
diff changeset
     1
[This file is here for historical purposes, all recent contributors
c29efd272395 Add note to CONTRIBUTORS file
Matt Mackall <mpm@selenic.com>
parents: 2947
diff changeset
     2
should appear in the changelog directly]
c29efd272395 Add note to CONTRIBUTORS file
Matt Mackall <mpm@selenic.com>
parents: 2947
diff changeset
     3
c29efd272395 Add note to CONTRIBUTORS file
Matt Mackall <mpm@selenic.com>
parents: 2947
diff changeset
     4
Andrea Arcangeli <andrea at suse.de>
519
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
     5
Thomas Arendsen Hein <thomas at intevation.de>
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
     6
Goffredo Baroncelli <kreijack at libero.it>
756
5d79dfa5e98f Added new code contributors, fixed Vincent's name, added hint on encoding.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 594
diff changeset
     7
Muli Ben-Yehuda <mulix at mulix.org>
5d79dfa5e98f Added new code contributors, fixed Vincent's name, added hint on encoding.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 594
diff changeset
     8
Mikael Berthe <mikael at lilotux.net>
1450
199bb2b4ed4a Add Benoit to CONTRIBUTORS
Matt Mackall <mpm@selenic.com>
parents: 1310
diff changeset
     9
Benoit Boissinot <bboissin at gmail.com>
2947
2d865068f72e Add self to contributors
Brendan Cully <brendan@kublai.com>
parents: 2162
diff changeset
    10
Brendan Cully <brendan at kublai.com>
519
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
    11
Vincent Danjean <vdanjean.ml at free.fr>
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
    12
Jake Edge <jake at edge2.net>
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
    13
Michael Fetterman <michael.fetterman at intel.com>
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
    14
Edouard Gomez <ed.gomez at free.fr>
1231
effff847870f CONTRIBUTORS update
mpm@selenic.com
parents: 1080
diff changeset
    15
Eric Hopper <hopper at omnifarious.org>
756
5d79dfa5e98f Added new code contributors, fixed Vincent's name, added hint on encoding.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 594
diff changeset
    16
Alecs King <alecsk at gmail.com>
1310
7e8a55c9ee5c Updated CONTRIBUTORS.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1231
diff changeset
    17
Volker Kleinfeld <Volker.Kleinfeld at gmx.de>
519
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
    18
Vadim Lebedev <vadim at mbdsys.com>
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
    19
Christopher Li <hg at chrisli.org>
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
    20
Chris Mason <mason at suse.com>
2162
dac432a521d8 Add self to CONTRIBUTORS
Colin McMillen <mcmillen@cs.cmu.edu>
parents: 2120
diff changeset
    21
Colin McMillen <mcmillen at cs.cmu.edu>
1080
253072f39205 Updated list of contributors.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 896
diff changeset
    22
Wojciech Milkowski <wmilkowski at interia.pl>
756
5d79dfa5e98f Added new code contributors, fixed Vincent's name, added hint on encoding.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 594
diff changeset
    23
Chad Netzer <chad.netzer at gmail.com>
519
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
    24
Bryan O'Sullivan <bos at serpentine.com>
756
5d79dfa5e98f Added new code contributors, fixed Vincent's name, added hint on encoding.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 594
diff changeset
    25
Vicent SeguĂ­ Pascual <vseguip at gmail.com>
5d79dfa5e98f Added new code contributors, fixed Vincent's name, added hint on encoding.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 594
diff changeset
    26
Sean Perry <shaleh at speakeasy.net>
594
0a2ffc5c906b Update CONTRIBUTORS
mpm@selenic.com
parents: 519
diff changeset
    27
Nguyen Anh Quynh <aquynh at gmail.com>
1310
7e8a55c9ee5c Updated CONTRIBUTORS.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1231
diff changeset
    28
Ollivier Robert <roberto at keltia.freenix.fr>
2120
c0994047c5ff Added my name to the contributors list.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents: 1450
diff changeset
    29
Alexander Schremmer <alex at alexanderweb.de>
519
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
    30
Arun Sharma <arun at sharma-home.net>
1231
effff847870f CONTRIBUTORS update
mpm@selenic.com
parents: 1080
diff changeset
    31
Josef "Jeff" Sipek <jeffpc at optonline.net>
1310
7e8a55c9ee5c Updated CONTRIBUTORS.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1231
diff changeset
    32
Kevin Smith <yarcs at qualitycode.com>
1231
effff847870f CONTRIBUTORS update
mpm@selenic.com
parents: 1080
diff changeset
    33
TK Soh <teekaysoh at yahoo.com>
519
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
    34
Radoslaw Szkodzinski <astralstorm at gorzow.mm.pl>
851
73a432c8040a Added Samuel Tardieu to contributors list.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 760
diff changeset
    35
Samuel Tardieu <sam at rfc1149.net>
519
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
    36
K Thananchayan <thananck at yahoo.com>
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
    37
Andrew Thompson <andrewkt at aktzero.com>
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
    38
Michael S. Tsirkin <mst at mellanox.co.il>
50768efaf6f2 Add a CONTRIBUTORS file
mpm@selenic.com
parents:
diff changeset
    39
Rafael Villar Burke <pachi at mmn-arquitectos.com>
855
a107c64c76be Added Tristan Wibberley to contributors.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 851
diff changeset
    40
Tristan Wibberley <tristan at wibberley.org>
756
5d79dfa5e98f Added new code contributors, fixed Vincent's name, added hint on encoding.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 594
diff changeset
    41
Mark Williamson <mark.williamson at cl.cam.ac.uk>