Show More
@@ -235,6 +235,21 b' class changectx(object):' | |||
|
235 | 235 | return (self.node() in self._repo.obsstore.precursors |
|
236 | 236 | and self.phase() > phases.public) |
|
237 | 237 | |
|
238 | def extinct(self): | |
|
239 | """True if the changeset is extinct""" | |
|
240 | # We should just compute a cache a check againts it. | |
|
241 | # see revset implementation for details | |
|
242 | # | |
|
243 | # But this naive implementation does not require cache | |
|
244 | if self.phase() <= phases.public: | |
|
245 | return False | |
|
246 | if not self.obsolete(): | |
|
247 | return False | |
|
248 | for desc in self.descendants(): | |
|
249 | if not desc.obsolete(): | |
|
250 | return False | |
|
251 | return True | |
|
252 | ||
|
238 | 253 | def unstable(self): |
|
239 | 254 | """True if the changeset is not obsolete but it's ancestor are""" |
|
240 | 255 | # We should just compute /(obsolete()::) - obsolete()/ |
@@ -568,6 +568,13 b' def draft(repo, subset, x):' | |||
|
568 | 568 | pc = repo._phasecache |
|
569 | 569 | return [r for r in subset if pc.phase(repo, r) == phases.draft] |
|
570 | 570 | |
|
571 | def extinct(repo, subset, x): | |
|
572 | """``extinct()`` | |
|
573 | obsolete changeset with obsolete descendant only.""" | |
|
574 | getargs(x, 0, 0, _("obsolete takes no arguments")) | |
|
575 | extinctset = set(repo.revs('(obsolete()::) - (::(not obsolete()))')) | |
|
576 | return [r for r in subset if r in extinctset] | |
|
577 | ||
|
571 | 578 | def extra(repo, subset, x): |
|
572 | 579 | """``extra(label, [value])`` |
|
573 | 580 | Changesets with the given label in the extra metadata, with the given |
@@ -1365,6 +1372,7 b' symbols = {' | |||
|
1365 | 1372 | "descendants": descendants, |
|
1366 | 1373 | "_firstdescendants": _firstdescendants, |
|
1367 | 1374 | "draft": draft, |
|
1375 | "extinct": extinct, | |
|
1368 | 1376 | "extra": extra, |
|
1369 | 1377 | "file": hasfile, |
|
1370 | 1378 | "filelog": filelog, |
@@ -320,3 +320,13 b' detect outgoing obsolete and unstable' | |||
|
320 | 320 | searching for changes |
|
321 | 321 | abort: push includes an unstable changeset: 7878242aeece! |
|
322 | 322 | [255] |
|
323 | ||
|
324 | Test that extinct changeset are properly detected | |
|
325 | ||
|
326 | $ hg log -r 'extinct()' | |
|
327 | changeset: 3:cdbce2fbb163 | |
|
328 | parent: 1:7c3bad9141dc | |
|
329 | user: test | |
|
330 | date: Thu Jan 01 00:00:00 1970 +0000 | |
|
331 | summary: add new_c | |
|
332 |
General Comments 0
You need to be logged in to leave comments.
Login now