Skip to content

Commit 0c8bafd

Browse files
committed
Move processing of tags from SCM to Repo class
1 parent 6ae854a commit 0c8bafd

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

mbed/mbed.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -533,13 +533,13 @@ def getrev():
533533
def getbranch():
534534
return pquery([hg_cmd, 'branch']).strip() or ""
535535

536-
def gettags(rev=None):
536+
def gettags():
537537
tags = []
538538
refs = pquery([hg_cmd, 'tags']).strip().splitlines() or []
539539
for ref in refs:
540540
m = re.match(r'^(.+?)\s+(\d+)\:([a-f0-9]+)$', ref)
541-
if m and (not rev or m.group(1).startswith(rev)):
542-
tags.append(m.group(1) if rev else [m.group(3), m.group(1)])
541+
if m and m.group(1) != 'tips':
542+
tags.append([m.group(3), m.group(1)])
543543
return tags
544544

545545
def remoteid(url, rev=None):
@@ -822,19 +822,19 @@ def getbranches(rev=None, ret_rev=False):
822822
return result
823823

824824
# Finds tags. Will match rev if specified
825-
def gettags(rev=None):
825+
def gettags():
826826
tags = []
827827
refs = Git.getrefs()
828828
for ref in refs:
829829
m = re.match(r'^(.+)\s+refs\/tags\/(.+)$', ref)
830-
if m and (not rev or m.group(1).startswith(rev)):
830+
if m:
831831
t = m.group(2)
832832
if re.match(r'^(.+)\^\{\}$', t): # detect tag "pointer"
833833
t = re.sub(r'\^\{\}$', '', t) # remove "pointer" chars, e.g. some-tag^{}
834834
for tag in tags:
835835
if tag[1] == t:
836836
tags.remove(tag)
837-
tags.append(t if rev else [m.group(1), t])
837+
tags.append([m.group(1), t])
838838
return tags
839839

840840
# Finds branches a rev belongs to
@@ -1029,7 +1029,7 @@ def revtype(self, rev=None, ret_type=True, ret_rev=True, fmt=3):
10291029
if rev is None or len(rev) == 0:
10301030
output = ('latest' if fmt & 1 else '') + (' revision in the current branch' if fmt & 2 else '')
10311031
elif re.match(r'^([a-fA-F0-9]{6,40})$', rev) or re.match(r'^([0-9]+)$', rev):
1032-
revtags = self.scm.gettags(rev) if self.scm and rev else []
1032+
revtags = self.gettags(rev) if rev else []
10331033
output = ('rev ' if fmt & 1 else '') + (('#' + rev[:12] + ((' (tag' + ('s' if len(revtags) > 1 else '') + ': ' + ', '.join(revtags[0:2]) + ')') if len(revtags) else '')) if fmt & 2 and rev else '')
10341034
else:
10351035
output = ('branch/tag' if fmt & 1 else '') + (' "'+rev+'"' if fmt & 2 else '')
@@ -1087,6 +1087,13 @@ def getscm(self):
10871087
if os.path.isdir(os.path.join(self.path, '.'+name)):
10881088
return scm
10891089

1090+
def gettags(self, rev=None):
1091+
tags = self.scm.gettags() if self.scm else []
1092+
if rev:
1093+
return [tag[1] for tag in tags if tag[0].startswith(rev)]
1094+
else:
1095+
return tags
1096+
10901097
# Pass backend SCM commands and parameters if SCM exists
10911098
def __wrap_scm(self, method):
10921099
def __scm_call(*args, **kwargs):
@@ -2201,8 +2208,8 @@ def list_(detailed=False, prefix='', p_path=None, ignore=False):
22012208
"Show release tags for the current program or library."))
22022209
def releases_(detailed=False, unstable=False, recursive=False, prefix='', p_path=None):
22032210
repo = Repo.fromrepo()
2204-
tags = repo.scm.gettags()
2205-
revtags = repo.scm.gettags(repo.rev) if repo.rev else [] # associated tags with current commit
2211+
tags = repo.gettags()
2212+
revtags = repo.gettags(repo.rev) if repo.rev and len(tags) else [] # associated tags with current commit
22062213
regex_rels = regex_rels_all if unstable else regex_rels_official
22072214

22082215
# Generate list of tags

0 commit comments

Comments
 (0)