| Index: gclient_scm.py
|
| diff --git a/gclient_scm.py b/gclient_scm.py
|
| index 1afd3f4ffa4382373e07b650fa9c8d287eb6e44a..cc11612c3789ff6300b84ae4e639e36d764f6c0a 100644
|
| --- a/gclient_scm.py
|
| +++ b/gclient_scm.py
|
| @@ -110,7 +110,7 @@ class SCMWrapper(object):
|
| return getattr(self, command)(options, args, file_list)
|
|
|
|
|
| -class GitWrapper(SCMWrapper, scm.GIT):
|
| +class GitWrapper(SCMWrapper):
|
| """Wrapper for Git"""
|
|
|
| def cleanup(self, options, args, file_list):
|
| @@ -146,12 +146,12 @@ class GitWrapper(SCMWrapper, scm.GIT):
|
| The patch file is generated from a diff of the merge base of HEAD and
|
| its upstream branch.
|
| """
|
| - __pychecker__ = 'unusednames=options,file_list'
|
| + __pychecker__ = 'unusednames=options,args,file_list'
|
| path = os.path.join(self._root_dir, self.relpath)
|
| merge_base = self._Run(['merge-base', 'HEAD', 'origin'])
|
| command = ['diff', merge_base]
|
| filterer = DiffFilterer(self.relpath)
|
| - self.RunAndFilterOutput(command, path, False, False, filterer.Filter)
|
| + scm.GIT.RunAndFilterOutput(command, path, False, False, filterer.Filter)
|
|
|
| def update(self, options, args, file_list):
|
| """Runs git to update or transparently checkout the working copy.
|
| @@ -196,7 +196,6 @@ class GitWrapper(SCMWrapper, scm.GIT):
|
| # hash is also a tag, only make a distinction at checkout
|
| rev_type = "hash"
|
|
|
| -
|
| if not os.path.exists(self.checkout_path):
|
| self._Clone(rev_type, revision, url, options.verbose)
|
| files = self._Run(['ls-files']).split()
|
| @@ -241,7 +240,7 @@ class GitWrapper(SCMWrapper, scm.GIT):
|
| # tracking branch
|
| # or 'master' if not a tracking branch (it's based on a specific rev/hash)
|
| # or it returns None if it couldn't find an upstream
|
| - upstream_branch = self.GetUpstream(self.checkout_path)
|
| + upstream_branch = scm.GIT.GetUpstream(self.checkout_path)
|
| if not upstream_branch or not upstream_branch.startswith('refs/remotes'):
|
| current_type = "hash"
|
| logging.debug("Current branch is based off a specific rev and is not "
|
| @@ -252,9 +251,9 @@ class GitWrapper(SCMWrapper, scm.GIT):
|
| raise gclient_utils.Error('Invalid Upstream')
|
|
|
| # Update the remotes first so we have all the refs.
|
| - for i in range(3):
|
| + for _ in range(3):
|
| try:
|
| - remote_output, remote_err = self.Capture(
|
| + remote_output, remote_err = scm.GIT.Capture(
|
| ['remote'] + verbose + ['update'],
|
| self.checkout_path,
|
| print_error=False)
|
| @@ -277,9 +276,9 @@ class GitWrapper(SCMWrapper, scm.GIT):
|
| if options.force or options.reset:
|
| self._Run(['reset', '--hard', 'HEAD'], redirect_stdout=False)
|
|
|
| - if current_type is 'hash':
|
| + if current_type == 'hash':
|
| # case 1
|
| - if self.IsGitSvn(self.checkout_path) and upstream_branch is not None:
|
| + if scm.GIT.IsGitSvn(self.checkout_path) and upstream_branch is not None:
|
| # Our git-svn branch (upstream_branch) is our upstream
|
| self._AttemptRebase(upstream_branch, files, verbose=options.verbose,
|
| newbase=revision, printed_path=printed_path)
|
| @@ -294,7 +293,7 @@ class GitWrapper(SCMWrapper, scm.GIT):
|
| self._AttemptRebase(upstream_branch, files=files,
|
| verbose=options.verbose, printed_path=printed_path)
|
| printed_path = True
|
| - elif rev_type is 'hash':
|
| + elif rev_type == 'hash':
|
| # case 2
|
| self._AttemptRebase(upstream_branch, files, verbose=options.verbose,
|
| newbase=revision, printed_path=printed_path)
|
| @@ -316,10 +315,10 @@ class GitWrapper(SCMWrapper, scm.GIT):
|
| if verbose:
|
| print "Trying fast-forward merge to branch : %s" % upstream_branch
|
| try:
|
| - merge_output, merge_err = self.Capture(['merge', '--ff-only',
|
| - upstream_branch],
|
| - self.checkout_path,
|
| - print_error=False)
|
| + merge_output, merge_err = scm.GIT.Capture(['merge', '--ff-only',
|
| + upstream_branch],
|
| + self.checkout_path,
|
| + print_error=False)
|
| except gclient_utils.CheckCallError, e:
|
| if re.match('fatal: Not possible to fast-forward, aborting.', e.stderr):
|
| if not printed_path:
|
| @@ -447,7 +446,7 @@ class GitWrapper(SCMWrapper, scm.GIT):
|
| clone_cmd.append('--verbose')
|
| clone_cmd.extend([url, self.checkout_path])
|
|
|
| - for i in range(3):
|
| + for _ in range(3):
|
| try:
|
| self._Run(clone_cmd, cwd=self._root_dir, redirect_stdout=False)
|
| break
|
| @@ -464,7 +463,7 @@ class GitWrapper(SCMWrapper, scm.GIT):
|
| continue
|
| raise e
|
|
|
| - if rev_type is "branch":
|
| + if rev_type == "branch":
|
| short_rev = revision.replace('refs/heads/', '')
|
| new_branch = revision.replace('heads', 'remotes/origin')
|
| elif revision.startswith('refs/tags/'):
|
| @@ -506,8 +505,9 @@ class GitWrapper(SCMWrapper, scm.GIT):
|
| rebase_cmd.append(branch)
|
|
|
| try:
|
| - rebase_output, rebase_err = self.Capture(rebase_cmd, self.checkout_path,
|
| - print_error=False)
|
| + rebase_output, rebase_err = scm.GIT.Capture(rebase_cmd,
|
| + self.checkout_path,
|
| + print_error=False)
|
| except gclient_utils.CheckCallError, e:
|
| if re.match(r'cannot rebase: you have unstaged changes', e.stderr) or \
|
| re.match(r'cannot rebase: your index contains uncommitted changes',
|
| @@ -521,8 +521,8 @@ class GitWrapper(SCMWrapper, scm.GIT):
|
| if re.match(r'yes|y', rebase_action, re.I):
|
| self._Run(['reset', '--hard', 'HEAD'], redirect_stdout=False)
|
| # Should this be recursive?
|
| - rebase_output, rebase_err = self.Capture(rebase_cmd,
|
| - self.checkout_path)
|
| + rebase_output, rebase_err = scm.GIT.Capture(rebase_cmd,
|
| + self.checkout_path)
|
| break
|
| elif re.match(r'quit|q', rebase_action, re.I):
|
| raise gclient_utils.Error("Please merge or rebase manually\n"
|
| @@ -578,7 +578,7 @@ class GitWrapper(SCMWrapper, scm.GIT):
|
| stdout = subprocess.PIPE
|
| if cwd == None:
|
| cwd = self.checkout_path
|
| - cmd = [self.COMMAND]
|
| + cmd = [scm.GIT.COMMAND]
|
| cmd.extend(args)
|
| logging.debug(cmd)
|
| try:
|
| @@ -594,7 +594,7 @@ class GitWrapper(SCMWrapper, scm.GIT):
|
| return output.strip()
|
|
|
|
|
| -class SVNWrapper(SCMWrapper, scm.SVN):
|
| +class SVNWrapper(SCMWrapper):
|
| """ Wrapper for SVN """
|
|
|
| def cleanup(self, options, args, file_list):
|
| @@ -602,14 +602,14 @@ class SVNWrapper(SCMWrapper, scm.SVN):
|
| __pychecker__ = 'unusednames=file_list,options'
|
| command = ['cleanup']
|
| command.extend(args)
|
| - self.Run(command, os.path.join(self._root_dir, self.relpath))
|
| + scm.SVN.Run(command, os.path.join(self._root_dir, self.relpath))
|
|
|
| def diff(self, options, args, file_list):
|
| # NOTE: This function does not currently modify file_list.
|
| __pychecker__ = 'unusednames=file_list,options'
|
| command = ['diff']
|
| command.extend(args)
|
| - self.Run(command, os.path.join(self._root_dir, self.relpath))
|
| + scm.SVN.Run(command, os.path.join(self._root_dir, self.relpath))
|
|
|
| def export(self, options, args, file_list):
|
| """Export a clean directory tree into the given path."""
|
| @@ -623,7 +623,7 @@ class SVNWrapper(SCMWrapper, scm.SVN):
|
| assert os.path.exists(export_path)
|
| command = ['export', '--force', '.']
|
| command.append(export_path)
|
| - self.Run(command, os.path.join(self._root_dir, self.relpath))
|
| + scm.SVN.Run(command, os.path.join(self._root_dir, self.relpath))
|
|
|
| def pack(self, options, args, file_list):
|
| """Generates a patch file which can be applied to the root of the
|
| @@ -634,7 +634,7 @@ class SVNWrapper(SCMWrapper, scm.SVN):
|
| command.extend(args)
|
|
|
| filterer = DiffFilterer(self.relpath)
|
| - self.RunAndFilterOutput(command, path, False, False, filterer.Filter)
|
| + scm.SVN.RunAndFilterOutput(command, path, False, False, filterer.Filter)
|
|
|
| def update(self, options, args, file_list):
|
| """Runs svn to update or transparently checkout the working copy.
|
| @@ -671,11 +671,11 @@ class SVNWrapper(SCMWrapper, scm.SVN):
|
| command = ['checkout', url, checkout_path]
|
| if revision:
|
| command.extend(['--revision', str(revision)])
|
| - self.RunAndGetFileList(options, command, self._root_dir, file_list)
|
| + scm.SVN.RunAndGetFileList(options, command, self._root_dir, file_list)
|
| return
|
|
|
| # Get the existing scm url and the revision number of the current checkout.
|
| - from_info = self.CaptureInfo(os.path.join(checkout_path, '.'), '.')
|
| + from_info = scm.SVN.CaptureInfo(os.path.join(checkout_path, '.'), '.')
|
| if not from_info:
|
| raise gclient_utils.Error("Can't update/checkout %r if an unversioned "
|
| "directory is present. Delete the directory "
|
| @@ -685,12 +685,12 @@ class SVNWrapper(SCMWrapper, scm.SVN):
|
| if options.manually_grab_svn_rev:
|
| # Retrieve the current HEAD version because svn is slow at null updates.
|
| if not revision:
|
| - from_info_live = self.CaptureInfo(from_info['URL'], '.')
|
| + from_info_live = scm.SVN.CaptureInfo(from_info['URL'], '.')
|
| revision = str(from_info_live['Revision'])
|
| rev_str = ' at %s' % revision
|
|
|
| if from_info['URL'] != base_url:
|
| - to_info = self.CaptureInfo(url, '.')
|
| + to_info = scm.SVN.CaptureInfo(url, '.')
|
| if not to_info.get('Repository Root') or not to_info.get('UUID'):
|
| # The url is invalid or the server is not accessible, it's safer to bail
|
| # out right now.
|
| @@ -712,12 +712,12 @@ class SVNWrapper(SCMWrapper, scm.SVN):
|
| from_info['Repository Root'],
|
| to_info['Repository Root'],
|
| self.relpath]
|
| - self.Run(command, self._root_dir)
|
| + scm.SVN.Run(command, self._root_dir)
|
| from_info['URL'] = from_info['URL'].replace(
|
| from_info['Repository Root'],
|
| to_info['Repository Root'])
|
| else:
|
| - if self.CaptureStatus(checkout_path):
|
| + if scm.SVN.CaptureStatus(checkout_path):
|
| raise gclient_utils.Error("Can't switch the checkout to %s; UUID "
|
| "don't match and there is local changes "
|
| "in %s. Delete the directory and "
|
| @@ -729,7 +729,7 @@ class SVNWrapper(SCMWrapper, scm.SVN):
|
| command = ['checkout', url, checkout_path]
|
| if revision:
|
| command.extend(['--revision', str(revision)])
|
| - self.RunAndGetFileList(options, command, self._root_dir, file_list)
|
| + scm.SVN.RunAndGetFileList(options, command, self._root_dir, file_list)
|
| return
|
|
|
|
|
| @@ -743,7 +743,7 @@ class SVNWrapper(SCMWrapper, scm.SVN):
|
| command = ["update", checkout_path]
|
| if revision:
|
| command.extend(['--revision', str(revision)])
|
| - self.RunAndGetFileList(options, command, self._root_dir, file_list)
|
| + scm.SVN.RunAndGetFileList(options, command, self._root_dir, file_list)
|
|
|
| def revert(self, options, args, file_list):
|
| """Reverts local modifications. Subversion specific.
|
| @@ -760,7 +760,7 @@ class SVNWrapper(SCMWrapper, scm.SVN):
|
| # Don't reuse the args.
|
| return self.update(options, [], file_list)
|
|
|
| - for file_status in self.CaptureStatus(path):
|
| + for file_status in scm.SVN.CaptureStatus(path):
|
| file_path = os.path.join(path, file_status[1])
|
| if file_status[0][0] == 'X':
|
| # Ignore externals.
|
| @@ -795,8 +795,8 @@ class SVNWrapper(SCMWrapper, scm.SVN):
|
| try:
|
| # svn revert is so broken we don't even use it. Using
|
| # "svn up --revision BASE" achieve the same effect.
|
| - self.RunAndGetFileList(options, ['update', '--revision', 'BASE'], path,
|
| - file_list)
|
| + scm.SVN.RunAndGetFileList(options, ['update', '--revision', 'BASE'], path,
|
| + file_list)
|
| except OSError, e:
|
| # Maybe the directory disapeared meanwhile. We don't want it to throw an
|
| # exception.
|
| @@ -805,7 +805,7 @@ class SVNWrapper(SCMWrapper, scm.SVN):
|
| def revinfo(self, options, args, file_list):
|
| """Display revision"""
|
| __pychecker__ = 'unusednames=args,file_list,options'
|
| - return self.CaptureHeadRevision(self.url)
|
| + return scm.SVN.CaptureHeadRevision(self.url)
|
|
|
| def runhooks(self, options, args, file_list):
|
| self.status(options, args, file_list)
|
| @@ -822,7 +822,7 @@ class SVNWrapper(SCMWrapper, scm.SVN):
|
| % (' '.join(command), path))
|
| # There's no file list to retrieve.
|
| else:
|
| - self.RunAndGetFileList(options, command, path, file_list)
|
| + scm.SVN.RunAndGetFileList(options, command, path, file_list)
|
|
|
| def FullUrlForRelativeUrl(self, url):
|
| # Find the forth '/' and strip from there. A bit hackish.
|
|
|