| Index: deps2git.py
|
| ===================================================================
|
| --- deps2git.py (revision 121912)
|
| +++ deps2git.py (working copy)
|
| @@ -3,12 +3,14 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| +"""Convert SVN based DEPS into .DEPS.git for use with NewGit."""
|
|
|
| import optparse
|
| +import os
|
| import sys
|
|
|
| -
|
| import deps_utils
|
| +import git_tools
|
|
|
|
|
| def SplitSvnUrl(url):
|
| @@ -33,7 +35,7 @@
|
| # 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)
|
| + return 'xxx-r%s' % svn_rev
|
| # TODO(unknown_coder): Most of the errors happen when people add new repos
|
| # that actually matches one of our expressions but dont exist yet on
|
| # git.chromium.org. We should probably at least ping git_url to make sure it
|
| @@ -45,21 +47,26 @@
|
| return git_tools.Search(git_repo_path, svn_rev)
|
|
|
|
|
| -def ConvertDepsToGit(deps, repos, deps_type, vars)
|
| +def ConvertDepsToGit(deps, repos, deps_type, deps_vars, svn_deps_vars):
|
| """Convert a 'deps' section in a DEPS file from SVN to Git."""
|
| new_deps = {}
|
| - deps_module = os.path.join(os.path.dirname(__file__),
|
| - 'svn_to_git_%s' % deps_type)
|
| - if not os.path.exists(depos_module):
|
| + try:
|
| + sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
|
| + svn_to_git = __import__('svn_to_git_%s' % deps_type)
|
| + except ImportError:
|
| raise Exception('invalid DEPS type')
|
| - svn_to_git = __import__(deps_module)
|
|
|
| + # Pull in any DEPS overrides from svn_to_git.
|
| + deps_overrides = {}
|
| + if hasattr(svn_to_git, 'DEPS_OVERRIDES'):
|
| + deps_overrides.update(svn_to_git.DEPS_OVERRIDES)
|
| +
|
| for dep in deps:
|
| # Get the SVN URL and the SVN rev for this dep.
|
| - (svn_url, svn_rev) = SplitSvnUrl(deps[dep])
|
| + svn_url, svn_rev = SplitSvnUrl(deps[dep])
|
|
|
| # Convert this SVN URL to a Git URL.
|
| - (path, git_url) = svn_to_git.SvnUrlToGitUrl(dep, svn_url)
|
| + path, git_url = svn_to_git.SvnUrlToGitUrl(dep, svn_url)
|
|
|
| if not path or not git_url:
|
| # We skip this path, this must not be required with Git.
|
| @@ -68,12 +75,22 @@
|
| # Get the Git hash based off the SVN rev.
|
| git_hash = ''
|
| if svn_rev != 'HEAD':
|
| - git_hash = '@%s' % SvnRevToGitHash(svn_rev, git_url, repos,
|
| - svn_to_git.GIT_HOST)
|
| + if dep in deps_overrides:
|
| + # Transfer any required variables over from SVN DEPS.
|
| + if not deps_overrides[dep] in svn_deps_vars:
|
| + raise Exception('Missing DEPS variable: %s' % deps_overrides[dep])
|
| + deps_vars[deps_overrides[dep]] = (
|
| + '@' + svn_deps_vars[deps_overrides[dep]].lstrip('@'))
|
| + # Tag this variable as needing a transform by Varify() later.
|
| + git_hash = '%s_%s' % (deps_utils.VARIFY_MARKER_TAG_PREFIX,
|
| + deps_overrides[dep])
|
| + else:
|
| + git_hash = '@%s' % SvnRevToGitHash(svn_rev, git_url, repos,
|
| + 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':
|
| - vars['webkit_rev'] = git_hash
|
| + deps_vars['webkit_rev'] = git_hash
|
| git_hash = 'VAR_WEBKIT_REV'
|
|
|
| # Add this Git dep to the new deps.
|
| @@ -92,27 +109,33 @@
|
| help='type of DEPS file (public, etc)')
|
| parser.add_option('-r', '--repos',
|
| help='path to the directory holding all the Git repos')
|
| - options, args = parser.parse_args()
|
| + options = parser.parse_args()[0]
|
|
|
| # Get the content of the DEPS file.
|
| - deps_content = deps_utils.GetDepsContent(options.deps)
|
| - (deps, deps_os, include_rules, skip_child_includes, hooks) = deps_content
|
| + deps_content = deps_utils.GetDepsContent(options.deps)
|
| + (deps, deps_os, include_rules, skip_child_includes, hooks,
|
| + svn_deps_vars) = deps_content
|
|
|
| # Create a var containing the Git and Webkit URL, this will make it easy for
|
| # people to use a mirror instead.
|
| - vars = {'git_url': 'http://git.chromium.org',
|
| - 'webkit_url': 'http://git.chromium.org/external/WebKit_trimmed.git'}
|
| + git_url = 'http://git.chromium.org'
|
| + deps_vars = {
|
| + 'git_url': git_url,
|
| + 'webkit_url': git_url + '/external/WebKit_trimmed.git'
|
| + }
|
|
|
| # Convert the DEPS file to Git.
|
| - deps = ConvertDepsToGit(deps, options.repos, options.type, vars)
|
| + deps = ConvertDepsToGit(deps, options.repos, options.type, deps_vars,
|
| + svn_deps_vars)
|
| for os_dep in deps_os:
|
| deps_os[os_dep] = ConvertDepsToGit(deps_os[os_dep], options.repos,
|
| - options.type, vars)
|
| + options.type, deps_vars, svn_deps_vars)
|
|
|
| # Write the DEPS file to disk.
|
| - deps_utils.WriteDeps(options.out, vars, deps, deps_os, include_rules,
|
| + deps_utils.WriteDeps(options.out, deps_vars, deps, deps_os, include_rules,
|
| skip_child_includes, hooks)
|
| return 0
|
|
|
| +
|
| if '__main__' == __name__:
|
| sys.exit(main())
|
|
|