# HG changeset patch # User Matt Mackall # Date 1173829802 18000 # Node ID 7e1c8a565a4f019d7c953c6e85e0b8e92af44623 # Parent 0b48e3985765472edf3f69e4e728dcb91b41670b Move branch read/write to dirstate where it belongs diff -r 0b48e3985765 -r 7e1c8a565a4f mercurial/commands.py --- a/mercurial/commands.py Tue Mar 13 15:47:55 2007 -0500 +++ b/mercurial/commands.py Tue Mar 13 18:50:02 2007 -0500 @@ -255,12 +255,10 @@ current branch name. """ - if label is not None: - repo.opener("branch", "w").write(util.fromlocal(label) + '\n') + if label: + repo.dirstate.setbranch(util.fromlocal(label)) else: - b = util.tolocal(repo.workingctx().branch()) - if b: - ui.write("%s\n" % b) + ui.write("%s\n" % util.tolocal(repo.dirstate.branch())) def branches(ui, repo): """list repository named branches diff -r 0b48e3985765 -r 7e1c8a565a4f mercurial/context.py --- a/mercurial/context.py Tue Mar 13 15:47:55 2007 -0500 +++ b/mercurial/context.py Tue Mar 13 18:50:02 2007 -0500 @@ -411,11 +411,7 @@ def deleted(self): return self._status[3] def unknown(self): return self._status[4] def clean(self): return self._status[5] - def branch(self): - try: - return self._repo.opener("branch").read().strip() or "default" - except IOError: - return "default" + def branch(self): return self._repo.dirstate.branch() def parents(self): """return contexts for each parent changeset""" diff -r 0b48e3985765 -r 7e1c8a565a4f mercurial/dirstate.py --- a/mercurial/dirstate.py Tue Mar 13 15:47:55 2007 -0500 +++ b/mercurial/dirstate.py Tue Mar 13 18:50:02 2007 -0500 @@ -25,6 +25,7 @@ self.dirs = None self.copymap = {} self.ignorefunc = None + self._branch = None def wjoin(self, f): return os.path.join(self.root, f) @@ -137,6 +138,15 @@ self.lazyread() return self.pl + def branch(self): + if not self._branch: + try: + self._branch = self.opener("branch").read().strip()\ + or "default" + except IOError: + self._branch = "default" + return self._branch + def markdirty(self): if not self.dirty: self.dirty = 1 @@ -146,6 +156,10 @@ self.markdirty() self.pl = p1, p2 + def setbranch(self, branch): + self._branch = branch + self.opener("branch", "w").write(branch + '\n') + def state(self, key): try: return self[key][0] diff -r 0b48e3985765 -r 7e1c8a565a4f mercurial/merge.py --- a/mercurial/merge.py Tue Mar 13 15:47:55 2007 -0500 +++ b/mercurial/merge.py Tue Mar 13 18:50:02 2007 -0500 @@ -488,9 +488,9 @@ if not partial: recordupdates(repo, action, branchmerge) repo.dirstate.setparents(fp1, fp2) + if not branchmerge: + repo.dirstate.setbranch(p2.branch()) repo.hook('update', parent1=xp1, parent2=xp2, error=stats[3]) - if not branchmerge: - repo.opener("branch", "w").write(p2.branch() + "\n") return stats diff -r 0b48e3985765 -r 7e1c8a565a4f tests/test-newbranch --- a/tests/test-newbranch Tue Mar 13 15:47:55 2007 -0500 +++ b/tests/test-newbranch Tue Mar 13 18:50:02 2007 -0500 @@ -12,7 +12,7 @@ hg ci -m "add branch name" -d "1000000 0" hg branch bar hg ci -m "change branch name" -d "1000000 0" -hg branch "" +hg branch default hg ci -m "clear branch name" -d "1000000 0" hg co foo