| Index: deps2git/deps2git.py
|
| ===================================================================
|
| --- deps2git/deps2git.py (revision 160870)
|
| +++ deps2git/deps2git.py (working copy)
|
| @@ -23,28 +23,35 @@
|
| return (scm_url, scm_rev)
|
|
|
|
|
| -def SvnRevToGitHash(svn_rev, git_url, repos_path, git_host):
|
| +def SvnRevToGitHash(svn_rev, git_url, repos_path, workspace, dep_path,
|
| + git_host):
|
| """Convert a SVN revision to a Git commit id."""
|
| git_repo = None
|
| if git_url.startswith(git_host):
|
| git_repo = git_url.replace(git_host, '')
|
| else:
|
| raise Exception('Unknown git server')
|
| - if repos_path is None:
|
| + if repos_path is None and workspace is None:
|
| # We're running without a repository directory (i.e. no -r option).
|
| # We cannot actually find the commit id, but this mode is useful
|
| # just for testing the URL mappings. Produce an output file that
|
| # can't actually be used, but can be eyeballed for correct URLs.
|
| return 'xxx-r%s' % svn_rev
|
| - git_repo_path = os.path.join(repos_path, git_repo)
|
| + if repos_path:
|
| + git_repo_path = os.path.join(repos_path, git_repo)
|
| + mirror = True
|
| + else:
|
| + git_repo_path = os.path.join(workspace, dep_path)
|
| + mirror = False
|
| if not os.path.exists(git_repo_path):
|
| - git_tools.Clone(git_url, git_repo_path)
|
| + git_tools.Clone(git_url, git_repo_path, mirror)
|
| else:
|
| - git_tools.Fetch(git_repo_path)
|
| - return git_tools.Search(git_repo_path, svn_rev)
|
| + git_tools.Fetch(git_repo_path, mirror)
|
| + return git_tools.Search(git_repo_path, svn_rev, mirror)
|
|
|
|
|
| -def ConvertDepsToGit(deps, repos, deps_type, deps_vars, svn_deps_vars, verify):
|
| +def ConvertDepsToGit(deps, repos, workspace, deps_type, deps_vars,
|
| + svn_deps_vars, verify):
|
| """Convert a 'deps' section in a DEPS file from SVN to Git."""
|
| new_deps = {}
|
| bad_git_urls = set([])
|
| @@ -105,8 +112,8 @@
|
| if dep_url.endswith('.git'):
|
| git_hash = '@%s' % dep_rev
|
| else:
|
| - git_hash = '@%s' % SvnRevToGitHash(dep_rev, git_url, repos,
|
| - svn_to_git.GIT_HOST)
|
| + git_hash = '@%s' % SvnRevToGitHash(dep_rev, git_url, repos, workspace,
|
| + path, svn_to_git.GIT_HOST)
|
|
|
| # If this is webkit, we need to add the var for the hash.
|
| if dep == 'src/third_party/WebKit/Source':
|
| @@ -129,6 +136,8 @@
|
| help='type of DEPS file (public, etc)')
|
| parser.add_option('-r', '--repos',
|
| help='path to the directory holding all the Git repos')
|
| + parser.add_option('-w', '--workspace', metavar='PATH',
|
| + help='top level of a git-based gclient checkout')
|
| parser.add_option('--verify', action='store_true',
|
| help='ping each Git repo to make sure it exists')
|
| options = parser.parse_args()[0]
|
| @@ -147,12 +156,14 @@
|
| }
|
|
|
| # Convert the DEPS file to Git.
|
| - deps, baddeps = ConvertDepsToGit(deps, options.repos, options.type, deps_vars,
|
| - svn_deps_vars, options.verify)
|
| + deps, baddeps = ConvertDepsToGit(deps, options.repos, options.workspace,
|
| + options.type, deps_vars, svn_deps_vars,
|
| + options.verify)
|
| for os_dep in deps_os:
|
| deps_os[os_dep], os_bad_deps = ConvertDepsToGit(deps_os[os_dep],
|
| - options.repos, options.type, deps_vars,
|
| - svn_deps_vars, options.verify)
|
| + options.repos, options.workspace,
|
| + options.type, deps_vars, svn_deps_vars,
|
| + options.verify)
|
| baddeps = baddeps.union(os_bad_deps)
|
|
|
| if baddeps:
|
|
|