equal
deleted
inserted
replaced
123 yield 'iter', rev, None |
123 yield 'iter', rev, None |
124 |
124 |
125 revrangesep = ':' |
125 revrangesep = ':' |
126 |
126 |
127 def revrange(ui, repo, revs, revlog=None): |
127 def revrange(ui, repo, revs, revlog=None): |
|
128 """Yield revision as strings from a list of revision specifications.""" |
128 if revlog is None: |
129 if revlog is None: |
129 revlog = repo.changelog |
130 revlog = repo.changelog |
130 revcount = revlog.count() |
131 revcount = revlog.count() |
131 def fix(val, defval): |
132 def fix(val, defval): |
132 if not val: |
133 if not val: |
151 for spec in revs: |
152 for spec in revs: |
152 if spec.find(revrangesep) >= 0: |
153 if spec.find(revrangesep) >= 0: |
153 start, end = spec.split(revrangesep, 1) |
154 start, end = spec.split(revrangesep, 1) |
154 start = fix(start, 0) |
155 start = fix(start, 0) |
155 end = fix(end, revcount - 1) |
156 end = fix(end, revcount - 1) |
156 if end > start: |
157 step = start > end and -1 or 1 |
157 end += 1 |
158 for rev in xrange(start, end+step, step): |
158 step = 1 |
|
159 else: |
|
160 end -= 1 |
|
161 step = -1 |
|
162 for rev in xrange(start, end, step): |
|
163 yield str(rev) |
159 yield str(rev) |
164 else: |
160 else: |
165 yield str(fix(spec, None)) |
161 yield str(fix(spec, None)) |
166 |
162 |
167 def make_filename(repo, r, pat, node=None, |
163 def make_filename(repo, r, pat, node=None, |