# HG changeset patch # User Martin von Zweigbergk # Date 2019-05-11 05:24:47 # Node ID 62bb49a1d05d9d8b6a0e9ce44a751b40e78f00d8 # Parent df2f22befdc819c87fd0b009b159c5cf4ab97738 context: default to using branch from dirstate only in workingctx Same reasoning as previous commits: only the workingctx should know about the dirstate. committablectx now seems free of dirstate references. Differential Revision: https://phab.mercurial-scm.org/D6374 diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -1119,13 +1119,7 @@ class committablectx(basectx): self._extra = extra.copy() if branch is not None: self._extra['branch'] = encoding.fromlocal(branch) - elif 'branch' not in self._extra: - try: - branch = encoding.fromlocal(self._repo.dirstate.branch()) - except UnicodeDecodeError: - raise error.Abort(_('branch name not in UTF-8!')) - self._extra['branch'] = branch - if self._extra['branch'] == '': + if not self._extra.get('branch'): self._extra['branch'] = 'default' def __bytes__(self): @@ -1242,7 +1236,14 @@ class workingctx(committablectx): """ def __init__(self, repo, text="", user=None, date=None, extra=None, changes=None): - super(workingctx, self).__init__(repo, text, user, date, extra, changes) + branch = None + if not extra or 'branch' not in extra: + try: + branch = repo.dirstate.branch() + except UnicodeDecodeError: + raise error.Abort(_('branch name not in UTF-8!')) + super(workingctx, self).__init__(repo, text, user, date, extra, changes, + branch=branch) def __iter__(self): d = self._repo.dirstate