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

Unified Diff: gclient_scm.py

Issue 874002: Stop SVNWrapper and GitWrapper from inheriting from scm.SVN and scm.GIT. (Closed)
Patch Set: Created 10 years, 9 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
« gclient.py ('K') | « gclient.py ('k') | scm.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.
« gclient.py ('K') | « gclient.py ('k') | scm.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698