Mercurial > hg
view hgext/graphlog.py @ 45020:697212a830fb stable
convert: bail out in Subversion source if encountering non-ASCII HTTP(S) URL
Before this patch, in the tested case, urllib raised `httplib.InvalidURL: URL
can't contain control characters. '/\xff/!svn/ver/0/.svn' (found at least
'\xff')`, which resulted in that the URL was never recognized as a Subversion
repository.
This patch adds a check that bails out if the URL contains non-ASCII characters.
The warning is not overly user-friendly, but giving the user something to type
into a search engine is definitively better than not explaining why the
repository was not recognized.
We could support non-ASCII chracters by quoting them before passing them to
urllib. However, we would want to be compatible with what the `svn` command
does, which converts the URL from the locale encoding to UTF-8, percent-encodes
it and sends it to the server. If the locale encoding is not UTF-8, the
behavior is IMHO not very intuitive, as the `svn` command may send different
(percent-encoded) octets than what was passed on the console. Instead of
copying this behavior, we better leave it forbidden.
author | Manuel Jacob <me@manueljacob.de> |
---|---|
date | Tue, 30 Jun 2020 04:55:52 +0200 |
parents | 9f70512ae2cf |
children | 6000f5b25c9b |
line wrap: on
line source
# ASCII graph log extension for Mercurial # # Copyright 2007 Joel Rosdahl <joel@rosdahl.net> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. '''command to view revision graphs from a shell (DEPRECATED) The functionality of this extension has been include in core Mercurial since version 2.3. Please use :hg:`log -G ...` instead. This extension adds a --graph option to the incoming, outgoing and log commands. When this options is given, an ASCII representation of the revision graph is also shown. ''' from __future__ import absolute_import from mercurial.i18n import _ from mercurial import ( cmdutil, commands, registrar, ) cmdtable = {} command = registrar.command(cmdtable) # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should # be specifying the version(s) of Mercurial they are tested with, or # leave the attribute unspecified. testedwith = b'ships-with-hg-core' @command( b'glog', [ ( b'f', b'follow', None, _( b'follow changeset history, or file history across copies and renames' ), ), ( b'', b'follow-first', None, _(b'only follow the first parent of merge changesets (DEPRECATED)'), ), ( b'd', b'date', b'', _(b'show revisions matching date spec'), _(b'DATE'), ), (b'C', b'copies', None, _(b'show copied files')), ( b'k', b'keyword', [], _(b'do case-insensitive search for a given text'), _(b'TEXT'), ), ( b'r', b'rev', [], _(b'show the specified revision or revset'), _(b'REV'), ), ( b'', b'removed', None, _(b'include revisions where files were removed'), ), (b'm', b'only-merges', None, _(b'show only merges (DEPRECATED)')), (b'u', b'user', [], _(b'revisions committed by user'), _(b'USER')), ( b'', b'only-branch', [], _( b'show only changesets within the given named branch (DEPRECATED)' ), _(b'BRANCH'), ), ( b'b', b'branch', [], _(b'show changesets within the given named branch'), _(b'BRANCH'), ), ( b'P', b'prune', [], _(b'do not display revision or any of its ancestors'), _(b'REV'), ), ] + cmdutil.logopts + cmdutil.walkopts, _(b'[OPTION]... [FILE]'), helpcategory=command.CATEGORY_CHANGE_NAVIGATION, inferrepo=True, ) def glog(ui, repo, *pats, **opts): """show revision history alongside an ASCII revision graph Print a revision history alongside a revision graph drawn with ASCII characters. Nodes printed as an @ character are parents of the working directory. This is an alias to :hg:`log -G`. """ opts['graph'] = True return commands.log(ui, repo, *pats, **opts)