Show More
@@ -395,3 +395,39 b' def _computesuspendedset(repo):' | |||||
395 | def _computeextinctset(repo): |
|
395 | def _computeextinctset(repo): | |
396 | """the set of obsolete parents without non obsolete descendants""" |
|
396 | """the set of obsolete parents without non obsolete descendants""" | |
397 | return set(repo.revs('obsolete() - obsolete()::unstable()')) |
|
397 | return set(repo.revs('obsolete() - obsolete()::unstable()')) | |
|
398 | ||||
|
399 | def createmarkers(repo, relations, flag=0, metadata=None): | |||
|
400 | """Add obsolete markers between changesets in a repo | |||
|
401 | ||||
|
402 | <relations> must be an iterable of (<old>, (<new>, ...)) tuple. | |||
|
403 | `old` and `news` are changectx. | |||
|
404 | ||||
|
405 | Trying to obsolete a public changeset will raise an exception. | |||
|
406 | ||||
|
407 | Current user and date are used except if specified otherwise in the | |||
|
408 | metadata attribute. | |||
|
409 | ||||
|
410 | This function operates within a transaction of its own, but does | |||
|
411 | not take any lock on the repo. | |||
|
412 | """ | |||
|
413 | # prepare metadata | |||
|
414 | if metadata is None: | |||
|
415 | metadata = {} | |||
|
416 | if 'date' not in metadata: | |||
|
417 | metadata['date'] = '%i %i' % util.makedate() | |||
|
418 | if 'user' not in metadata: | |||
|
419 | metadata['user'] = repo.ui.username() | |||
|
420 | tr = repo.transaction('add-obsolescence-marker') | |||
|
421 | try: | |||
|
422 | for prec, sucs in relations: | |||
|
423 | if not prec.mutable(): | |||
|
424 | raise util.Abort("cannot obsolete immutable changeset: %s" | |||
|
425 | % prec) | |||
|
426 | nprec = prec.node() | |||
|
427 | nsucs = tuple(s.node() for s in sucs) | |||
|
428 | if nprec in nsucs: | |||
|
429 | raise util.Abort("changeset %s cannot obsolete itself" % prec) | |||
|
430 | repo.obsstore.create(tr, nprec, nsucs, flag, metadata) | |||
|
431 | tr.close() | |||
|
432 | finally: | |||
|
433 | tr.release() |
General Comments 0
You need to be logged in to leave comments.
Login now