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

Unified Diff: gcl.py

Issue 391052: Group SCM-specific functions in classes to simplify generalization of the interface. (Closed)
Patch Set: One more fix Created 11 years, 1 month 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 | « no previous file | gclient.py » ('j') | gclient.py » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gcl.py
diff --git a/gcl.py b/gcl.py
index 16afdd7c4292c01c1cf452f70445f4b05969a44c..3ee71de94ec468add1c5db6eca4956f95b7cf588 100755
--- a/gcl.py
+++ b/gcl.py
@@ -19,10 +19,10 @@ import upload
import urllib2
# gcl now depends on gclient.
-import gclient_scm
+from scm import SVN
import gclient_utils
-__version__ = '1.1.1'
+__version__ = '1.1.2'
CODEREVIEW_SETTINGS = {
@@ -46,43 +46,13 @@ MISSING_TEST_MSG = "Change contains new or modified methods, but no new tests!"
FILES_CACHE = {}
-### SVN Functions
-
-def IsSVNMoved(filename):
M-A Ruel 2009/11/13 21:41:07 These 2 functions are moved to scm.py near the bot
- """Determine if a file has been added through svn mv"""
- info = gclient_scm.CaptureSVNInfo(filename)
- return (info.get('Copied From URL') and
- info.get('Copied From Rev') and
- info.get('Schedule') == 'add')
-
-
-def GetSVNFileProperty(file, property_name):
- """Returns the value of an SVN property for the given file.
-
- Args:
- file: The file to check
- property_name: The name of the SVN property, e.g. "svn:mime-type"
-
- Returns:
- The value of the property, which will be the empty string if the property
- is not set on the file. If the file is not under version control, the
- empty string is also returned.
- """
- output = RunShell(["svn", "propget", property_name, file])
- if (output.startswith("svn: ") and
- output.endswith("is not under version control")):
- return ""
- else:
- return output
-
-
def UnknownFiles(extra_args):
"""Runs svn status and prints unknown files.
Any args in |extra_args| are passed to the tool to support giving alternate
code locations.
"""
- return [item[1] for item in gclient_scm.CaptureSVNStatus(extra_args)
+ return [item[1] for item in SVN.CaptureStatus(extra_args)
if item[0][0] == '?']
@@ -93,7 +63,7 @@ def GetRepositoryRoot():
"""
global REPOSITORY_ROOT
if not REPOSITORY_ROOT:
- infos = gclient_scm.CaptureSVNInfo(os.getcwd(), print_error=False)
+ infos = SVN.CaptureInfo(os.getcwd(), print_error=False)
cur_dir_repo_root = infos.get("Repository Root")
if not cur_dir_repo_root:
raise gclient_utils.Error("gcl run outside of repository")
@@ -101,7 +71,7 @@ def GetRepositoryRoot():
REPOSITORY_ROOT = os.getcwd()
while True:
parent = os.path.dirname(REPOSITORY_ROOT)
- if (gclient_scm.CaptureSVNInfo(parent, print_error=False).get(
+ if (SVN.CaptureInfo(parent, print_error=False).get(
"Repository Root") != cur_dir_repo_root):
break
REPOSITORY_ROOT = parent
@@ -146,7 +116,7 @@ def GetCachedFile(filename, max_age=60*60*24*3, use_root=False):
os.stat(cached_file).st_mtime > max_age):
local_dir = os.path.dirname(os.path.abspath(filename))
local_base = os.path.basename(filename)
- dir_info = gclient_scm.CaptureSVNInfo(".")
+ dir_info = SVN.CaptureInfo(".")
repo_root = dir_info["Repository Root"]
if use_root:
url_path = repo_root
@@ -158,7 +128,7 @@ def GetCachedFile(filename, max_age=60*60*24*3, use_root=False):
r = ""
if not use_root:
local_path = os.path.join(local_dir, local_base)
- r = gclient_scm.CaptureSVNStatus((local_path,))
+ r = SVN.CaptureStatus((local_path,))
rc = -1
if r:
status = r[0][0]
@@ -478,7 +448,7 @@ class ChangeInfo(object):
if update_status:
for item in files:
filename = os.path.join(local_root, item[1])
- status_result = gclient_scm.CaptureSVNStatus(filename)
+ status_result = SVN.CaptureStatus(filename)
if not status_result or not status_result[0][0]:
# File has been reverted.
save = True
@@ -562,7 +532,7 @@ def GetModifiedFiles():
files_in_cl[filename] = change_info.name
# Get all the modified files.
- status_result = gclient_scm.CaptureSVNStatus(None)
+ status_result = SVN.CaptureStatus(None)
for line in status_result:
status = line[0]
filename = line[1]
@@ -751,8 +721,7 @@ def GenerateDiff(files, root=None):
for filename in files:
# Use svn info output instead of os.path.isdir because the latter fails
# when the file is deleted.
- if gclient_scm.CaptureSVNInfo(filename).get("Node Kind") in ("dir",
- "directory"):
+ if SVN.CaptureInfo(file).get('Node Kind') == 'directory':
continue
# If the user specified a custom diff command in their svn config file,
# then it'll be used when we do svn diff, which we don't want to happen
@@ -770,7 +739,7 @@ def GenerateDiff(files, root=None):
output = RunShell(["svn", "diff", "--config-dir", bogus_dir, filename])
if output:
diff.append(output)
- elif IsSVNMoved(filename):
+ elif SVN.IsMoved(filename):
# svn diff on a mv/cp'd file outputs nothing.
# We put in an empty Index entry so upload.py knows about them.
diff.append("\nIndex: %s\n" % filename)
@@ -996,7 +965,7 @@ def Change(change_info, args):
silent = FilterFlag(args, "--silent")
# Verify the user is running the change command from a read-write checkout.
- svn_info = gclient_scm.CaptureSVNInfo('.')
+ svn_info = SVN.CaptureInfo('.')
if not svn_info:
ErrorExit("Current checkout is unversioned. Please retry with a versioned "
"directory.")
@@ -1008,7 +977,7 @@ def Change(change_info, args):
f.close()
else:
override_description = None
-
+
if change_info.issue:
try:
description = GetIssueDescription(change_info.issue)
« no previous file with comments | « no previous file | gclient.py » ('j') | gclient.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698