diff --git a/hgext3rd/fbamend/hide.py b/hgext3rd/fbamend/hide.py --- a/hgext3rd/fbamend/hide.py +++ b/hgext3rd/fbamend/hide.py @@ -13,6 +13,7 @@ bookmarks as bookmarksmod, commands, error, + extensions, lock as lockmod, obsolete, registrar, @@ -89,3 +90,27 @@ tr.close() finally: lockmod.release(tr, lock, wlock) + +@command('^unhide', [('r', 'rev', [], _("revisions to unhide"))]) +def unhide(ui, repo, *revs, **opts): + """unhide changesets and their ancestors + """ + unfi = repo.unfiltered() + revs = list(revs) + opts.pop('rev', []) + revs = set(scmutil.revrange(unfi, revs)) + revs = unfi.revs("::(%ld) & obsolete()", revs) + ctxs = [unfi[r] for r in revs] + wlock = lock = tr = None + + try: + wlock = repo.wlock() + lock = repo.lock() + tr = repo.transaction('unhide') + inhibit = extensions.find('inhibit') + inhibit.revive(ctxs, operation='unhide') + tr.close() + except KeyError: + raise error.Abort(_('cannot unhide - inhibit extension ' + 'is not enabled')) + finally: + lockmod.release(tr, lock, wlock) diff --git a/tests/test-fbamend-hide.t b/tests/test-fbamend-hide.t --- a/tests/test-fbamend-hide.t +++ b/tests/test-fbamend-hide.t @@ -1,6 +1,7 @@ $ cat >> $HGRCPATH << EOF > [extensions] > fbamend=$TESTDIR/../hgext3rd/fbamend + > inhibit=$TESTDIR/../hgext3rd/inhibit.py > drawdag=$RUNTESTDIR/drawdag.py > [experimental] > evolution = createmarkers, allowunstable @@ -60,3 +61,25 @@ $ hg log -G -T '{rev} {desc} {bookmarks}\n' @ 0 A + +Unhide stuff + $ hg unhide 2 + $ hg log -G -T '{rev} {desc} {bookmarks}\n' + o 2 C + | + o 1 B + | + @ 0 A + + $ hg unhide -r 4 -r 3 + $ hg log -G -T '{rev} {desc} {bookmarks}\n' + o 4 E + | + | o 3 D + | | + o | 2 C + |/ + o 1 B + | + @ 0 A +