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

Unified Diff: git_tools.py

Issue 281183003: Eliminate redundant work and control parallelism. (Closed) Base URL: http://src.chromium.org/svn/trunk/tools/deps2git
Patch Set: Created 6 years, 7 months 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 | « deps2git.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « deps2git.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698