mercurial/commands.py
changeset 46777 25850879a215
parent 46776 471cd86c8eb4
child 46778 066b8d8f75b8
equal deleted inserted replaced
46776:471cd86c8eb4 46777:25850879a215
  5704                 opts.setdefault(b'rev', []).append(b)
  5704                 opts.setdefault(b'rev', []).append(b)
  5705             else:
  5705             else:
  5706                 # if we try to push a deleted bookmark, translate it to null
  5706                 # if we try to push a deleted bookmark, translate it to null
  5707                 # this lets simultaneous -r, -b options continue working
  5707                 # this lets simultaneous -r, -b options continue working
  5708                 opts.setdefault(b'rev', []).append(b"null")
  5708                 opts.setdefault(b'rev', []).append(b"null")
  5709 
  5709     if True:
  5710     path = ui.getpath(dest, default=(b'default-push', b'default'))
  5710         path = ui.getpath(dest, default=(b'default-push', b'default'))
  5711     if not path:
  5711         if not path:
  5712         raise error.ConfigError(
  5712             raise error.ConfigError(
  5713             _(b'default repository not configured!'),
  5713                 _(b'default repository not configured!'),
  5714             hint=_(b"see 'hg help config.paths'"),
  5714                 hint=_(b"see 'hg help config.paths'"),
       
  5715             )
       
  5716         dest = path.pushloc or path.loc
       
  5717         branches = (path.branch, opts.get(b'branch') or [])
       
  5718         ui.status(_(b'pushing to %s\n') % util.hidepassword(dest))
       
  5719         revs, checkout = hg.addbranchrevs(
       
  5720             repo, repo, branches, opts.get(b'rev')
  5715         )
  5721         )
  5716     dest = path.pushloc or path.loc
  5722         other = hg.peer(repo, opts, dest)
  5717     branches = (path.branch, opts.get(b'branch') or [])
  5723 
  5718     ui.status(_(b'pushing to %s\n') % util.hidepassword(dest))
  5724         try:
  5719     revs, checkout = hg.addbranchrevs(repo, repo, branches, opts.get(b'rev'))
  5725             if revs:
  5720     other = hg.peer(repo, opts, dest)
  5726                 revs = [repo[r].node() for r in scmutil.revrange(repo, revs)]
  5721 
  5727                 if not revs:
  5722     try:
  5728                     raise error.InputError(
  5723         if revs:
  5729                         _(b"specified revisions evaluate to an empty set"),
  5724             revs = [repo[r].node() for r in scmutil.revrange(repo, revs)]
  5730                         hint=_(b"use different revision arguments"),
  5725             if not revs:
  5731                     )
       
  5732             elif path.pushrev:
       
  5733                 # It doesn't make any sense to specify ancestor revisions. So limit
       
  5734                 # to DAG heads to make discovery simpler.
       
  5735                 expr = revsetlang.formatspec(b'heads(%r)', path.pushrev)
       
  5736                 revs = scmutil.revrange(repo, [expr])
       
  5737                 revs = [repo[rev].node() for rev in revs]
       
  5738                 if not revs:
       
  5739                     raise error.InputError(
       
  5740                         _(
       
  5741                             b'default push revset for path evaluates to an empty set'
       
  5742                         )
       
  5743                     )
       
  5744             elif ui.configbool(b'commands', b'push.require-revs'):
  5726                 raise error.InputError(
  5745                 raise error.InputError(
  5727                     _(b"specified revisions evaluate to an empty set"),
  5746                     _(b'no revisions specified to push'),
  5728                     hint=_(b"use different revision arguments"),
  5747                     hint=_(b'did you mean "hg push -r ."?'),
  5729                 )
  5748                 )
  5730         elif path.pushrev:
  5749 
  5731             # It doesn't make any sense to specify ancestor revisions. So limit
  5750             repo._subtoppath = dest
  5732             # to DAG heads to make discovery simpler.
  5751             try:
  5733             expr = revsetlang.formatspec(b'heads(%r)', path.pushrev)
  5752                 # push subrepos depth-first for coherent ordering
  5734             revs = scmutil.revrange(repo, [expr])
  5753                 c = repo[b'.']
  5735             revs = [repo[rev].node() for rev in revs]
  5754                 subs = c.substate  # only repos that are committed
  5736             if not revs:
  5755                 for s in sorted(subs):
  5737                 raise error.InputError(
  5756                     result = c.sub(s).push(opts)
  5738                     _(b'default push revset for path evaluates to an empty set')
  5757                     if result == 0:
  5739                 )
  5758                         return not result
  5740         elif ui.configbool(b'commands', b'push.require-revs'):
  5759             finally:
  5741             raise error.InputError(
  5760                 del repo._subtoppath
  5742                 _(b'no revisions specified to push'),
  5761 
  5743                 hint=_(b'did you mean "hg push -r ."?'),
  5762             opargs = dict(
       
  5763                 opts.get(b'opargs', {})
       
  5764             )  # copy opargs since we may mutate it
       
  5765             opargs.setdefault(b'pushvars', []).extend(opts.get(b'pushvars', []))
       
  5766 
       
  5767             pushop = exchange.push(
       
  5768                 repo,
       
  5769                 other,
       
  5770                 opts.get(b'force'),
       
  5771                 revs=revs,
       
  5772                 newbranch=opts.get(b'new_branch'),
       
  5773                 bookmarks=opts.get(b'bookmark', ()),
       
  5774                 publish=opts.get(b'publish'),
       
  5775                 opargs=opargs,
  5744             )
  5776             )
  5745 
  5777 
  5746         repo._subtoppath = dest
  5778             result = not pushop.cgresult
  5747         try:
  5779 
  5748             # push subrepos depth-first for coherent ordering
  5780             if pushop.bkresult is not None:
  5749             c = repo[b'.']
  5781                 if pushop.bkresult == 2:
  5750             subs = c.substate  # only repos that are committed
  5782                     result = 2
  5751             for s in sorted(subs):
  5783                 elif not result and pushop.bkresult:
  5752                 result = c.sub(s).push(opts)
  5784                     result = 2
  5753                 if result == 0:
       
  5754                     return not result
       
  5755         finally:
  5785         finally:
  5756             del repo._subtoppath
  5786             other.close()
  5757 
       
  5758         opargs = dict(
       
  5759             opts.get(b'opargs', {})
       
  5760         )  # copy opargs since we may mutate it
       
  5761         opargs.setdefault(b'pushvars', []).extend(opts.get(b'pushvars', []))
       
  5762 
       
  5763         pushop = exchange.push(
       
  5764             repo,
       
  5765             other,
       
  5766             opts.get(b'force'),
       
  5767             revs=revs,
       
  5768             newbranch=opts.get(b'new_branch'),
       
  5769             bookmarks=opts.get(b'bookmark', ()),
       
  5770             publish=opts.get(b'publish'),
       
  5771             opargs=opargs,
       
  5772         )
       
  5773 
       
  5774         result = not pushop.cgresult
       
  5775 
       
  5776         if pushop.bkresult is not None:
       
  5777             if pushop.bkresult == 2:
       
  5778                 result = 2
       
  5779             elif not result and pushop.bkresult:
       
  5780                 result = 2
       
  5781     finally:
       
  5782         other.close()
       
  5783     return result
  5787     return result
  5784 
  5788 
  5785 
  5789 
  5786 @command(
  5790 @command(
  5787     b'recover',
  5791     b'recover',