comparison mercurial/commands.py @ 4016:a195f11ed1a2

sync with -stable
author Thomas Arendsen Hein <thomas@intevation.de>
date Tue, 02 Jan 2007 22:40:52 +0100
parents 96e21337dc03 509342f95564
children 1bd6868b0b11
comparison
equal deleted inserted replaced
4007:20da40cc1c73 4016:a195f11ed1a2
9 from node import * 9 from node import *
10 from i18n import _ 10 from i18n import _
11 import bisect, os, re, sys, signal, imp, urllib, pdb, shlex, stat 11 import bisect, os, re, sys, signal, imp, urllib, pdb, shlex, stat
12 import fancyopts, ui, hg, util, lock, revlog, bundlerepo 12 import fancyopts, ui, hg, util, lock, revlog, bundlerepo
13 import difflib, patch, time, help, mdiff, tempfile 13 import difflib, patch, time, help, mdiff, tempfile
14 import traceback, errno, version, atexit 14 import traceback, errno, version, atexit, socket
15 import archival, changegroup, cmdutil, hgweb.server, sshserver 15 import archival, changegroup, cmdutil, hgweb.server, sshserver
16 16
17 class UnknownCommand(Exception): 17 class UnknownCommand(Exception):
18 """Exception raised if command is not in the command table.""" 18 """Exception raised if command is not in the command table."""
19 class AmbiguousCommand(Exception): 19 class AmbiguousCommand(Exception):
1335 ui.write(_('%s extension - %s\n') % (name.split('.')[-1], doc[0])) 1335 ui.write(_('%s extension - %s\n') % (name.split('.')[-1], doc[0]))
1336 for d in doc[1:]: 1336 for d in doc[1:]:
1337 ui.write(d, '\n') 1337 ui.write(d, '\n')
1338 1338
1339 ui.status('\n') 1339 ui.status('\n')
1340
1341 try:
1342 ct = mod.cmdtable
1343 except AttributeError:
1344 ui.status(_('no commands defined\n'))
1345 return
1346
1340 if ui.verbose: 1347 if ui.verbose:
1341 ui.status(_('list of commands:\n\n')) 1348 ui.status(_('list of commands:\n\n'))
1342 else: 1349 else:
1343 ui.status(_('list of commands (use "hg help -v %s" ' 1350 ui.status(_('list of commands (use "hg help -v %s" '
1344 'to show aliases and global options):\n\n') % name) 1351 'to show aliases and global options):\n\n') % name)
1345 1352
1346 modcmds = dict.fromkeys([c.split('|', 1)[0] for c in mod.cmdtable]) 1353 modcmds = dict.fromkeys([c.split('|', 1)[0] for c in ct])
1347 helplist(modcmds.has_key) 1354 helplist(modcmds.has_key)
1348 1355
1349 if name and name != 'shortlist': 1356 if name and name != 'shortlist':
1350 i = None 1357 i = None
1351 for f in (helpcmd, helptopic, helpext): 1358 for f in (helpcmd, helptopic, helpext):
1759 if ui.verbose: 1766 if ui.verbose:
1760 ui.write("%3s " % (m.execf(f) and "755" or "644")) 1767 ui.write("%3s " % (m.execf(f) and "755" or "644"))
1761 ui.write("%s\n" % f) 1768 ui.write("%s\n" % f)
1762 1769
1763 def merge(ui, repo, node=None, force=None): 1770 def merge(ui, repo, node=None, force=None):
1764 """Merge working directory with another revision 1771 """merge working directory with another revision
1765 1772
1766 Merge the contents of the current working directory and the 1773 Merge the contents of the current working directory and the
1767 requested revision. Files that changed between either parent are 1774 requested revision. Files that changed between either parent are
1768 marked as changed for the next commit and a commit must be 1775 marked as changed for the next commit and a commit must be
1769 performed before any further updates are allowed. 1776 performed before any further updates are allowed.
2475 gen = changegroup.readbundle(urllib.urlopen(fname), fname) 2482 gen = changegroup.readbundle(urllib.urlopen(fname), fname)
2476 modheads = repo.addchangegroup(gen, 'unbundle', 'bundle:' + fname) 2483 modheads = repo.addchangegroup(gen, 'unbundle', 'bundle:' + fname)
2477 return postincoming(ui, repo, modheads, opts['update']) 2484 return postincoming(ui, repo, modheads, opts['update'])
2478 2485
2479 def update(ui, repo, node=None, clean=False, date=None): 2486 def update(ui, repo, node=None, clean=False, date=None):
2480 """update or merge working directory 2487 """update working directory
2481 2488
2482 Update the working directory to the specified revision. 2489 Update the working directory to the specified revision.
2483 2490
2484 If there are no outstanding changes in the working directory and 2491 If there are no outstanding changes in the working directory and
2485 there is a linear relationship between the current version and the 2492 there is a linear relationship between the current version and the
2487 2494
2488 To merge the working directory with another revision, use the 2495 To merge the working directory with another revision, use the
2489 merge command. 2496 merge command.
2490 2497
2491 By default, update will refuse to run if doing so would require 2498 By default, update will refuse to run if doing so would require
2492 merging or discarding local changes. 2499 discarding local changes.
2493 """ 2500 """
2494 if date: 2501 if date:
2495 if node: 2502 if node:
2496 raise util.Abort(_("you can't specify a revision and a date")) 2503 raise util.Abort(_("you can't specify a revision and a date"))
2497 node = cmdutil.finddate(ui, repo, date) 2504 node = cmdutil.finddate(ui, repo, date)
2766 ('P', 'prune', [], _('do not display revision or any of its ancestors')), 2773 ('P', 'prune', [], _('do not display revision or any of its ancestors')),
2767 ('', 'template', '', _('display with template')), 2774 ('', 'template', '', _('display with template')),
2768 ] + walkopts, 2775 ] + walkopts,
2769 _('hg log [OPTION]... [FILE]')), 2776 _('hg log [OPTION]... [FILE]')),
2770 "manifest": (manifest, [], _('hg manifest [REV]')), 2777 "manifest": (manifest, [], _('hg manifest [REV]')),
2771 "merge": 2778 "^merge":
2772 (merge, 2779 (merge,
2773 [('f', 'force', None, _('force a merge with outstanding changes'))], 2780 [('f', 'force', None, _('force a merge with outstanding changes'))],
2774 _('hg merge [-f] [REV]')), 2781 _('hg merge [-f] [REV]')),
2775 "outgoing|out": (outgoing, 2782 "outgoing|out": (outgoing,
2776 [('M', 'no-merges', None, _('do not show merges')), 2783 [('M', 'no-merges', None, _('do not show merges')),
3228 if inst.errno == errno.EPIPE: 3235 if inst.errno == errno.EPIPE:
3229 if u.debugflag: 3236 if u.debugflag:
3230 u.warn(_("\nbroken pipe\n")) 3237 u.warn(_("\nbroken pipe\n"))
3231 else: 3238 else:
3232 raise 3239 raise
3240 except socket.error, inst:
3241 u.warn(_("abort: %s\n") % inst[1])
3233 except IOError, inst: 3242 except IOError, inst:
3234 if hasattr(inst, "code"): 3243 if hasattr(inst, "code"):
3235 u.warn(_("abort: %s\n") % inst) 3244 u.warn(_("abort: %s\n") % inst)
3236 elif hasattr(inst, "reason"): 3245 elif hasattr(inst, "reason"):
3237 u.warn(_("abort: error: %s\n") % inst.reason[1]) 3246 try: # usually it is in the form (errno, strerror)
3247 reason = inst.reason.args[1]
3248 except: # it might be anything, for example a string
3249 reason = inst.reason
3250 u.warn(_("abort: error: %s\n") % reason)
3238 elif hasattr(inst, "args") and inst[0] == errno.EPIPE: 3251 elif hasattr(inst, "args") and inst[0] == errno.EPIPE:
3239 if u.debugflag: 3252 if u.debugflag:
3240 u.warn(_("broken pipe\n")) 3253 u.warn(_("broken pipe\n"))
3241 elif getattr(inst, "strerror", None): 3254 elif getattr(inst, "strerror", None):
3242 if getattr(inst, "filename", None): 3255 if getattr(inst, "filename", None):