comparison mercurial/commands.py @ 1469:0847c45ffee6

Merge bundle -r work from Eric Hopper
author Matt Mackall <mpm@selenic.com>
date Thu, 27 Oct 2005 12:26:16 -0700
parents 214f42f23a3b 06d5d8794e5f
children fb9b84c91222
comparison
equal deleted inserted replaced
1456:214f42f23a3b 1469:0847c45ffee6
691 other = hg.repository(ui, source) 691 other = hg.repository(ui, source)
692 692
693 copy = False 693 copy = False
694 if other.dev() != -1: 694 if other.dev() != -1:
695 abspath = os.path.abspath(source) 695 abspath = os.path.abspath(source)
696 if not opts['pull']: 696 if not opts['pull'] and not opts['rev']:
697 copy = True 697 copy = True
698 698
699 if copy: 699 if copy:
700 try: 700 try:
701 # we use a lock here because if we race with commit, we 701 # we use a lock here because if we race with commit, we
721 if inst.errno != errno.ENOENT: raise 721 if inst.errno != errno.ENOENT: raise
722 722
723 repo = hg.repository(ui, dest) 723 repo = hg.repository(ui, dest)
724 724
725 else: 725 else:
726 revs = None
727 if opts['rev']:
728 if not other.local():
729 raise util.Abort("clone -r not supported yet for remote repositories.")
730 else:
731 revs = [other.lookup(rev) for rev in opts['rev']]
726 repo = hg.repository(ui, dest, create=1) 732 repo = hg.repository(ui, dest, create=1)
727 repo.pull(other) 733 repo.pull(other, heads = revs)
728 734
729 f = repo.opener("hgrc", "w", text=True) 735 f = repo.opener("hgrc", "w", text=True)
730 f.write("[paths]\n") 736 f.write("[paths]\n")
731 f.write("default = %s\n" % abspath) 737 f.write("default = %s\n" % abspath)
732 738
1394 if not other.local(): 1400 if not other.local():
1395 raise util.Abort(_("incoming doesn't work for remote repositories yet")) 1401 raise util.Abort(_("incoming doesn't work for remote repositories yet"))
1396 o = repo.findincoming(other) 1402 o = repo.findincoming(other)
1397 if not o: 1403 if not o:
1398 return 1404 return
1399 o = other.newer(o) 1405 o = other.changelog.nodesbetween(o)[0]
1400 if opts['newest_first']: 1406 if opts['newest_first']:
1401 o.reverse() 1407 o.reverse()
1402 for n in o: 1408 for n in o:
1403 parents = [p for p in other.changelog.parents(n) if p != nullid] 1409 parents = [p for p in other.changelog.parents(n) if p != nullid]
1404 if opts['no_merges'] and len(parents) == 2: 1410 if opts['no_merges'] and len(parents) == 2:
1559 if a push was requested. 1565 if a push was requested.
1560 """ 1566 """
1561 dest = ui.expandpath(dest, repo.root) 1567 dest = ui.expandpath(dest, repo.root)
1562 other = hg.repository(ui, dest) 1568 other = hg.repository(ui, dest)
1563 o = repo.findoutgoing(other) 1569 o = repo.findoutgoing(other)
1564 o = repo.newer(o) 1570 o = repo.changelog.nodesbetween(o)[0]
1565 if opts['newest_first']: 1571 if opts['newest_first']:
1566 o.reverse() 1572 o.reverse()
1567 for n in o: 1573 for n in o:
1568 parents = [p for p in repo.changelog.parents(n) if p != nullid] 1574 parents = [p for p in repo.changelog.parents(n) if p != nullid]
1569 if opts['no_merges'] and len(parents) == 2: 1575 if opts['no_merges'] and len(parents) == 2:
1641 ui.setconfig("ui", "ssh", opts['ssh']) 1647 ui.setconfig("ui", "ssh", opts['ssh'])
1642 if opts['remotecmd']: 1648 if opts['remotecmd']:
1643 ui.setconfig("ui", "remotecmd", opts['remotecmd']) 1649 ui.setconfig("ui", "remotecmd", opts['remotecmd'])
1644 1650
1645 other = hg.repository(ui, source) 1651 other = hg.repository(ui, source)
1646 r = repo.pull(other) 1652 revs = None
1653 if opts['rev'] and not other.local():
1654 raise util.Abort("pull -r doesn't work for remote repositories yet")
1655 elif opts['rev']:
1656 revs = [other.lookup(rev) for rev in opts['rev']]
1657 r = repo.pull(other, heads=revs)
1647 if not r: 1658 if not r:
1648 if opts['update']: 1659 if opts['update']:
1649 return update(ui, repo) 1660 return update(ui, repo)
1650 else: 1661 else:
1651 ui.status(_("(run 'hg update' to get a working copy)\n")) 1662 ui.status(_("(run 'hg update' to get a working copy)\n"))
2191 "^clone": 2202 "^clone":
2192 (clone, 2203 (clone,
2193 [('U', 'noupdate', None, _('do not update the new working directory')), 2204 [('U', 'noupdate', None, _('do not update the new working directory')),
2194 ('e', 'ssh', "", _('specify ssh command to use')), 2205 ('e', 'ssh', "", _('specify ssh command to use')),
2195 ('', 'pull', None, _('use pull protocol to copy metadata')), 2206 ('', 'pull', None, _('use pull protocol to copy metadata')),
2207 ('r', 'rev', [], _('a changeset you would like to have after cloning')),
2196 ('', 'remotecmd', "", _('specify hg command to run on the remote side'))], 2208 ('', 'remotecmd', "", _('specify hg command to run on the remote side'))],
2197 _('hg clone [OPTION]... SOURCE [DEST]')), 2209 _('hg clone [OPTION]... SOURCE [DEST]')),
2198 "^commit|ci": 2210 "^commit|ci":
2199 (commit, 2211 (commit,
2200 [('A', 'addremove', None, _('run addremove during commit')), 2212 [('A', 'addremove', None, _('run addremove during commit')),
2302 "paths": (paths, [], _('hg paths [NAME]')), 2314 "paths": (paths, [], _('hg paths [NAME]')),
2303 "^pull": 2315 "^pull":
2304 (pull, 2316 (pull,
2305 [('u', 'update', None, _('update the working directory to tip after pull')), 2317 [('u', 'update', None, _('update the working directory to tip after pull')),
2306 ('e', 'ssh', "", _('specify ssh command to use')), 2318 ('e', 'ssh', "", _('specify ssh command to use')),
2319 ('r', 'rev', [], _('a specific revision you would like to pull')),
2307 ('', 'remotecmd', "", _('specify hg command to run on the remote side'))], 2320 ('', 'remotecmd', "", _('specify hg command to run on the remote side'))],
2308 _('hg pull [-u] [-e FILE] [--remotecmd FILE] [SOURCE]')), 2321 _('hg pull [-u] [-e FILE] [-r rev] [--remotecmd FILE] [SOURCE]')),
2309 "^push": 2322 "^push":
2310 (push, 2323 (push,
2311 [('f', 'force', None, _('force push')), 2324 [('f', 'force', None, _('force push')),
2312 ('e', 'ssh', "", _('specify ssh command to use')), 2325 ('e', 'ssh', "", _('specify ssh command to use')),
2313 ('', 'remotecmd', "", _('specify hg command to run on the remote side'))], 2326 ('', 'remotecmd', "", _('specify hg command to run on the remote side'))],