# HG changeset patch # User Matt Mackall # Date 1158697693 18000 # Node ID abd9a05fca0b30f2ebed5f4cbdd37116bfb6c70c # Parent 4bf2e895cf86293611fd0acf1c5355be96c41520# Parent 15fde1970003009665c74ec4f64fa6faa12c984b Merge with crew diff -r 4bf2e895cf86 -r abd9a05fca0b hgext/extdiff.py --- a/hgext/extdiff.py Tue Sep 19 14:58:54 2006 -0500 +++ b/hgext/extdiff.py Tue Sep 19 15:28:13 2006 -0500 @@ -23,13 +23,19 @@ # # add new command that runs GNU diff(1) in 'context diff' mode # cmd.cdiff = gdiff # opts.cdiff = -Nprc5 + # # add new command called vdiff, runs kdiff3 # cmd.vdiff = kdiff3 + # # add new command called meld, runs meld (no need to name twice) # cmd.meld = + # # add new command called vimdiff, runs gvimdiff with DirDiff plugin # #(see http://www.vim.org/scripts/script.php?script_id=102) -# cmd.vimdiff = LC_ALL=C gvim -f '+bdel 1 2' '+ execute "DirDiff ".argv(0)." ".argv(1)' +# # Non english user, be sure to put "let g:DirDiffDynamicDiffText = 1" in +# # your .vimrc +# cmd.vimdiff = gvim +# opts.vimdiff = -f '+next' '+execute "DirDiff" argv(0) argv(1)' # # Each custom diff commands can have two parts: a `cmd' and an `opts' # part. The cmd.xxx option defines the name of an executable program @@ -131,8 +137,12 @@ specified then that revision is compared to the working directory, and, when no revisions are specified, the working directory files are compared to its parent.''' - return dodiff(ui, repo, opts['program'] or 'diff', - opts['option'] or ['-Npru'], pats, opts) + program = opts['program'] or 'diff' + if opts['program']: + option = opts['option'] + else: + option = opts['option'] or ['-Npru'] + return dodiff(ui, repo, program, option, pats, opts) cmdtable = { "extdiff": diff -r 4bf2e895cf86 -r abd9a05fca0b hgext/mq.py --- a/hgext/mq.py Tue Sep 19 14:58:54 2006 -0500 +++ b/hgext/mq.py Tue Sep 19 15:28:13 2006 -0500 @@ -1276,39 +1276,40 @@ self.ui.write("No patches applied\n") return 1 - def qimport(self, repo, files, patch=None, existing=None, force=None): - if len(files) > 1 and patch: + def qimport(self, repo, files, patchname=None, existing=None, force=None): + if len(files) > 1 and patchname: raise util.Abort(_('option "-n" not valid when importing multiple ' 'files')) i = 0 added = [] for filename in files: if existing: - if not patch: - patch = filename - if not os.path.isfile(self.join(patch)): - raise util.Abort(_("patch %s does not exist") % patch) + if not patchname: + patchname = filename + if not os.path.isfile(self.join(patchname)): + raise util.Abort(_("patch %s does not exist") % patchname) else: try: text = file(filename).read() except IOError: - raise util.Abort(_("unable to read %s") % patch) - if not patch: - patch = os.path.split(filename)[1] - if not force and os.path.exists(self.join(patch)): - raise util.Abort(_('patch "%s" already exists') % patch) - patchf = self.opener(patch, "w") + raise util.Abort(_("unable to read %s") % patchname) + if not patchname: + patchname = os.path.basename(filename) + if not force and os.path.exists(self.join(patchname)): + raise util.Abort(_('patch "%s" already exists') + % patchname) + patchf = self.opener(patchname, "w") patchf.write(text) - if patch in self.series: + if patchname in self.series: raise util.Abort(_('patch %s is already in the series file') - % patch) + % patchname) index = self.full_series_end() + i - self.full_series[index:index] = [patch] + self.full_series[index:index] = [patchname] self.parse_series() - self.ui.warn("adding %s to series file\n" % patch) + self.ui.warn("adding %s to series file\n" % patchname) i += 1 - added.append(patch) - patch = None + added.append(patchname) + patchname = None self.series_dirty = 1 qrepo = self.qrepo() if qrepo: @@ -1344,7 +1345,7 @@ def qimport(ui, repo, *filename, **opts): """import a patch""" q = repo.mq - q.qimport(repo, filename, patch=opts['name'], + q.qimport(repo, filename, patchname=opts['name'], existing=opts['existing'], force=opts['force']) q.save_dirty() return 0 diff -r 4bf2e895cf86 -r abd9a05fca0b mercurial/commands.py --- a/mercurial/commands.py Tue Sep 19 14:58:54 2006 -0500 +++ b/mercurial/commands.py Tue Sep 19 15:28:13 2006 -0500 @@ -50,21 +50,6 @@ (logfile, inst.strerror)) return message -def defaultrev(repo, rev=None, default='tip'): - """returns rev if it is specified, otherwise the working dir - parent if there is only one, or tip if there is no working - dir""" - if rev: - return rev - - p1, p2 = repo.dirstate.parents() - if p2 != nullid: - raise util.Abort(_('uncommitted merge - please provide a ' - 'specific revision')) - if p1 != nullid: - return hex(p1) - return default - def walkchangerevs(ui, repo, pats, opts): '''Iterate over files and the revs they changed in. @@ -114,7 +99,7 @@ return [], False, matchfn if follow: - defrange = '%s:0' % defaultrev(repo) + defrange = '%s:0' % repo.changectx().rev() else: defrange = 'tip:0' revs = map(int, cmdutil.revrange(ui, repo, opts['rev'] or [defrange])) @@ -646,7 +631,7 @@ if not opts['user'] and not opts['changeset'] and not opts['date']: opts['number'] = 1 - ctx = repo.changectx(defaultrev(repo, opts['rev'])) + ctx = repo.changectx(opts['rev']) for src, abs, rel, exact in cmdutil.walk(repo, pats, opts, node=ctx.node()): @@ -693,7 +678,7 @@ The default is the basename of the archive, with suffixes removed. ''' - node = repo.lookup(defaultrev(repo, opts['rev'])) + node = repo.changectx(opts['rev']).node() dest = cmdutil.make_filename(repo, dest, node) if os.path.realpath(dest) == repo.root: raise util.Abort(_('repository root cannot be destination')) @@ -810,7 +795,7 @@ %d dirname of file being printed, or '.' if in repo root %p root-relative path name of file being printed """ - ctx = repo.changectx(defaultrev(repo, opts['rev'])) + ctx = repo.changectx(opts['rev']) for src, abs, rel, exact in cmdutil.walk(repo, (file1,) + pats, opts, ctx.node()): fp = cmdutil.make_file(repo, opts['output'], ctx.node(), pathname=abs) @@ -2228,7 +2213,10 @@ 'use --all to revert the whole repo')) parent, p2 = repo.dirstate.parents() - node = repo.lookup(defaultrev(repo, opts['rev'])) + if not opts['rev'] and p2 != nullid: + raise util.Abort(_('uncommitted merge - please provide a ' + 'specific revision')) + node = repo.changectx(opts['rev']).node() mf = repo.manifest.read(repo.changelog.read(node)[0]) if node == parent: pmf = mf @@ -2528,10 +2516,10 @@ raise util.Abort(_("use only one form to specify the revision")) if opts['rev']: rev_ = opts['rev'] - r = defaultrev(repo, rev_, nullid) - if r == nullid: - raise util.Abort(_('no revision to tag')) - r = repo.lookup(r) + if not rev_ and repo.dirstate.parents()[1] != nullid: + raise util.Abort(_('uncommitted merge - please provide a ' + 'specific revision')) + r = repo.changectx(rev_).node() message = opts['message'] if not message: diff -r 4bf2e895cf86 -r abd9a05fca0b mercurial/context.py --- a/mercurial/context.py Tue Sep 19 14:58:54 2006 -0500 +++ b/mercurial/context.py Tue Sep 19 15:28:13 2006 -0500 @@ -12,10 +12,19 @@ class changectx(object): """A changecontext object makes access to data related to a particular changeset convenient.""" - def __init__(self, repo, changeid): + def __init__(self, repo, changeid=None): """changeid is a revision number, node, or tag""" self._repo = repo + if not changeid: + p1, p2 = self._repo.dirstate.parents() + self._rev = self._repo.changelog.rev(p1) + if self._rev == -1: + changeid = 'tip' + else: + self._node = p1 + return + self._node = self._repo.lookup(changeid) self._rev = self._repo.changelog.rev(self._node) diff -r 4bf2e895cf86 -r abd9a05fca0b mercurial/hgweb/hgweb_mod.py --- a/mercurial/hgweb/hgweb_mod.py Tue Sep 19 14:58:54 2006 -0500 +++ b/mercurial/hgweb/hgweb_mod.py Tue Sep 19 15:28:13 2006 -0500 @@ -825,7 +825,6 @@ req.write(resp) def do_between(self, req): - nodes = [] if req.form.has_key('pairs'): pairs = [map(bin, p.split("-")) for p in req.form['pairs'][0].split(" ")] diff -r 4bf2e895cf86 -r abd9a05fca0b mercurial/hgweb/server.py --- a/mercurial/hgweb/server.py Tue Sep 19 14:58:54 2006 -0500 +++ b/mercurial/hgweb/server.py Tue Sep 19 15:28:13 2006 -0500 @@ -30,9 +30,9 @@ self.handler = handler def flush(self): pass - def write(str): + def write(self, str): self.writelines(str.split('\n')) - def writelines(seq): + def writelines(self, seq): for msg in seq: self.handler.log_error("HG error: %s", msg) diff -r 4bf2e895cf86 -r abd9a05fca0b mercurial/httprepo.py --- a/mercurial/httprepo.py Tue Sep 19 14:58:54 2006 -0500 +++ b/mercurial/httprepo.py Tue Sep 19 15:28:13 2006 -0500 @@ -131,7 +131,7 @@ self.ui = ui proxyurl = ui.config("http_proxy", "host") or os.getenv('http_proxy') - proxyauthinfo = None + # XXX proxyauthinfo = None handler = httphandler() if proxyurl: @@ -288,14 +288,13 @@ def changegroup(self, nodes, kind): n = " ".join(map(hex, nodes)) f = self.do_cmd("changegroup", roots=n) - bytes = 0 def zgenerator(f): zd = zlib.decompressobj() try: for chnk in f: yield zd.decompress(chnk) - except httplib.HTTPException, inst: + except httplib.HTTPException: raise IOError(None, _('connection ended unexpectedly')) yield zd.flush() diff -r 4bf2e895cf86 -r abd9a05fca0b mercurial/localrepo.py --- a/mercurial/localrepo.py Tue Sep 19 14:58:54 2006 -0500 +++ b/mercurial/localrepo.py Tue Sep 19 15:28:13 2006 -0500 @@ -318,7 +318,7 @@ f = f[1:] return filelog.filelog(self.opener, f, self.revlogversion) - def changectx(self, changeid): + def changectx(self, changeid=None): return context.changectx(self, changeid) def filectx(self, path, changeid=None, fileid=None): diff -r 4bf2e895cf86 -r abd9a05fca0b mercurial/revlog.py --- a/mercurial/revlog.py Tue Sep 19 14:58:54 2006 -0500 +++ b/mercurial/revlog.py Tue Sep 19 15:28:13 2006 -0500 @@ -116,7 +116,6 @@ which takes much less time. """ if self.allmap: return - start = 0 end = self.datasize self.allmap = 1 cur = 0 diff -r 4bf2e895cf86 -r abd9a05fca0b mercurial/util.py --- a/mercurial/util.py Tue Sep 19 14:58:54 2006 -0500 +++ b/mercurial/util.py Tue Sep 19 15:28:13 2006 -0500 @@ -615,7 +615,8 @@ try: rcs.extend([os.path.join(rcdir, f) for f in os.listdir(rcdir) if f.endswith(".rc")]) - except OSError, inst: pass + except OSError: + pass return rcs def os_rcpath():