Index: gcl.py |
=================================================================== |
--- gcl.py (revision 15891) |
+++ gcl.py (working copy) |
@@ -76,78 +76,14 @@ |
return output |
-def GetSVNStatus(file): |
- """Returns the svn 1.5 svn status emulated output. |
- |
- @file can be a string (one file) or a list of files.""" |
- command = ["svn", "status", "--xml"] |
- if file is None: |
- pass |
- elif isinstance(file, basestring): |
- command.append(file) |
- else: |
- command.extend(file) |
- |
- status_letter = { |
- '': ' ', |
- 'added': 'A', |
- 'conflicted': 'C', |
- 'deleted': 'D', |
- 'ignored': 'I', |
- 'missing': '!', |
- 'modified': 'M', |
- 'normal': ' ', |
- 'replaced': 'R', |
- 'unversioned': '?', |
- # TODO(maruel): Find the corresponding strings for X, ~ |
- } |
- output = RunShell(command) |
- dom = gclient.ParseXML(output) |
- results = [] |
- if dom: |
- # /status/target/entry/(wc-status|commit|author|date) |
- for target in dom.getElementsByTagName('target'): |
- base_path = target.getAttribute('path') |
- for entry in target.getElementsByTagName('entry'): |
- file = entry.getAttribute('path') |
- wc_status = entry.getElementsByTagName('wc-status') |
- assert len(wc_status) == 1 |
- # Emulate svn 1.5 status ouput... |
- statuses = [' ' for i in range(7)] |
- # Col 0 |
- xml_item_status = wc_status[0].getAttribute('item') |
- if xml_item_status in status_letter: |
- statuses[0] = status_letter[xml_item_status] |
- else: |
- raise Exception('Unknown item status "%s"; please implement me!' % |
- xml_item_status) |
- # Col 1 |
- xml_props_status = wc_status[0].getAttribute('props') |
- if xml_props_status == 'modified': |
- statuses[1] = 'M' |
- elif xml_props_status == 'conflicted': |
- statuses[1] = 'C' |
- elif (not xml_props_status or xml_props_status == 'none' or |
- xml_props_status == 'normal'): |
- pass |
- else: |
- raise Exception('Unknown props status "%s"; please implement me!' % |
- xml_props_status) |
- # Col 3 |
- if wc_status[0].getAttribute('copied') == 'true': |
- statuses[3] = '+' |
- item = (''.join(statuses), file) |
- results.append(item) |
- return results |
- |
- |
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 GetSVNStatus(extra_args) if item[0][0] == '?'] |
+ return [item[1] for item in gclient.CaptureSVNStatus(extra_args) |
+ if item[0][0] == '?'] |
def GetRepositoryRoot(): |
@@ -488,7 +424,7 @@ |
if update_status: |
for file in files: |
filename = os.path.join(GetRepositoryRoot(), file[1]) |
- status_result = GetSVNStatus(filename) |
+ status_result = gclient.CaptureSVNStatus(filename) |
if not status_result or not status_result[0][0]: |
# File has been reverted. |
save = True |
@@ -547,7 +483,7 @@ |
files_in_cl[filename] = change_info.name |
# Get all the modified files. |
- status_result = GetSVNStatus(None) |
+ status_result = gclient.CaptureSVNStatus(None) |
for line in status_result: |
status = line[0] |
filename = line[1] |