mercurial/localrepo.py
changeset 2143 3053fc33f545
parent 2142 8a1e2a9c7013
child 2149 43ce1c17e644
equal deleted inserted replaced
2142:8a1e2a9c7013 2143:3053fc33f545
  1801     def verify(self):
  1801     def verify(self):
  1802         filelinkrevs = {}
  1802         filelinkrevs = {}
  1803         filenodes = {}
  1803         filenodes = {}
  1804         changesets = revisions = files = 0
  1804         changesets = revisions = files = 0
  1805         errors = [0]
  1805         errors = [0]
       
  1806         warnings = [0]
  1806         neededmanifests = {}
  1807         neededmanifests = {}
  1807 
  1808 
  1808         def err(msg):
  1809         def err(msg):
  1809             self.ui.warn(msg + "\n")
  1810             self.ui.warn(msg + "\n")
  1810             errors[0] += 1
  1811             errors[0] += 1
       
  1812 
       
  1813         def warn(msg):
       
  1814             self.ui.warn(msg + "\n")
       
  1815             warnings[0] += 1
  1811 
  1816 
  1812         def checksize(obj, name):
  1817         def checksize(obj, name):
  1813             d = obj.checksize()
  1818             d = obj.checksize()
  1814             if d[0]:
  1819             if d[0]:
  1815                 err(_("%s data length off by %d bytes") % (name, d[0]))
  1820                 err(_("%s data length off by %d bytes") % (name, d[0]))
  1816             if d[1]:
  1821             if d[1]:
  1817                 err(_("%s index contains %d extra bytes") % (name, d[1]))
  1822                 err(_("%s index contains %d extra bytes") % (name, d[1]))
       
  1823 
       
  1824         def checkversion(obj, name):
       
  1825             if obj.version != revlog.REVLOGV0:
       
  1826                 if not revlogv1:
       
  1827                     warn(_("warning: `%s' uses revlog format 1") % name)
       
  1828             elif revlogv1:
       
  1829                 warn(_("warning: `%s' uses revlog format 0") % name)
       
  1830 
       
  1831         revlogv1 = self.revlogversion != revlog.REVLOGV0
       
  1832         self.ui.status(_("repository uses revlog format %d\n") %
       
  1833                        (revlogv1 and 1 or 0))
  1818 
  1834 
  1819         seen = {}
  1835         seen = {}
  1820         self.ui.status(_("checking changesets\n"))
  1836         self.ui.status(_("checking changesets\n"))
  1821         checksize(self.changelog, "changelog")
  1837         checksize(self.changelog, "changelog")
  1822 
  1838 
  1848             for f in changes[3]:
  1864             for f in changes[3]:
  1849                 filelinkrevs.setdefault(f, []).append(i)
  1865                 filelinkrevs.setdefault(f, []).append(i)
  1850 
  1866 
  1851         seen = {}
  1867         seen = {}
  1852         self.ui.status(_("checking manifests\n"))
  1868         self.ui.status(_("checking manifests\n"))
       
  1869         checkversion(self.manifest, "manifest")
  1853         checksize(self.manifest, "manifest")
  1870         checksize(self.manifest, "manifest")
  1854 
  1871 
  1855         for i in range(self.manifest.count()):
  1872         for i in range(self.manifest.count()):
  1856             n = self.manifest.node(i)
  1873             n = self.manifest.node(i)
  1857             l = self.manifest.linkrev(n)
  1874             l = self.manifest.linkrev(n)
  1912             files += 1
  1929             files += 1
  1913             if not f:
  1930             if not f:
  1914                 err(_("file without name in manifest %s") % short(n))
  1931                 err(_("file without name in manifest %s") % short(n))
  1915                 continue
  1932                 continue
  1916             fl = self.file(f)
  1933             fl = self.file(f)
       
  1934             checkversion(fl, f)
  1917             checksize(fl, f)
  1935             checksize(fl, f)
  1918 
  1936 
  1919             nodes = {nullid: 1}
  1937             nodes = {nullid: 1}
  1920             seen = {}
  1938             seen = {}
  1921             for i in range(fl.count()):
  1939             for i in range(fl.count()):
  1960                 err(_("node %s in manifests not in %s") % (hex(node), f))
  1978                 err(_("node %s in manifests not in %s") % (hex(node), f))
  1961 
  1979 
  1962         self.ui.status(_("%d files, %d changesets, %d total revisions\n") %
  1980         self.ui.status(_("%d files, %d changesets, %d total revisions\n") %
  1963                        (files, changesets, revisions))
  1981                        (files, changesets, revisions))
  1964 
  1982 
       
  1983         if warnings[0]:
       
  1984             self.ui.warn(_("%d warnings encountered!\n") % warnings[0])
  1965         if errors[0]:
  1985         if errors[0]:
  1966             self.ui.warn(_("%d integrity errors encountered!\n") % errors[0])
  1986             self.ui.warn(_("%d integrity errors encountered!\n") % errors[0])
  1967             return 1
  1987             return 1
  1968 
  1988 
  1969 # used to avoid circular references so destructors work
  1989 # used to avoid circular references so destructors work