本文整理汇总了Python中mercurial.hg.peer函数的典型用法代码示例。如果您正苦于以下问题:Python peer函数的具体用法?Python peer怎么用?Python peer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了peer函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: get_repo
def get_repo(url, alias):
global peer
myui = ui.ui()
myui.setconfig('ui', 'interactive', 'off')
myui.fout = sys.stderr
if get_config_bool('remote-hg.insecure'):
myui.setconfig('web', 'cacerts', '')
extensions.loadall(myui)
if hg.islocal(url) and not os.environ.get('GIT_REMOTE_HG_TEST_REMOTE'):
repo = hg.repository(myui, url)
if not os.path.exists(dirname):
os.makedirs(dirname)
else:
shared_path = os.path.join(gitdir, 'hg')
# check and upgrade old organization
hg_path = os.path.join(shared_path, '.hg')
if os.path.exists(shared_path) and not os.path.exists(hg_path):
repos = os.listdir(shared_path)
for x in repos:
local_hg = os.path.join(shared_path, x, 'clone', '.hg')
if not os.path.exists(local_hg):
continue
if not os.path.exists(hg_path):
shutil.move(local_hg, hg_path)
shutil.rmtree(os.path.join(shared_path, x, 'clone'))
# setup shared repo (if not there)
try:
hg.peer(myui, {}, shared_path, create=True)
except error.RepoError:
pass
if not os.path.exists(dirname):
os.makedirs(dirname)
local_path = os.path.join(dirname, 'clone')
if not os.path.exists(local_path):
hg.share(myui, shared_path, local_path, update=False)
else:
# make sure the shared path is always up-to-date
util.writefile(os.path.join(local_path, '.hg', 'sharedpath'), hg_path)
repo = hg.repository(myui, local_path)
try:
peer = hg.peer(myui, {}, url)
except:
die('Repository error')
repo.pull(peer, heads=None, force=True)
updatebookmarks(repo, peer)
return repo
开发者ID:julienw,项目名称:config-files,代码行数:57,代码来源:git-remote-hg.py
示例2: getTip
def getTip(self):
hg_ui = ui.ui()
if hasattr(hg, 'peer'):
repo = hg.peer(hg_ui, {}, self.uri)
else:
repo = hg.repository(hg_ui, self.uri)
return short(repo.heads()[0])
开发者ID:pombreda,项目名称:bob,代码行数:7,代码来源:hg.py
示例3: get_repo
def get_repo(remote):
if not changegroup or experiment('wire'):
if not changegroup and not check_enabled('no-mercurial'):
logging.warning('Mercurial libraries not found. Falling back to '
'native access.')
logging.warning(
'Native access to mercurial repositories is experimental!')
stream = HgRepoHelper.connect(remote.url)
if stream:
return bundlerepo(remote.url, stream)
return HelperRepo(remote.url)
if remote.parsed_url.scheme == 'file':
# Make file://c:/... paths work by taking the netloc
path = remote.parsed_url.netloc + remote.parsed_url.path
if sys.platform == 'win32':
# TODO: This probably needs more thought.
path = path.lstrip('/')
if not os.path.isdir(path):
return bundlerepo(path)
ui = get_ui()
if changegroup and remote.parsed_url.scheme == 'file':
repo = localpeer(ui, path)
else:
try:
repo = hg.peer(ui, {}, remote.url)
except (error.RepoError, urllib2.HTTPError, IOError):
return bundlerepo(remote.url, HTTPReader(remote.url))
assert repo.capable('getbundle')
return repo
开发者ID:glandium,项目名称:git-cinnabar,代码行数:33,代码来源:repo.py
示例4: cloneunified
def cloneunified(ui, dest='gecko', **opts):
"""Clone main Mozilla repositories into a unified local repository.
This command will clone the most common Mozilla repositories and will
add changesets and remote tracking markers into a common repository.
If the destination path is not given, 'gecko' will be used.
This command is effectively an alias for a number of other commands.
However, due to the way Mercurial internally stores data, it is recommended
to run this command to ensure optimal storage of data.
"""
path = ui.expandpath(dest)
repo = hg.repository(ui, path, create=True)
success = False
try:
for tree in ('esr17', 'b2g18', 'release', 'beta', 'aurora', 'central',
'inbound'):
peer = hg.peer(ui, {}, tree)
ui.warn('Pulling from %s.\n' % peer.url())
repo.pull(peer)
res = hg.update(repo, repo.lookup('central/default'))
success = True
return res
finally:
if not success:
shutil.rmtree(path)
开发者ID:armenzg,项目名称:version-control-tools,代码行数:29,代码来源:__init__.py
示例5: get_repo
def get_repo(remote):
if remote.parsed_url.scheme == 'file':
path = remote.parsed_url.path
if sys.platform == 'win32':
# TODO: This probably needs more thought.
path = path.lstrip('/')
if not os.path.isdir(path):
return bundlerepo(path)
if not changegroup or Git.config('cinnabar.experiments') == 'true':
if not changegroup:
logging.warning('Mercurial libraries not found. Falling back to '
'native access.')
logging.warning(
'Native access to mercurial repositories is experimental!')
try:
return HelperRepo(remote.url)
except NoHelperException:
raise Exception('Native access to mercurial repositories requires '
'the helper.')
if changegroup and remote.parsed_url.scheme == 'file':
repo = localpeer(get_ui(), path)
else:
repo = hg.peer(get_ui(), {}, remote.url)
assert repo.capable('getbundle')
return repo
开发者ID:jhlin,项目名称:git-cinnabar,代码行数:26,代码来源:__init__.py
示例6: nclone
def nclone(ui, source, dest=None, **opts):
'''make a copy of an existing repository and all nested repositories
Create a copy of an existing repository in a new directory.
Look at the help of clone command for more informations.'''
origsource = ui.expandpath(source)
remotesource, remotebranch = hg.parseurl(origsource, opts.get('branch'))
if hasattr(hg, 'peer'):
remoterepo = hg.peer(ui, opts, remotesource)
localrepo = remoterepo.local()
if localrepo:
remoterepo = localrepo
else:
remoterepo = hg.repository(hg.remoteui(ui, opts), remotesource)
if dest is None:
dest = hg.defaultdest(source)
ui.status(_("destination directory: %s\n") % dest)
for npath in remoterepo.nested:
if npath == '.':
npath = ''
u = util.url(source)
if u.scheme:
nsource = '%s/%s' % (source, npath)
else:
nsource = os.path.join(source, npath)
ndest = os.path.join(dest, npath)
ui.status('[%s]\n' % os.path.normpath(
os.path.join(os.path.basename(dest),
ndest[len(dest) + 1:])))
commands.clone(ui, nsource, dest=ndest, **opts)
ui.status('\n')
开发者ID:tygerlord,项目名称:hgnested,代码行数:32,代码来源:__init__.py
示例7: build_repo
def build_repo(self, url):
"""Make the Mercurial repo object self.repo available. If the local
clone does not exist, clone it, otherwise, ensure it is fetched."""
myui = ui()
myui.setconfig("ui", "interactive", "off")
myui.setconfig("extensions", "mq", "")
# FIXME: the following is a hack to achieve hg-git / remote-git compatibility
# at least for *local* operations. still need to figure out what the right
# thing to do is.
myui.setconfig("phases", "publish", False)
local_path = self.remotedir.joinpath("clone")
if not local_path.exists():
try:
self.peer, dstpeer = hg.clone(
myui, {}, url.encode("utf-8"), local_path.encode("utf-8"), update=False, pull=True
)
except (RepoError, Abort) as e:
sys.stderr.write("abort: %s\n" % e)
if e.hint:
sys.stderr.write("(%s)\n" % e.hint)
sys.exit(-1)
self.repo = dstpeer.local()
else:
self.repo = hg.repository(myui, local_path.encode("utf-8"))
self.peer = hg.peer(myui, {}, url.encode("utf-8"))
self.repo.pull(self.peer, heads=None, force=True)
self.marks.upgrade_marks(self)
开发者ID:buchuki,项目名称:gitifyhg,代码行数:30,代码来源:gitifyhg.py
示例8: _pullreviewidentifiers
def _pullreviewidentifiers(repo, identifiers):
"""Pull down information for a list of review identifier strings.
This will request the currently published data for a review identifier,
including the mapping of commits to review request ids for all review
requests that are currently part of the identifier.
"""
reviews = repo.reviews
# In the ideal world, we'd use RBTools to talk directly to the ReviewBoard
# API. Unfortunately, the Mercurial distribution on Windows doesn't ship
# with the json module. So, we proxy through the Mercurial server and have
# it do all the heavy lifting.
# FUTURE Hook up RBTools directly.
remote = hg.peer(repo, {}, reviews.remoteurl)
caps = getreviewcaps(remote)
if 'pullreviews' not in caps:
raise util.Abort('cannot pull code review metadata; '
'server lacks necessary features')
req = commonrequestdict(repo.ui)
req['identifiers'] = [str(i) for i in identifiers]
res = calljsoncommand(repo.ui, remote, 'pullreviews', data=req)
for rid, data in sorted(res['reviewrequests'].iteritems()):
reviews.savereviewrequest(rid, data)
return res['reviewrequests']
开发者ID:pkdevboxy,项目名称:version-control-tools,代码行数:28,代码来源:client.py
示例9: createrepomanifest
def createrepomanifest(ui, repo, search=None, replace=None):
"""Create a manifest of available review repositories.
The arguments define literal string search and replace values to use to
convert assumed http(s):// repo URLs into ssh:// URLs.
"""
repos = {}
for url in getreposfromreviewboard(repo):
peer = hg.peer(ui, {}, url)
root = peer.lookup('0')
# Filter out empty repos.
if root == nullid:
continue
if not url.startswith(('http://', 'https://')):
raise util.Abort('Expected http:// or https:// repo: %s' % url)
sshurl = url.replace(search, replace)
repos[root] = (url, sshurl)
lines = []
for root, (http, ssh) in sorted(repos.items()):
lines.append('%s %s %s\n' % (hex(root), http, ssh))
data = ''.join(lines)
repo.vfs.write('reviewrepos', data)
ui.write(data)
开发者ID:armenzg,项目名称:version-control-tools,代码行数:28,代码来源:server.py
示例10: annotatepeer
def annotatepeer(repo):
ui = repo.ui
# fileservice belongs to remotefilelog
fileservice = getattr(repo, 'fileservice', None)
sharepeer = ui.configbool('fastannotate', 'clientsharepeer', True)
if sharepeer and fileservice:
ui.debug('fastannotate: using remotefilelog connection pool\n')
conn = repo.connectionpool.get(repo.fallbackpath)
peer = conn.peer
stolen = True
else:
remotepath = ui.expandpath(
ui.config('fastannotate', 'remotepath', 'default'))
peer = hg.peer(ui, {}, remotepath)
stolen = False
try:
# Note: fastannotate requests should never trigger a remotefilelog
# "getfiles" request, because "getfiles" puts the stream into a state
# that does not exit. See "clientfetch": it does "getannotate" before
# any hg stuff that could potentially trigger a "getfiles".
yield peer
finally:
if not stolen:
for i in ['close', 'cleanup']:
getattr(peer, i, lambda: None)()
else:
conn.__exit__(None, None, None)
开发者ID:davidshepherd7,项目名称:dotfiles,代码行数:30,代码来源:protocol.py
示例11: _lookup_node
def _lookup_node(repo, hexnode, from_scm_type):
gitlookupnode = '_gitlookup_%s_%s' % (from_scm_type, hexnode)
# ui.expandpath('default') returns 'default' if there is no default
# path. This can be the case when command is ran on the server.
# In that case let's run lookup() command locally.
try:
return repo.lookup(gitlookupnode)
except error.RepoLookupError:
# Note: RepoLookupError is caught here because repo.lookup()
# can throw only this exception.
peerpath = repo.ui.expandpath('default')
# sshing can cause junk 'remote: ...' output to stdout, so we need to
# redirect it temporarily so automation can parse the result easily.
oldfout = repo.ui.fout
try:
repo.baseui.fout = repo.ui.ferr
remoterepo = hg.peer(repo, {}, peerpath)
return remoterepo.lookup(gitlookupnode)
except error.RepoError:
# Note: RepoError can be thrown by hg.peer(), RepoLookupError
# can be thrown by remoterepo.lookup(). RepoLookupError is a
# subclass of RepoError so catching just error.RepoError is enough.
return None
finally:
repo.baseui.fout = oldfout
开发者ID:davidshepherd7,项目名称:dotfiles,代码行数:27,代码来源:gitrevset.py
示例12: _findbundle
def _findbundle(repo, rev):
"""Returns the backup bundle that contains the given rev. If found, it
returns the bundle peer and the full rev hash. If not found, it return None
and the given rev value.
"""
ui = repo.ui
backuppath = repo.vfs.join("strip-backup")
backups = filter(os.path.isfile, glob.glob(backuppath + "/*.hg"))
backups.sort(key=lambda x: os.path.getmtime(x), reverse=True)
for backup in backups:
# Much of this is copied from the hg incoming logic
source = os.path.relpath(backup, pycompat.getcwd())
source = ui.expandpath(source)
source, branches = hg.parseurl(source)
other = hg.peer(repo, {}, source)
quiet = ui.quiet
try:
ui.quiet = True
ret = bundlerepo.getremotechanges(ui, repo, other, None, None, None)
localother, chlist, cleanupfn = ret
for node in chlist:
if hex(node).startswith(rev):
return other, node
except error.LookupError:
continue
finally:
ui.quiet = quiet
return None, rev
开发者ID:davidshepherd7,项目名称:dotfiles,代码行数:30,代码来源:reset.py
示例13: build_repo
def build_repo(self, url):
'''Make the Mercurial repo object self.repo available. If the local
clone does not exist, clone it, otherwise, ensure it is fetched.'''
myui = ui()
myui.setconfig('ui', 'interactive', 'off')
myui.setconfig('extensions', 'mq', '')
local_path = self.remotedir.joinpath('clone')
if not local_path.exists():
try:
self.peer, dstpeer = hg.clone(myui, {}, url.encode('utf-8'),
local_path.encode('utf-8'), update=False, pull=True)
except (RepoError, Abort) as e:
sys.stderr.write("abort: %s\n" % e)
if e.hint:
sys.stderr.write("(%s)\n" % e.hint)
sys.exit(-1)
self.repo = dstpeer.local()
else:
self.repo = hg.repository(myui, local_path.encode('utf-8'))
self.peer = hg.peer(myui, {}, url.encode('utf-8'))
self.repo.pull(self.peer, heads=None, force=True)
self.marks.upgrade_marks(self.repo)
开发者ID:xentac,项目名称:gitifyhg,代码行数:25,代码来源:gitifyhg.py
示例14: gc
def gc(ui, *args, **opts):
'''garbage collect the client and server filelog caches
'''
cachepaths = set()
# get the system client cache
systemcache = ui.config("remotefilelog", "cachepath")
if systemcache:
systemcache = util.expandpath(systemcache)
cachepaths.add(systemcache)
# get repo client and server cache
repopaths = [ui.environ['PWD']]
repopaths.extend(args)
repos = []
for repopath in repopaths:
try:
repo = hg.peer(ui, {}, repopath)
repos.append(repo)
repocache = repo.ui.config("remotefilelog", "cachepath")
if repocache:
repocache = util.expandpath(repocache)
cachepaths.add(repocache)
except error.RepoError:
pass
# gc client cache
for cachepath in cachepaths:
gcclient(ui, cachepath)
# gc server cache
for repo in repos:
remotefilelogserver.gcserver(ui, repo._repo)
开发者ID:pycontribs,项目名称:remotefilelog,代码行数:34,代码来源:__init__.py
示例15: find_pull_peer
def find_pull_peer(repo, opts, source):
source, branches = hg.parseurl(repo.ui.expandpath(source), opts.get('branch'))
try:
return hg.peer(repo, opts, source)
except error.RepoError:
if source == "default":
return
else:
raise
开发者ID:bhuztez,项目名称:hgtools,代码行数:9,代码来源:remotehq.py
示例16: getpeer
def getpeer(ui, opts, source):
try:
peer = hg.peer(ui, opts, source)
# ewwww, life without an API is messy
if isinstance(peer, localrepo.localpeer):
peer = localrepo.locallegacypeer(peer._repo)
return peer
except AttributeError:
return hg.repository(ui, source)
开发者ID:ambv,项目名称:.dot_files,代码行数:9,代码来源:hg_rdiff.py
示例17: identify
def identify(originalIdentify, ui, repo, *pats, **opts):
if not opts["list"]:
return originalIdentify(ui, repo, *pats, **opts)
else:
peer = hg.peer(ui, {}, pats[0])
for name, rev in peer.branchmap().items():
info = name
for r in rev:
info += ' ' + node.short(r)
print(info)
开发者ID:scm-tools,项目名称:brancheslist,代码行数:10,代码来源:wrappers.py
示例18: gcclient
def gcclient(ui, cachepath):
# get list of repos that use this cache
repospath = os.path.join(cachepath, 'repos')
if not os.path.exists(repospath):
ui.warn("no known cache at %s\n" % cachepath)
return
reposfile = open(repospath, 'r')
repos = set([r[:-1] for r in reposfile.readlines()])
reposfile.close()
# build list of useful files
validrepos = []
keepkeys = set()
_analyzing = _("analyzing repositories")
localcache = None
count = 0
for path in repos:
ui.progress(_analyzing, count, unit="repos", total=len(repos))
count += 1
path = ui.expandpath(path)
try:
peer = hg.peer(ui, {}, path)
except error.RepoError:
continue
validrepos.append(path)
reponame = peer._repo.name
if not localcache:
localcache = peer._repo.fileservice.localcache
keep = peer._repo.revs("(parents(draft()) + heads(all())) & public()")
for r in keep:
m = peer._repo[r].manifest()
for filename, filenode in m.iteritems():
key = fileserverclient.getcachekey(reponame, filename,
hex(filenode))
keepkeys.add(key)
ui.progress(_analyzing, None)
# write list of valid repos back
oldumask = os.umask(0o002)
try:
reposfile = open(repospath, 'w')
reposfile.writelines([("%s\n" % r) for r in validrepos])
reposfile.close()
finally:
os.umask(oldumask)
# prune cache
localcache.gc(keepkeys)
开发者ID:pycontribs,项目名称:remotefilelog,代码行数:55,代码来源:__init__.py
示例19: find_push_peer
def find_push_peer(repo, opts, dest):
dest = repo.ui.expandpath(dest or 'default-push', dest or 'default')
dest, branches = hg.parseurl(dest, opts.get('branch'))
try:
return hg.peer(repo, opts, dest)
except error.RepoError:
if dest == "default-push":
return
else:
raise
开发者ID:bhuztez,项目名称:hgtools,代码行数:11,代码来源:remotehq.py
示例20: get_repo
def get_repo(url):
parsed_url = munge_url(url)
if parsed_url.scheme == 'file':
path = parsed_url.path
if sys.platform == 'win32':
# TODO: This probably needs more thought.
path = path.lstrip('/')
if not os.path.isdir(path):
return bundlerepo(path)
url = urlunparse(parsed_url)
repo = hg.peer(get_ui(), {}, url)
assert repo.capable('getbundle')
return repo
开发者ID:gasolin,项目名称:git-cinnabar,代码行数:13,代码来源:hg.py
注:本文中的mercurial.hg.peer函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论