mercurial/cmdutil.py
changeset 14323 a79fea6b3e77
parent 14322 a90131b85fd8
child 14442 5b48ad1e7f1a
equal deleted inserted replaced
14322:a90131b85fd8 14323:a79fea6b3e77
     6 # GNU General Public License version 2 or any later version.
     6 # GNU General Public License version 2 or any later version.
     7 
     7 
     8 from node import hex, nullid, nullrev, short
     8 from node import hex, nullid, nullrev, short
     9 from i18n import _
     9 from i18n import _
    10 import os, sys, errno, re, tempfile
    10 import os, sys, errno, re, tempfile
    11 import util, scmutil, templater, patch, error, templatekw
    11 import util, scmutil, templater, patch, error, templatekw, revlog
    12 import match as matchmod
    12 import match as matchmod
    13 import subrepo
    13 import subrepo
    14 
    14 
    15 def parsealiases(cmd):
    15 def parsealiases(cmd):
    16     return cmd.lstrip("^").split("|")
    16     return cmd.lstrip("^").split("|")
   167     if hasattr(pat, 'read') and 'r' in mode:
   167     if hasattr(pat, 'read') and 'r' in mode:
   168         return pat
   168         return pat
   169     return open(makefilename(repo, pat, node, total, seqno, revwidth,
   169     return open(makefilename(repo, pat, node, total, seqno, revwidth,
   170                               pathname),
   170                               pathname),
   171                 mode)
   171                 mode)
       
   172 
       
   173 def openrevlog(repo, cmd, file_, opts):
       
   174     """opens the changelog, manifest, a filelog or a given revlog"""
       
   175     cl = opts['changelog']
       
   176     mf = opts['manifest']
       
   177     msg = None
       
   178     if cl and mf:
       
   179         msg = _('cannot specify --changelog and --manifest at the same time')
       
   180     elif cl or mf:
       
   181         if file_:
       
   182             msg = _('cannot specify filename with --changelog or --manifest')
       
   183         elif not repo:
       
   184             msg = _('cannot specify --changelog or --manifest '
       
   185                     'without a repository')
       
   186     if msg:
       
   187         raise util.Abort(msg)
       
   188 
       
   189     r = None
       
   190     if repo:
       
   191         if cl:
       
   192             r = repo.changelog
       
   193         elif mf:
       
   194             r = repo.manifest
       
   195         elif file_:
       
   196             filelog = repo.file(file_)
       
   197             if len(filelog):
       
   198                 r = filelog
       
   199     if not r:
       
   200         if not file_:
       
   201             raise error.CommandError(cmd, _('invalid arguments'))
       
   202         if not os.path.isfile(file_):
       
   203             raise util.Abort(_("revlog '%s' not found") % file_)
       
   204         r = revlog.revlog(scmutil.opener(os.getcwd(), audit=False),
       
   205                           file_[:-2] + ".i")
       
   206     return r
   172 
   207 
   173 def copy(ui, repo, pats, opts, rename=False):
   208 def copy(ui, repo, pats, opts, rename=False):
   174     # called with the repo lock held
   209     # called with the repo lock held
   175     #
   210     #
   176     # hgsep => pathname that uses "/" to separate directories
   211     # hgsep => pathname that uses "/" to separate directories