##// END OF EJS Templates
phabricator: ensure that `phabsend` is given a contiguous, linear commit range...
phabricator: ensure that `phabsend` is given a contiguous, linear commit range Supplying a non-linear range was another orphan factory. While in theory there could be a use case for skipping over garbage commits (like adding debugging) and getting the valuable commits extracted out at the same time as posting a review, it seems far more likely that specifying a non-linear range is a user error. This is another case of issue6045, but predates both 0680b8a1992a and 601ce5392cb0. Neither the `--no-amend` case nor resubmitting a previously submitted commit would cause orphans. But for the sake of simplicity and to keep the parents tracked on Phabricator in the proper state, ban missing commits unconditionally. Differential Revision: https://phab.mercurial-scm.org/D8454

File last commit:

r43347:687b865b default
r45281:c1c92239 stable
Show More
wirestore.py
42 lines | 1.3 KiB | text/x-python | PythonLexer
# Copyright 2010-2011 Fog Creek Software
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
'''largefile store working over Mercurial's wire protocol'''
from __future__ import absolute_import
from . import (
lfutil,
remotestore,
)
class wirestore(remotestore.remotestore):
def __init__(self, ui, repo, remote):
cap = remote.capable(b'largefiles')
if not cap:
raise lfutil.storeprotonotcapable([])
storetypes = cap.split(b',')
if b'serve' not in storetypes:
raise lfutil.storeprotonotcapable(storetypes)
self.remote = remote
super(wirestore, self).__init__(ui, repo, remote.url())
def _put(self, hash, fd):
return self.remote.putlfile(hash, fd)
def _get(self, hash):
return self.remote.getlfile(hash)
def _stat(self, hashes):
'''For each hash, return 0 if it is available, other values if not.
It is usually 2 if the largefile is missing, but might be 1 the server
has a corrupted copy.'''
with self.remote.commandexecutor() as e:
fs = []
for hash in hashes:
fs.append((hash, e.callcommand(b'statlfile', {b'sha': hash,})))
return {hash: f.result() for hash, f in fs}