Mercurial > hg-stable
changeset 31711:63d4deda1b31
tags: do not feed dictionaries to 'findglobaltags'
The code asserts that these dictionary are empty. So we can be more explicit
and have the function return the dictionaries directly.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Tue, 28 Mar 2017 06:13:49 +0200 |
parents | 5eb4d206202b |
children | 9cd640e5c1ba |
files | mercurial/localrepo.py mercurial/tags.py |
diffstat | 2 files changed, 10 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/localrepo.py Tue Mar 28 06:01:31 2017 +0200 +++ b/mercurial/localrepo.py Tue Mar 28 06:13:49 2017 +0200 @@ -707,10 +707,11 @@ # be one tagtype for all such "virtual" tags? Or is the status # quo fine? - alltags = {} # map tag name to (node, hist) - tagtypes = {} - tagsmod.findglobaltags(self.ui, self, alltags, tagtypes) + globaldata = tagsmod.findglobaltags(self.ui, self) + alltags = globaldata[0] # map tag name to (node, hist) + tagtypes = globaldata[1] # map tag name to tag type + tagsmod.readlocaltags(self.ui, self, alltags, tagtypes) # Build the return dicts. Have to re-encode tag names because
--- a/mercurial/tags.py Tue Mar 28 06:01:31 2017 +0200 +++ b/mercurial/tags.py Tue Mar 28 06:13:49 2017 +0200 @@ -78,23 +78,18 @@ # The most recent changeset (in terms of revlog ordering for the head # setting it) for each tag is last. -def findglobaltags(ui, repo, alltags, tagtypes): - '''Find global tags in a repo. +def findglobaltags(ui, repo): + '''Find global tags in a repo: return (alltags, tagtypes) "alltags" maps tag name to (node, hist) 2-tuples. "tagtypes" maps tag name to tag type. Global tags always have the "global" tag type. - The "alltags" and "tagtypes" dicts are updated in place. Empty dicts - should be passed in. - The tags cache is read and updated as a side-effect of calling. ''' - # This is so we can be lazy and assume alltags contains only global - # tags when we pass it to _writetagcache(). - assert len(alltags) == len(tagtypes) == 0, \ - "findglobaltags() should be called first" + alltags = {} + tagtypes = {} (heads, tagfnode, valid, cachetags, shouldwrite) = _readtagcache(ui, repo) if cachetags is not None: @@ -103,7 +98,7 @@ # cases where a global tag should outrank a local tag but won't, # because cachetags does not contain rank info? _updatetags(cachetags, 'global', alltags, tagtypes) - return + return alltags, tagtypes seen = set() # set of fnode fctx = None @@ -125,6 +120,7 @@ # and update the cache (if necessary) if shouldwrite: _writetagcache(ui, repo, valid, alltags) + return alltags, tagtypes def readlocaltags(ui, repo, alltags, tagtypes): '''Read local tags in repo. Update alltags and tagtypes.'''