Mercurial > public > mercurial-scm > hg
comparison mercurial/context.py @ 42297:62bb49a1d05d
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
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 10 May 2019 22:24:47 -0700 |
parents | df2f22befdc8 |
children | 313812cbf4ca |
comparison
equal
deleted
inserted
replaced
42296:df2f22befdc8 | 42297:62bb49a1d05d |
---|---|
1117 self._extra = {} | 1117 self._extra = {} |
1118 if extra: | 1118 if extra: |
1119 self._extra = extra.copy() | 1119 self._extra = extra.copy() |
1120 if branch is not None: | 1120 if branch is not None: |
1121 self._extra['branch'] = encoding.fromlocal(branch) | 1121 self._extra['branch'] = encoding.fromlocal(branch) |
1122 elif 'branch' not in self._extra: | 1122 if not self._extra.get('branch'): |
1123 try: | |
1124 branch = encoding.fromlocal(self._repo.dirstate.branch()) | |
1125 except UnicodeDecodeError: | |
1126 raise error.Abort(_('branch name not in UTF-8!')) | |
1127 self._extra['branch'] = branch | |
1128 if self._extra['branch'] == '': | |
1129 self._extra['branch'] = 'default' | 1123 self._extra['branch'] = 'default' |
1130 | 1124 |
1131 def __bytes__(self): | 1125 def __bytes__(self): |
1132 return bytes(self._parents[0]) + "+" | 1126 return bytes(self._parents[0]) + "+" |
1133 | 1127 |
1240 changes - a list of file lists as returned by localrepo.status() | 1234 changes - a list of file lists as returned by localrepo.status() |
1241 or None to use the repository status. | 1235 or None to use the repository status. |
1242 """ | 1236 """ |
1243 def __init__(self, repo, text="", user=None, date=None, extra=None, | 1237 def __init__(self, repo, text="", user=None, date=None, extra=None, |
1244 changes=None): | 1238 changes=None): |
1245 super(workingctx, self).__init__(repo, text, user, date, extra, changes) | 1239 branch = None |
1240 if not extra or 'branch' not in extra: | |
1241 try: | |
1242 branch = repo.dirstate.branch() | |
1243 except UnicodeDecodeError: | |
1244 raise error.Abort(_('branch name not in UTF-8!')) | |
1245 super(workingctx, self).__init__(repo, text, user, date, extra, changes, | |
1246 branch=branch) | |
1246 | 1247 |
1247 def __iter__(self): | 1248 def __iter__(self): |
1248 d = self._repo.dirstate | 1249 d = self._repo.dirstate |
1249 for f in d: | 1250 for f in d: |
1250 if d[f] != 'r': | 1251 if d[f] != 'r': |