##// END OF EJS Templates
interfaces: make `repository.ilocalrepositorymain` methods abstract...
Matt Harbison -
r53383:c0d9fda9 default
parent child Browse files
Show More
@@ -1752,15 +1752,19 class ilocalrepositorymain(Protocol):
1752 filecopiesmode: Any # TODO: add type hints
1752 filecopiesmode: Any # TODO: add type hints
1753 """The way files copies should be dealt with in this repo."""
1753 """The way files copies should be dealt with in this repo."""
1754
1754
1755 @abc.abstractmethod
1755 def close(self):
1756 def close(self):
1756 """Close the handle on this repository."""
1757 """Close the handle on this repository."""
1757
1758
1759 @abc.abstractmethod
1758 def peer(self, path=None):
1760 def peer(self, path=None):
1759 """Obtain an object conforming to the ``peer`` interface."""
1761 """Obtain an object conforming to the ``peer`` interface."""
1760
1762
1763 @abc.abstractmethod
1761 def unfiltered(self):
1764 def unfiltered(self):
1762 """Obtain an unfiltered/raw view of this repo."""
1765 """Obtain an unfiltered/raw view of this repo."""
1763
1766
1767 @abc.abstractmethod
1764 def filtered(self, name, visibilityexceptions=None):
1768 def filtered(self, name, visibilityexceptions=None):
1765 """Obtain a named view of this repository."""
1769 """Obtain a named view of this repository."""
1766
1770
@@ -1782,72 +1786,92 class ilocalrepositorymain(Protocol):
1782 narrowpats: Any # TODO: add type hints
1786 narrowpats: Any # TODO: add type hints
1783 """Matcher patterns for this repository's narrowspec."""
1787 """Matcher patterns for this repository's narrowspec."""
1784
1788
1789 @abc.abstractmethod
1785 def narrowmatch(self, match=None, includeexact=False):
1790 def narrowmatch(self, match=None, includeexact=False):
1786 """Obtain a matcher for the narrowspec."""
1791 """Obtain a matcher for the narrowspec."""
1787
1792
1793 @abc.abstractmethod
1788 def setnarrowpats(self, newincludes, newexcludes):
1794 def setnarrowpats(self, newincludes, newexcludes):
1789 """Define the narrowspec for this repository."""
1795 """Define the narrowspec for this repository."""
1790
1796
1797 @abc.abstractmethod
1791 def __getitem__(self, changeid):
1798 def __getitem__(self, changeid):
1792 """Try to resolve a changectx."""
1799 """Try to resolve a changectx."""
1793
1800
1801 @abc.abstractmethod
1794 def __contains__(self, changeid):
1802 def __contains__(self, changeid):
1795 """Whether a changeset exists."""
1803 """Whether a changeset exists."""
1796
1804
1805 @abc.abstractmethod
1797 def __nonzero__(self):
1806 def __nonzero__(self):
1798 """Always returns True."""
1807 """Always returns True."""
1799 return True
1808 return True
1800
1809
1801 __bool__ = __nonzero__
1810 __bool__ = __nonzero__
1802
1811
1812 @abc.abstractmethod
1803 def __len__(self):
1813 def __len__(self):
1804 """Returns the number of changesets in the repo."""
1814 """Returns the number of changesets in the repo."""
1805
1815
1816 @abc.abstractmethod
1806 def __iter__(self):
1817 def __iter__(self):
1807 """Iterate over revisions in the changelog."""
1818 """Iterate over revisions in the changelog."""
1808
1819
1820 @abc.abstractmethod
1809 def revs(self, expr, *args):
1821 def revs(self, expr, *args):
1810 """Evaluate a revset.
1822 """Evaluate a revset.
1811
1823
1812 Emits revisions.
1824 Emits revisions.
1813 """
1825 """
1814
1826
1827 @abc.abstractmethod
1815 def set(self, expr, *args):
1828 def set(self, expr, *args):
1816 """Evaluate a revset.
1829 """Evaluate a revset.
1817
1830
1818 Emits changectx instances.
1831 Emits changectx instances.
1819 """
1832 """
1820
1833
1834 @abc.abstractmethod
1821 def anyrevs(self, specs, user=False, localalias=None):
1835 def anyrevs(self, specs, user=False, localalias=None):
1822 """Find revisions matching one of the given revsets."""
1836 """Find revisions matching one of the given revsets."""
1823
1837
1838 @abc.abstractmethod
1824 def url(self):
1839 def url(self):
1825 """Returns a string representing the location of this repo."""
1840 """Returns a string representing the location of this repo."""
1826
1841
1842 @abc.abstractmethod
1827 def hook(self, name, throw=False, **args):
1843 def hook(self, name, throw=False, **args):
1828 """Call a hook."""
1844 """Call a hook."""
1829
1845
1846 @abc.abstractmethod
1830 def tags(self):
1847 def tags(self):
1831 """Return a mapping of tag to node."""
1848 """Return a mapping of tag to node."""
1832
1849
1850 @abc.abstractmethod
1833 def tagtype(self, tagname):
1851 def tagtype(self, tagname):
1834 """Return the type of a given tag."""
1852 """Return the type of a given tag."""
1835
1853
1854 @abc.abstractmethod
1836 def tagslist(self):
1855 def tagslist(self):
1837 """Return a list of tags ordered by revision."""
1856 """Return a list of tags ordered by revision."""
1838
1857
1858 @abc.abstractmethod
1839 def nodetags(self, node):
1859 def nodetags(self, node):
1840 """Return the tags associated with a node."""
1860 """Return the tags associated with a node."""
1841
1861
1862 @abc.abstractmethod
1842 def nodebookmarks(self, node):
1863 def nodebookmarks(self, node):
1843 """Return the list of bookmarks pointing to the specified node."""
1864 """Return the list of bookmarks pointing to the specified node."""
1844
1865
1866 @abc.abstractmethod
1845 def branchmap(self):
1867 def branchmap(self):
1846 """Return a mapping of branch to heads in that branch."""
1868 """Return a mapping of branch to heads in that branch."""
1847
1869
1870 @abc.abstractmethod
1848 def revbranchcache(self):
1871 def revbranchcache(self):
1849 pass
1872 pass
1850
1873
1874 @abc.abstractmethod
1851 def register_changeset(self, rev, changelogrevision):
1875 def register_changeset(self, rev, changelogrevision):
1852 """Extension point for caches for new nodes.
1876 """Extension point for caches for new nodes.
1853
1877
@@ -1856,112 +1880,146 class ilocalrepositorymain(Protocol):
1856 cache would be fragile when other revisions are accessed, too."""
1880 cache would be fragile when other revisions are accessed, too."""
1857 pass
1881 pass
1858
1882
1883 @abc.abstractmethod
1859 def branchtip(self, branchtip, ignoremissing=False):
1884 def branchtip(self, branchtip, ignoremissing=False):
1860 """Return the tip node for a given branch."""
1885 """Return the tip node for a given branch."""
1861
1886
1887 @abc.abstractmethod
1862 def lookup(self, key):
1888 def lookup(self, key):
1863 """Resolve the node for a revision."""
1889 """Resolve the node for a revision."""
1864
1890
1891 @abc.abstractmethod
1865 def lookupbranch(self, key):
1892 def lookupbranch(self, key):
1866 """Look up the branch name of the given revision or branch name."""
1893 """Look up the branch name of the given revision or branch name."""
1867
1894
1895 @abc.abstractmethod
1868 def known(self, nodes):
1896 def known(self, nodes):
1869 """Determine whether a series of nodes is known.
1897 """Determine whether a series of nodes is known.
1870
1898
1871 Returns a list of bools.
1899 Returns a list of bools.
1872 """
1900 """
1873
1901
1902 @abc.abstractmethod
1874 def local(self):
1903 def local(self):
1875 """Whether the repository is local."""
1904 """Whether the repository is local."""
1876 return True
1905 return True
1877
1906
1907 @abc.abstractmethod
1878 def publishing(self):
1908 def publishing(self):
1879 """Whether the repository is a publishing repository."""
1909 """Whether the repository is a publishing repository."""
1880
1910
1911 @abc.abstractmethod
1881 def cancopy(self):
1912 def cancopy(self):
1882 pass
1913 pass
1883
1914
1915 @abc.abstractmethod
1884 def shared(self):
1916 def shared(self):
1885 """The type of shared repository or None."""
1917 """The type of shared repository or None."""
1886
1918
1919 @abc.abstractmethod
1887 def wjoin(self, f, *insidef):
1920 def wjoin(self, f, *insidef):
1888 """Calls self.vfs.reljoin(self.root, f, *insidef)"""
1921 """Calls self.vfs.reljoin(self.root, f, *insidef)"""
1889
1922
1923 @abc.abstractmethod
1890 def setparents(self, p1, p2):
1924 def setparents(self, p1, p2):
1891 """Set the parent nodes of the working directory."""
1925 """Set the parent nodes of the working directory."""
1892
1926
1927 @abc.abstractmethod
1893 def filectx(self, path, changeid=None, fileid=None):
1928 def filectx(self, path, changeid=None, fileid=None):
1894 """Obtain a filectx for the given file revision."""
1929 """Obtain a filectx for the given file revision."""
1895
1930
1931 @abc.abstractmethod
1896 def getcwd(self):
1932 def getcwd(self):
1897 """Obtain the current working directory from the dirstate."""
1933 """Obtain the current working directory from the dirstate."""
1898
1934
1935 @abc.abstractmethod
1899 def pathto(self, f, cwd=None):
1936 def pathto(self, f, cwd=None):
1900 """Obtain the relative path to a file."""
1937 """Obtain the relative path to a file."""
1901
1938
1939 @abc.abstractmethod
1902 def adddatafilter(self, name, fltr):
1940 def adddatafilter(self, name, fltr):
1903 pass
1941 pass
1904
1942
1943 @abc.abstractmethod
1905 def wread(self, filename):
1944 def wread(self, filename):
1906 """Read a file from wvfs, using data filters."""
1945 """Read a file from wvfs, using data filters."""
1907
1946
1947 @abc.abstractmethod
1908 def wwrite(self, filename, data, flags, backgroundclose=False, **kwargs):
1948 def wwrite(self, filename, data, flags, backgroundclose=False, **kwargs):
1909 """Write data to a file in the wvfs, using data filters."""
1949 """Write data to a file in the wvfs, using data filters."""
1910
1950
1951 @abc.abstractmethod
1911 def wwritedata(self, filename, data):
1952 def wwritedata(self, filename, data):
1912 """Resolve data for writing to the wvfs, using data filters."""
1953 """Resolve data for writing to the wvfs, using data filters."""
1913
1954
1955 @abc.abstractmethod
1914 def currenttransaction(self):
1956 def currenttransaction(self):
1915 """Obtain the current transaction instance or None."""
1957 """Obtain the current transaction instance or None."""
1916
1958
1959 @abc.abstractmethod
1917 def transaction(self, desc, report=None):
1960 def transaction(self, desc, report=None):
1918 """Open a new transaction to write to the repository."""
1961 """Open a new transaction to write to the repository."""
1919
1962
1963 @abc.abstractmethod
1920 def undofiles(self):
1964 def undofiles(self):
1921 """Returns a list of (vfs, path) for files to undo transactions."""
1965 """Returns a list of (vfs, path) for files to undo transactions."""
1922
1966
1967 @abc.abstractmethod
1923 def recover(self):
1968 def recover(self):
1924 """Roll back an interrupted transaction."""
1969 """Roll back an interrupted transaction."""
1925
1970
1971 @abc.abstractmethod
1926 def rollback(self, dryrun=False, force=False):
1972 def rollback(self, dryrun=False, force=False):
1927 """Undo the last transaction.
1973 """Undo the last transaction.
1928
1974
1929 DANGEROUS.
1975 DANGEROUS.
1930 """
1976 """
1931
1977
1978 @abc.abstractmethod
1932 def updatecaches(self, tr=None, full=False, caches=None):
1979 def updatecaches(self, tr=None, full=False, caches=None):
1933 """Warm repo caches."""
1980 """Warm repo caches."""
1934
1981
1982 @abc.abstractmethod
1935 def invalidatecaches(self):
1983 def invalidatecaches(self):
1936 """Invalidate cached data due to the repository mutating."""
1984 """Invalidate cached data due to the repository mutating."""
1937
1985
1986 @abc.abstractmethod
1938 def invalidatevolatilesets(self):
1987 def invalidatevolatilesets(self):
1939 pass
1988 pass
1940
1989
1990 @abc.abstractmethod
1941 def invalidatedirstate(self):
1991 def invalidatedirstate(self):
1942 """Invalidate the dirstate."""
1992 """Invalidate the dirstate."""
1943
1993
1994 @abc.abstractmethod
1944 def invalidate(self, clearfilecache=False):
1995 def invalidate(self, clearfilecache=False):
1945 pass
1996 pass
1946
1997
1998 @abc.abstractmethod
1947 def invalidateall(self):
1999 def invalidateall(self):
1948 pass
2000 pass
1949
2001
2002 @abc.abstractmethod
1950 def lock(self, wait=True):
2003 def lock(self, wait=True):
1951 """Lock the repository store and return a lock instance."""
2004 """Lock the repository store and return a lock instance."""
1952
2005
2006 @abc.abstractmethod
1953 def currentlock(self):
2007 def currentlock(self):
1954 """Return the lock if it's held or None."""
2008 """Return the lock if it's held or None."""
1955
2009
2010 @abc.abstractmethod
1956 def wlock(self, wait=True):
2011 def wlock(self, wait=True):
1957 """Lock the non-store parts of the repository."""
2012 """Lock the non-store parts of the repository."""
1958
2013
2014 @abc.abstractmethod
1959 def currentwlock(self):
2015 def currentwlock(self):
1960 """Return the wlock if it's held or None."""
2016 """Return the wlock if it's held or None."""
1961
2017
2018 @abc.abstractmethod
1962 def checkcommitpatterns(self, wctx, match, status, fail):
2019 def checkcommitpatterns(self, wctx, match, status, fail):
1963 pass
2020 pass
1964
2021
2022 @abc.abstractmethod
1965 def commit(
2023 def commit(
1966 self,
2024 self,
1967 text=b'',
2025 text=b'',
@@ -1974,15 +2032,19 class ilocalrepositorymain(Protocol):
1974 ):
2032 ):
1975 """Add a new revision to the repository."""
2033 """Add a new revision to the repository."""
1976
2034
2035 @abc.abstractmethod
1977 def commitctx(self, ctx, error=False, origctx=None):
2036 def commitctx(self, ctx, error=False, origctx=None):
1978 """Commit a commitctx instance to the repository."""
2037 """Commit a commitctx instance to the repository."""
1979
2038
2039 @abc.abstractmethod
1980 def destroying(self):
2040 def destroying(self):
1981 """Inform the repository that nodes are about to be destroyed."""
2041 """Inform the repository that nodes are about to be destroyed."""
1982
2042
2043 @abc.abstractmethod
1983 def destroyed(self):
2044 def destroyed(self):
1984 """Inform the repository that nodes have been destroyed."""
2045 """Inform the repository that nodes have been destroyed."""
1985
2046
2047 @abc.abstractmethod
1986 def status(
2048 def status(
1987 self,
2049 self,
1988 node1=b'.',
2050 node1=b'.',
@@ -1995,50 +2057,64 class ilocalrepositorymain(Protocol):
1995 ):
2057 ):
1996 """Convenience method to call repo[x].status()."""
2058 """Convenience method to call repo[x].status()."""
1997
2059
2060 @abc.abstractmethod
1998 def addpostdsstatus(self, ps):
2061 def addpostdsstatus(self, ps):
1999 pass
2062 pass
2000
2063
2064 @abc.abstractmethod
2001 def postdsstatus(self):
2065 def postdsstatus(self):
2002 pass
2066 pass
2003
2067
2068 @abc.abstractmethod
2004 def clearpostdsstatus(self):
2069 def clearpostdsstatus(self):
2005 pass
2070 pass
2006
2071
2072 @abc.abstractmethod
2007 def heads(self, start=None):
2073 def heads(self, start=None):
2008 """Obtain list of nodes that are DAG heads."""
2074 """Obtain list of nodes that are DAG heads."""
2009
2075
2076 @abc.abstractmethod
2010 def branchheads(self, branch=None, start=None, closed=False):
2077 def branchheads(self, branch=None, start=None, closed=False):
2011 pass
2078 pass
2012
2079
2080 @abc.abstractmethod
2013 def branches(self, nodes):
2081 def branches(self, nodes):
2014 pass
2082 pass
2015
2083
2084 @abc.abstractmethod
2016 def between(self, pairs):
2085 def between(self, pairs):
2017 pass
2086 pass
2018
2087
2088 @abc.abstractmethod
2019 def checkpush(self, pushop):
2089 def checkpush(self, pushop):
2020 pass
2090 pass
2021
2091
2022 prepushoutgoinghooks: util.hooks
2092 prepushoutgoinghooks: util.hooks
2023 """util.hooks instance."""
2093 """util.hooks instance."""
2024
2094
2095 @abc.abstractmethod
2025 def pushkey(self, namespace, key, old, new):
2096 def pushkey(self, namespace, key, old, new):
2026 pass
2097 pass
2027
2098
2099 @abc.abstractmethod
2028 def listkeys(self, namespace):
2100 def listkeys(self, namespace):
2029 pass
2101 pass
2030
2102
2103 @abc.abstractmethod
2031 def debugwireargs(self, one, two, three=None, four=None, five=None):
2104 def debugwireargs(self, one, two, three=None, four=None, five=None):
2032 pass
2105 pass
2033
2106
2107 @abc.abstractmethod
2034 def savecommitmessage(self, text):
2108 def savecommitmessage(self, text):
2035 pass
2109 pass
2036
2110
2111 @abc.abstractmethod
2037 def register_sidedata_computer(
2112 def register_sidedata_computer(
2038 self, kind, category, keys, computer, flags, replace=False
2113 self, kind, category, keys, computer, flags, replace=False
2039 ):
2114 ):
2040 pass
2115 pass
2041
2116
2117 @abc.abstractmethod
2042 def register_wanted_sidedata(self, category):
2118 def register_wanted_sidedata(self, category):
2043 pass
2119 pass
2044
2120
General Comments 0
You need to be logged in to leave comments. Login now