Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(863)

Unified Diff: repo

Issue 8540026: Update version of repo. Most importantly this takes repo from (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools/
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: repo
===================================================================
--- repo (revision 109734)
+++ repo (working copy)
@@ -2,7 +2,7 @@
## repo default configuration
##
-REPO_URL='http://git.chromium.org/external/repo.git'
+REPO_URL='https://code.google.com/p/git-repo/'
REPO_REV='stable'
# Copyright (C) 2008 Google Inc.
@@ -28,7 +28,7 @@
del magic
# increment this whenever we make important changes to this script
-VERSION = (1, 11)
+VERSION = (1, 13)
# increment this if the MAINTAINER_KEYS block is modified
KEYRING_VERSION = (1,0)
@@ -91,6 +91,7 @@
import readline
import subprocess
import sys
+import urllib2
home_dot_repo = os.path.expanduser('~/.repoconfig')
gpg_dir = os.path.join(home_dot_repo, 'gnupg')
@@ -187,10 +188,6 @@
else:
can_verify = True
- if not opt.quiet:
- print >>sys.stderr, 'Getting repo ...'
- print >>sys.stderr, ' from %s' % url
-
dst = os.path.abspath(os.path.join(repodir, S_repo))
_Clone(url, dst, opt.quiet)
@@ -300,15 +297,42 @@
raise CloneFailure()
-def _Fetch(local, quiet, *args):
+def _InitHttp():
+ handlers = []
+
+ mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
+ try:
+ import netrc
+ n = netrc.netrc()
+ for host in n.hosts:
+ p = n.hosts[host]
+ mgr.add_password(None, 'http://%s/' % host, p[0], p[2])
+ mgr.add_password(None, 'https://%s/' % host, p[0], p[2])
+ except:
+ pass
+ handlers.append(urllib2.HTTPBasicAuthHandler(mgr))
+
+ if 'http_proxy' in os.environ:
+ url = os.environ['http_proxy']
+ handlers.append(urllib2.ProxyHandler({'http': url, 'https': url}))
+ if 'REPO_CURL_VERBOSE' in os.environ:
+ handlers.append(urllib2.HTTPHandler(debuglevel=1))
+ handlers.append(urllib2.HTTPSHandler(debuglevel=1))
+ urllib2.install_opener(urllib2.build_opener(*handlers))
+
+def _Fetch(url, local, src, quiet):
+ if not quiet:
+ print >>sys.stderr, 'Get %s' % url
+
cmd = [GIT, 'fetch']
if quiet:
cmd.append('--quiet')
err = subprocess.PIPE
else:
err = None
- cmd.extend(args)
- cmd.append('origin')
+ cmd.append(src)
+ cmd.append('+refs/heads/*:refs/remotes/origin/*')
+ cmd.append('refs/tags/*:refs/tags/*')
proc = subprocess.Popen(cmd, cwd = local, stderr = err)
if err:
@@ -317,7 +341,63 @@
if proc.wait() != 0:
raise CloneFailure()
+def _DownloadBundle(url, local, quiet):
+ if not url.endswith('/'):
+ url += '/'
+ url += 'clone.bundle'
+ proc = subprocess.Popen(
+ [GIT, 'config', '--get-regexp', 'url.*.insteadof'],
+ cwd = local,
+ stdout = subprocess.PIPE)
+ for line in proc.stdout:
+ m = re.compile(r'^url\.(.*)\.insteadof (.*)$').match(line)
+ if m:
+ new_url = m.group(1)
+ old_url = m.group(2)
+ if url.startswith(old_url):
+ url = new_url + url[len(old_url):]
+ break
+ proc.stdout.close()
+ proc.wait()
+
+ if not url.startswith('http:') and not url.startswith('https:'):
+ return False
+
+ dest = open(os.path.join(local, '.git', 'clone.bundle'), 'w+b')
+ try:
+ try:
+ r = urllib2.urlopen(url)
+ except urllib2.HTTPError, e:
+ if e.code == 404:
+ return False
+ print >>sys.stderr, 'fatal: Cannot get %s' % url
+ print >>sys.stderr, 'fatal: HTTP error %s' % e.code
+ raise CloneFailure()
+ except urllib2.URLError, e:
+ print >>sys.stderr, 'fatal: Cannot get %s' % url
+ print >>sys.stderr, 'fatal: error %s' % e.reason
+ raise CloneFailure()
+ try:
+ if not quiet:
+ print >>sys.stderr, 'Get %s' % url
+ while True:
+ buf = r.read(8192)
+ if buf == '':
+ return True
+ dest.write(buf)
+ finally:
+ r.close()
+ finally:
+ dest.close()
+
+def _ImportBundle(local):
+ path = os.path.join(local, '.git', 'clone.bundle')
+ try:
+ _Fetch(local, local, path, True)
+ finally:
+ os.remove(path)
+
def _Clone(url, local, quiet):
"""Clones a git repository to a new subdirectory of repodir
"""
@@ -344,11 +424,14 @@
print >>sys.stderr, 'fatal: could not create %s' % local
raise CloneFailure()
+ _InitHttp()
_SetConfig(local, 'remote.origin.url', url)
_SetConfig(local, 'remote.origin.fetch',
'+refs/heads/*:refs/remotes/origin/*')
- _Fetch(local, quiet)
- _Fetch(local, quiet, '--tags')
+ if _DownloadBundle(url, local, quiet):
+ _ImportBundle(local)
+ else:
+ _Fetch(url, local, 'origin', quiet)
def _Verify(cwd, branch, quiet):
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698