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))