152 def revfix(repo, val, defval): |
152 def revfix(repo, val, defval): |
153 if not val and val != 0 and defval is not None: |
153 if not val and val != 0 and defval is not None: |
154 return defval |
154 return defval |
155 return repo.changelog.rev(repo.lookup(val)) |
155 return repo.changelog.rev(repo.lookup(val)) |
156 |
156 |
157 seen, l = {}, [] |
157 seen, l = set(), [] |
158 for spec in revs: |
158 for spec in revs: |
159 if revrangesep in spec: |
159 if revrangesep in spec: |
160 start, end = spec.split(revrangesep, 1) |
160 start, end = spec.split(revrangesep, 1) |
161 start = revfix(repo, start, 0) |
161 start = revfix(repo, start, 0) |
162 end = revfix(repo, end, len(repo) - 1) |
162 end = revfix(repo, end, len(repo) - 1) |
163 step = start > end and -1 or 1 |
163 step = start > end and -1 or 1 |
164 for rev in xrange(start, end+step, step): |
164 for rev in xrange(start, end+step, step): |
165 if rev in seen: |
165 if rev in seen: |
166 continue |
166 continue |
167 seen[rev] = 1 |
167 seen.add(rev) |
168 l.append(rev) |
168 l.append(rev) |
169 else: |
169 else: |
170 rev = revfix(repo, spec, None) |
170 rev = revfix(repo, spec, None) |
171 if rev in seen: |
171 if rev in seen: |
172 continue |
172 continue |
173 seen[rev] = 1 |
173 seen.add(rev) |
174 l.append(rev) |
174 l.append(rev) |
175 |
175 |
176 return l |
176 return l |
177 |
177 |
178 def make_filename(repo, pat, node, |
178 def make_filename(repo, pat, node, |