47 def revfix(repo, val, defval): |
47 def revfix(repo, val, defval): |
48 if not val and val != 0: |
48 if not val and val != 0: |
49 return defval |
49 return defval |
50 return repo.changelog.rev(repo.lookup(val)) |
50 return repo.changelog.rev(repo.lookup(val)) |
51 |
51 |
52 seen = {} |
52 seen, l = {}, [] |
53 for spec in revs: |
53 for spec in revs: |
54 if revrangesep in spec: |
54 if revrangesep in spec: |
55 start, end = spec.split(revrangesep, 1) |
55 start, end = spec.split(revrangesep, 1) |
56 start = revfix(repo, start, 0) |
56 start = revfix(repo, start, 0) |
57 end = revfix(repo, end, repo.changelog.count() - 1) |
57 end = revfix(repo, end, repo.changelog.count() - 1) |
58 step = start > end and -1 or 1 |
58 step = start > end and -1 or 1 |
59 for rev in xrange(start, end+step, step): |
59 for rev in xrange(start, end+step, step): |
60 if rev in seen: |
60 if rev in seen: |
61 continue |
61 continue |
62 seen[rev] = 1 |
62 seen[rev] = 1 |
63 yield rev |
63 l.append(rev) |
64 else: |
64 else: |
65 rev = revfix(repo, spec, None) |
65 rev = revfix(repo, spec, None) |
66 if rev in seen: |
66 if rev in seen: |
67 continue |
67 continue |
68 seen[rev] = 1 |
68 seen[rev] = 1 |
69 yield rev |
69 l.append(rev) |
|
70 |
|
71 return l |
70 |
72 |
71 def make_filename(repo, pat, node, |
73 def make_filename(repo, pat, node, |
72 total=None, seqno=None, revwidth=None, pathname=None): |
74 total=None, seqno=None, revwidth=None, pathname=None): |
73 node_expander = { |
75 node_expander = { |
74 'H': lambda: hex(node), |
76 'H': lambda: hex(node), |