##// END OF EJS Templates
releasenotes: add a file in which to record release notes...
releasenotes: add a file in which to record release notes I've just spent a few very boring hours going through the changelog for the 5.0 release (829 commits). We only had 5 commits that used the syntax that the release notes extension expects. This commit adds a file in which we can record important changes. The file should preferably be edited in the patch that makes the important change, but it can also be edited after (I think this is an important benefit compared to the release notes extension). I'm thinking that we can rename the file from "next" to "5.1" or something when it's time, and then we'd create a new "next" file on the default branch. I've used the syntax that we use on the our wiki in the template, but I don't care much that we use any valid syntax at all. The idea is mostly to record important changes when they happen. I expect that some copy editing will be needed at release time anyway. Differential Revision: https://phab.mercurial-scm.org/D6332

File last commit:

r41401:876494fd default
r42457:0ed293a3 default
Show More
storefactory.py
85 lines | 2.5 KiB | text/x-python | PythonLexer
liscju
largefiles: move basestore._openstore into new module to remove cycle
r29305 # This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from __future__ import absolute_import
import re
from mercurial.i18n import _
from mercurial import (
error,
hg,
util,
)
from . import (
lfutil,
localstore,
wirestore,
)
# During clone this function is passed the src's ui object
# but it needs the dest's ui object so it can read out of
# the config file. Use repo.ui instead.
Boris Feld
largefiles: add support for 'largefiles://' url scheme...
r35580 def openstore(repo=None, remote=None, put=False, ui=None):
if ui is None:
ui = repo.ui
liscju
largefiles: move basestore._openstore into new module to remove cycle
r29305
if not remote:
lfpullsource = getattr(repo, 'lfpullsource', None)
if lfpullsource:
path = ui.expandpath(lfpullsource)
elif put:
path = ui.expandpath('default-push', 'default')
else:
path = ui.expandpath('default')
# ui.expandpath() leaves 'default-push' and 'default' alone if
# they cannot be expanded: fallback to the empty string,
# meaning the current directory.
Boris Feld
largefiles: add support for 'largefiles://' url scheme...
r35580 if repo is None:
path = ui.expandpath('default')
path, _branches = hg.parseurl(path)
remote = hg.peer(repo or ui, {}, path)
elif path == 'default-push' or path == 'default':
liscju
largefiles: move basestore._openstore into new module to remove cycle
r29305 remote = repo
else:
path, _branches = hg.parseurl(path)
Boris Feld
largefiles: add support for 'largefiles://' url scheme...
r35580 remote = hg.peer(repo or ui, {}, path)
liscju
largefiles: move basestore._openstore into new module to remove cycle
r29305
# The path could be a scheme so use Mercurial's normal functionality
# to resolve the scheme to a repository and use its path
path = util.safehasattr(remote, 'url') and remote.url() or remote.path
match = _scheme_re.match(path)
if not match: # regular filesystem path
scheme = 'file'
else:
scheme = match.group(1)
try:
storeproviders = _storeprovider[scheme]
except KeyError:
raise error.Abort(_('unsupported URL scheme %r') % scheme)
for classobj in storeproviders:
try:
return classobj(ui, repo, remote)
except lfutil.storeprotonotcapable:
pass
raise error.Abort(_('%s does not appear to be a largefile store') %
util.hidepassword(path))
_storeprovider = {
'file': [localstore.localstore],
'http': [wirestore.wirestore],
'https': [wirestore.wirestore],
'ssh': [wirestore.wirestore],
}
Augie Fackler
largefiles: make scheme regex a bytes regex...
r36328 _scheme_re = re.compile(br'^([a-zA-Z0-9+-.]+)://')
Boris Feld
largefiles: add support for 'largefiles://' url scheme...
r35580
def getlfile(ui, hash):
return util.chunkbuffer(openstore(ui=ui)._get(hash))