Mercurial > public > mercurial-scm > hg
comparison mercurial/revset.py @ 12935:98b79c892768
revset: fix p1, p2 and parents in dirstate case (a5f7f1e9340e)
- Handle 'subset' argument
- Stop returning the null rev from p1 and parents, as in the non-dirstate case
- Order parents as in the non-dirstate case (ascending revs)
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sun, 07 Nov 2010 18:14:42 +0100 |
parents | 515c2786e1cf |
children | bdb766e64d35 |
comparison
equal
deleted
inserted
replaced
12933:7a2bca0b1e70 | 12935:98b79c892768 |
---|---|
204 def p1(repo, subset, x): | 204 def p1(repo, subset, x): |
205 """``p1([set])`` | 205 """``p1([set])`` |
206 First parent of changesets in set, or the working directory. | 206 First parent of changesets in set, or the working directory. |
207 """ | 207 """ |
208 if x is None: | 208 if x is None: |
209 return [repo[x].parents()[0].rev()] | 209 p = repo[x].parents()[0].rev() |
210 return [r for r in subset if r == p] | |
210 | 211 |
211 ps = set() | 212 ps = set() |
212 cl = repo.changelog | 213 cl = repo.changelog |
213 for r in getset(repo, range(len(repo)), x): | 214 for r in getset(repo, range(len(repo)), x): |
214 ps.add(cl.parentrevs(r)[0]) | 215 ps.add(cl.parentrevs(r)[0]) |
219 Second parent of changesets in set, or the working directory. | 220 Second parent of changesets in set, or the working directory. |
220 """ | 221 """ |
221 if x is None: | 222 if x is None: |
222 ps = repo[x].parents() | 223 ps = repo[x].parents() |
223 try: | 224 try: |
224 return [ps[1].rev()] | 225 p = ps[1].rev() |
226 return [r for r in subset if r == p] | |
225 except IndexError: | 227 except IndexError: |
226 return [] | 228 return [] |
227 | 229 |
228 ps = set() | 230 ps = set() |
229 cl = repo.changelog | 231 cl = repo.changelog |
235 """``parents([set])`` | 237 """``parents([set])`` |
236 The set of all parents for all changesets in set, or the working directory. | 238 The set of all parents for all changesets in set, or the working directory. |
237 """ | 239 """ |
238 repo.ui.debug(repr(x), '\n') | 240 repo.ui.debug(repr(x), '\n') |
239 if x is None: | 241 if x is None: |
240 return [r.rev() for r in repo[x].parents()] | 242 ps = tuple(p.rev() for p in repo[x].parents()) |
243 return [r for r in subset if r in ps] | |
241 | 244 |
242 ps = set() | 245 ps = set() |
243 cl = repo.changelog | 246 cl = repo.changelog |
244 for r in getset(repo, range(len(repo)), x): | 247 for r in getset(repo, range(len(repo)), x): |
245 ps.update(cl.parentrevs(r)) | 248 ps.update(cl.parentrevs(r)) |