Mercurial > hg
view hgext/graphlog.py @ 35506:fa865878a849
lfs: show a friendly message when pushing lfs to a server without lfs enabled
Upfront disclaimer: I don't know anything about the wire protocol, and this was
pretty much cargo-culted from largefiles, and then clonebundles, since it seems
more modern. I was surprised that exchange.push() will ensure all of the proper
requirements when exchanging between two local repos, but doesn't care when one
is remote.
All this new capability marker does is inform the client that the extension is
enabled remotely. It may or may not contain commits with external blobs.
Open issues:
- largefiles uses 'largefiles=serve' for its capability. Someday I hope to
be able to push lfs blobs to an `hg serve` instance. That will probably
require a distinct capability. Should it change to '=serve' then? Or just
add an 'lfs-serve' capability then?
- The flip side of this is more complicated. It looks like largefiles adds an
'lheads' command for the client to signal to the server that the extension
is loaded. That is then converted to 'heads' and sent through the normal
wire protocol plumbing. A client using the 'heads' command directly is
kicked out with a message indicating that the largefiles extension must be
loaded. We could do similar with 'lfsheads', but then a repo with both
largefiles and lfs blobs can't be pushed over the wire. Hopefully somebody
with more wire protocol experience can think of something else. I see
'x-hgarg-1' on some commands in the tests, but not on heads, and didn't dig
any further.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 23 Dec 2017 17:49:12 -0500 |
parents | 0c9ba2ac60a8 |
children | c303d65d2e34 |
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 = 'ships-with-hg-core' @command('glog', [('f', 'follow', None, _('follow changeset history, or file history across copies and renames')), ('', 'follow-first', None, _('only follow the first parent of merge changesets (DEPRECATED)')), ('d', 'date', '', _('show revisions matching date spec'), _('DATE')), ('C', 'copies', None, _('show copied files')), ('k', 'keyword', [], _('do case-insensitive search for a given text'), _('TEXT')), ('r', 'rev', [], _('show the specified revision or revset'), _('REV')), ('', 'removed', None, _('include revisions where files were removed')), ('m', 'only-merges', None, _('show only merges (DEPRECATED)')), ('u', 'user', [], _('revisions committed by user'), _('USER')), ('', 'only-branch', [], _('show only changesets within the given named branch (DEPRECATED)'), _('BRANCH')), ('b', 'branch', [], _('show changesets within the given named branch'), _('BRANCH')), ('P', 'prune', [], _('do not display revision or any of its ancestors'), _('REV')), ] + cmdutil.logopts + cmdutil.walkopts, _('[OPTION]... [FILE]'), 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[r'graph'] = True return commands.log(ui, repo, *pats, **opts)