| Index: git_tools.py
|
| diff --git a/git_tools.py b/git_tools.py
|
| index 3a5408f6f3965d6a505df48856f51aba37371e68..a5f5bfc0c27fe3119ab2e0675b7696ae0b9aaade 100644
|
| --- a/git_tools.py
|
| +++ b/git_tools.py
|
| @@ -3,7 +3,6 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| -
|
| import cStringIO
|
| import os
|
| import re
|
| @@ -11,6 +10,15 @@ import subprocess
|
| import sys
|
| import threading
|
|
|
| +try:
|
| + import git_cache
|
| +except ImportError:
|
| + for p in os.environ['PATH'].split(os.pathsep):
|
| + if (os.path.basename(p) == 'depot_tools' and
|
| + os.path.exists(os.path.join(p, 'git_cache.py'))):
|
| + sys.path.append(p)
|
| + import git_cache
|
| +
|
|
|
| # Show more information about the commands being executed.
|
| VERBOSE = False
|
| @@ -54,8 +62,8 @@ class StdioBuffer(object):
|
| def GetStatusOutput(cmd, cwd=None, out_buffer=None):
|
| """Return (status, output) of executing cmd in a shell."""
|
| if VERBOSE:
|
| - print ''
|
| - print '[DEBUG] Running "%s"' % cmd
|
| + print >> sys.stderr, ''
|
| + print >> sys.stderr, '[DEBUG] Running "%s"' % cmd
|
|
|
| def _thread_main():
|
| thr = threading.current_thread()
|
| @@ -100,7 +108,8 @@ def GetStatusOutput(cmd, cwd=None, out_buffer=None):
|
| if VERBOSE:
|
| short_output = ' '.join(thr.stdout.splitlines())
|
| short_output = short_output.strip(' \t\n\r')
|
| - print '[DEBUG] Output: %d, %-60s' % (thr.status, short_output)
|
| + print >> sys.stderr, (
|
| + '[DEBUG] Output: %d, %-60s' % (thr.status, short_output))
|
|
|
| return (thr.status, thr.stdout)
|
|
|
| @@ -127,36 +136,8 @@ def Git(git_repo, command, is_mirror=False, out_buffer=None):
|
| return (status, output)
|
|
|
|
|
| -def GetCacheRepoDir(git_url, cache_dir):
|
| - """Assuming we used git_cache to populate a cache, get the repo directory."""
|
| - _, out = Git(None, 'cache exists --cache-dir=%s %s' % (cache_dir, git_url),
|
| - is_mirror=True)
|
| - return out.strip()
|
| -
|
| -
|
| -def Clone(git_url, git_repo, is_mirror, out_queue=None, cache_dir=None,
|
| - shallow=False):
|
| +def Clone(git_url, git_repo, is_mirror, out_buffer=None):
|
| """Clone a repository."""
|
| - repo_name = git_url.split('/')[-1]
|
| - if out_queue:
|
| - buf = StdioBuffer(repo_name, out_queue)
|
| - else:
|
| - buf = None
|
| -
|
| - if is_mirror == 'bare':
|
| - if shallow:
|
| - if 'adobe' in git_url:
|
| - # --shallow by default checks out 10000 revision, but for really large
|
| - # repos like adobe ones, we want significantly less than 10000.
|
| - shallow_arg = '--depth 10 '
|
| - else:
|
| - shallow_arg = '--shallow '
|
| - else:
|
| - shallow_arg = ''
|
| - cmd = 'cache populate -v --cache-dir %s %s%s' % (cache_dir, shallow_arg,
|
| - git_url)
|
| - return Git(None, cmd, is_mirror=True, out_buffer=buf)
|
| -
|
| cmd = 'clone'
|
| if is_mirror:
|
| cmd += ' --mirror'
|
| @@ -165,7 +146,18 @@ def Clone(git_url, git_repo, is_mirror, out_queue=None, cache_dir=None,
|
| if not is_mirror and not os.path.exists(git_repo):
|
| os.makedirs(git_repo)
|
|
|
| - return Git(None, cmd, is_mirror, buf)
|
| + return Git(None, cmd, is_mirror=is_mirror, out_buffer=out_buffer)
|
| +
|
| +
|
| +def PopulateCache(git_url, shallow=False):
|
| + # --shallow by default checks out 10000 revision, but for really large
|
| + # repos like adobe ones, we want significantly less than 10000.
|
| + depth = None
|
| + if shallow and 'adobe' in git_url:
|
| + depth = 10
|
| + mirror = git_cache.Mirror(git_url, print_func=lambda *args: None)
|
| + mirror.populate(depth=depth, shallow=shallow)
|
| + return mirror.mirror_path
|
|
|
|
|
| def Fetch(git_repo, git_url, is_mirror):
|
| @@ -275,7 +267,8 @@ def _SearchImpl(git_repo, svn_rev, is_mirror, refspec, fetch_url, regex):
|
| found_rev = None
|
| if (not found_rev or found_rev < int(svn_rev)) and fetch_url:
|
| if VERBOSE:
|
| - print 'Fetching %s %s [%s < %s]' % (git_repo, refspec, found_rev, svn_rev)
|
| + print >> sys.stderr, (
|
| + 'Fetching %s %s [%s < %s]' % (git_repo, refspec, found_rev, svn_rev))
|
| Fetch(git_repo, fetch_url, is_mirror)
|
| found_rev = _FindRevForCommitish(git_repo, refspec, is_mirror)
|
|
|
| @@ -295,7 +288,7 @@ def _SearchImpl(git_repo, svn_rev, is_mirror, refspec, fetch_url, regex):
|
| found_msg = svn_rev
|
| if found_rev != int(svn_rev):
|
| found_msg = '%s [actual: %s]' % (svn_rev, found_rev)
|
| - print '%s: %s <-> %s' % (git_repo, output, found_msg)
|
| + print >> sys.stderr, '%s: %s <-> %s' % (git_repo, output, found_msg)
|
| return output
|
|
|
|
|
|
|