4853 tr = repo.transaction("phase") |
4853 tr = repo.transaction("phase") |
4854 # set phase |
4854 # set phase |
4855 if not revs: |
4855 if not revs: |
4856 raise util.Abort(_('empty revision set')) |
4856 raise util.Abort(_('empty revision set')) |
4857 nodes = [repo[r].node() for r in revs] |
4857 nodes = [repo[r].node() for r in revs] |
4858 olddata = repo._phasecache.getphaserevs(repo)[:] |
4858 # moving revision from public to draft may hide them |
|
4859 # We have to check result on an unfiltered repository |
|
4860 unfi = repo.unfiltered() |
|
4861 getphase = unfi._phasecache.phase |
|
4862 olddata = [getphase(unfi, r) for r in unfi] |
4859 phases.advanceboundary(repo, tr, targetphase, nodes) |
4863 phases.advanceboundary(repo, tr, targetphase, nodes) |
4860 if opts['force']: |
4864 if opts['force']: |
4861 phases.retractboundary(repo, tr, targetphase, nodes) |
4865 phases.retractboundary(repo, tr, targetphase, nodes) |
4862 tr.close() |
4866 tr.close() |
4863 finally: |
4867 finally: |
4864 if tr is not None: |
4868 if tr is not None: |
4865 tr.release() |
4869 tr.release() |
4866 lock.release() |
4870 lock.release() |
4867 # moving revision from public to draft may hide them |
4871 getphase = unfi._phasecache.phase |
4868 # We have to check result on an unfiltered repository |
4872 newdata = [getphase(unfi, r) for r in unfi] |
4869 unfi = repo.unfiltered() |
4873 changes = sum(newdata[r] != olddata[r] for r in unfi) |
4870 newdata = repo._phasecache.getphaserevs(unfi) |
|
4871 changes = sum(o != newdata[i] for i, o in enumerate(olddata)) |
|
4872 cl = unfi.changelog |
4874 cl = unfi.changelog |
4873 rejected = [n for n in nodes |
4875 rejected = [n for n in nodes |
4874 if newdata[cl.rev(n)] < targetphase] |
4876 if newdata[cl.rev(n)] < targetphase] |
4875 if rejected: |
4877 if rejected: |
4876 ui.warn(_('cannot move %i changesets to a higher ' |
4878 ui.warn(_('cannot move %i changesets to a higher ' |