Mercurial > hg-stable
comparison mercurial/localrepo.py @ 2143:3053fc33f545
Show repo's revlog format on verify. Warn if some files use a different format.
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Thu, 27 Apr 2006 21:58:47 +0200 |
parents | 8a1e2a9c7013 |
children | 43ce1c17e644 |
comparison
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 |