515 _convertbmarktopic(ui, repo, revnum, bmark, tr) |
515 _convertbmarktopic(ui, repo, revnum, bmark, tr) |
516 tr.close() |
516 tr.close() |
517 finally: |
517 finally: |
518 lockmod.release(tr, lock, wlock) |
518 lockmod.release(tr, lock, wlock) |
519 |
519 |
|
520 # inspired from mercurial.repair.stripbmrevset |
|
521 CONVERTBOOKREVSET = """ |
|
522 not public() and ( |
|
523 ancestors(bookmark(%s)) |
|
524 and not ( |
|
525 ancestors( |
|
526 head() |
|
527 and not bookmark(%s) |
|
528 ) |
|
529 or ancestors( |
|
530 bookmark() |
|
531 and not bookmark(%s) |
|
532 ) |
|
533 ) |
|
534 ) |
|
535 """ |
|
536 |
520 def _convertbmarktopic(ui, repo, rev, bmark, tr): |
537 def _convertbmarktopic(ui, repo, rev, bmark, tr): |
521 """Sets a topic as same as bname to all the changesets under the bookmark |
538 """Sets a topic as same as bname to all the changesets under the bookmark |
522 and delete the bookmark, if topic is set to any changeset |
539 and delete the bookmark, if topic is set to any changeset |
523 |
540 |
524 rev is the revision on which bookmark bmark is and tr is transaction object. |
541 rev is the revision on which bookmark bmark is and tr is transaction object. |
525 """ |
542 """ |
526 |
543 |
527 # copied from mercurial.repair.stripbmrevset |
544 touchedrevs = repo.revs(CONVERTBOOKREVSET, bmark, bmark, bmark) |
528 bookrevset = ("not public() and (ancestors(bookmark(%s)) - ancestors(head()" |
|
529 "and not bookmark(%s)) - ancestors(bookmark()" |
|
530 "and not bookmark(%s)))") |
|
531 touchedrevs = repo.revs(bookrevset, bmark, bmark, bmark) |
|
532 rewrote = _changetopics(ui, repo, touchedrevs, bmark) |
545 rewrote = _changetopics(ui, repo, touchedrevs, bmark) |
533 # We didn't changed topic to any changesets because the revset |
546 # We didn't changed topic to any changesets because the revset |
534 # returned an empty set of revisions, so let's skip deleting the |
547 # returned an empty set of revisions, so let's skip deleting the |
535 # bookmark corresponding to which we didn't put a topic on any |
548 # bookmark corresponding to which we didn't put a topic on any |
536 # changeset |
549 # changeset |