comparison mercurial/localrepo.py @ 4267:b11a2fb59cf5

revlog: simplify revlog version handling - pass the default version as an attribute on the opener - eliminate config option mess
author Matt Mackall <mpm@selenic.com>
date Thu, 22 Mar 2007 19:52:38 -0500
parents 0d51eb296fb9
children cd7b36b7869c
comparison
equal deleted inserted replaced
4266:1b5c38e9d7aa 4267:b11a2fb59cf5
86 try: 86 try:
87 self.ui.readconfig(self.join("hgrc"), self.root) 87 self.ui.readconfig(self.join("hgrc"), self.root)
88 except IOError: 88 except IOError:
89 pass 89 pass
90 90
91 v = self.ui.configrevlog() 91 self.changelog = changelog.changelog(self.sopener)
92 self.revlogversion = int(v.get('format', revlog.REVLOG_DEFAULT_FORMAT)) 92 self.sopener.defversion = self.changelog.version
93 self.revlogv1 = self.revlogversion != revlog.REVLOGV0 93 self.manifest = manifest.manifest(self.sopener)
94 fl = v.get('flags', None)
95 flags = 0
96 if fl != None:
97 for x in fl.split():
98 flags |= revlog.flagstr(x)
99 elif self.revlogv1:
100 flags = revlog.REVLOG_DEFAULT_FLAGS
101
102 v = self.revlogversion | flags
103 self.manifest = manifest.manifest(self.sopener, v)
104 self.changelog = changelog.changelog(self.sopener, v)
105 94
106 fallback = self.ui.config('ui', 'fallbackencoding') 95 fallback = self.ui.config('ui', 'fallbackencoding')
107 if fallback: 96 if fallback:
108 util._fallbackencoding = fallback 97 util._fallbackencoding = fallback
109
110 # the changelog might not have the inline index flag
111 # on. If the format of the changelog is the same as found in
112 # .hgrc, apply any flags found in the .hgrc as well.
113 # Otherwise, just version from the changelog
114 v = self.changelog.version
115 if v == self.revlogversion:
116 v |= flags
117 self.revlogversion = v
118 98
119 self.tagscache = None 99 self.tagscache = None
120 self.branchcache = None 100 self.branchcache = None
121 self.nodetagscache = None 101 self.nodetagscache = None
122 self.filterpats = {} 102 self.filterpats = {}
491 return os.path.join(self.root, f) 471 return os.path.join(self.root, f)
492 472
493 def file(self, f): 473 def file(self, f):
494 if f[0] == '/': 474 if f[0] == '/':
495 f = f[1:] 475 f = f[1:]
496 return filelog.filelog(self.sopener, f, self.revlogversion) 476 return filelog.filelog(self.sopener, f)
497 477
498 def changectx(self, changeid=None): 478 def changectx(self, changeid=None):
499 return context.changectx(self, changeid) 479 return context.changectx(self, changeid)
500 480
501 def workingctx(self): 481 def workingctx(self):
1802 1782
1803 # write changelog data to temp files so concurrent readers will not see 1783 # write changelog data to temp files so concurrent readers will not see
1804 # inconsistent view 1784 # inconsistent view
1805 cl = None 1785 cl = None
1806 try: 1786 try:
1807 cl = appendfile.appendchangelog(self.sopener, 1787 cl = appendfile.appendchangelog(self.sopener)
1808 self.changelog.version)
1809
1810 oldheads = len(cl.heads()) 1788 oldheads = len(cl.heads())
1811 1789
1812 # pull off the changeset group 1790 # pull off the changeset group
1813 self.ui.status(_("adding changesets\n")) 1791 self.ui.status(_("adding changesets\n"))
1814 cor = cl.count() - 1 1792 cor = cl.count() - 1
1846 finally: 1824 finally:
1847 if cl: 1825 if cl:
1848 cl.cleanup() 1826 cl.cleanup()
1849 1827
1850 # make changelog see real files again 1828 # make changelog see real files again
1851 self.changelog = changelog.changelog(self.sopener, 1829 self.changelog = changelog.changelog(self.sopener)
1852 self.changelog.version)
1853 self.changelog.checkinlinesize(tr) 1830 self.changelog.checkinlinesize(tr)
1854 1831
1855 newheads = len(self.changelog.heads()) 1832 newheads = len(self.changelog.heads())
1856 heads = "" 1833 heads = ""
1857 if oldheads and newheads != oldheads: 1834 if oldheads and newheads != oldheads: