diff --git a/hgext3rd/fbamend/hide.py b/hgext3rd/fbamend/hide.py --- a/hgext3rd/fbamend/hide.py +++ b/hgext3rd/fbamend/hide.py @@ -14,6 +14,7 @@ cmdutil, error, hg, + extensions, obsolete, registrar, scmutil, @@ -78,3 +79,20 @@ if len(bmchanges) > 0: ui.status(_('%i bookmarks removed\n') % len(bmchanges)) + +@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)) + ctxs = unfi.set("::(%ld) & obsolete()", revs) + + with repo.wlock(), repo.lock(), repo.transaction('unhide'): + try: + inhibit = extensions.find('inhibit') + inhibit.revive(ctxs, operation='unhide') + except KeyError: + raise error.Abort(_('cannot unhide - inhibit extension ' + 'is not enabled')) 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 +