Index: tools/findit/svn_repository_parser.py |
diff --git a/tools/findit/svn_repository_parser.py b/tools/findit/svn_repository_parser.py |
index be1965d66adc88e585541e77310c1c2adfa56c02..4ed8c92a62eb0e482f4730d9a3980d33460bbcc0 100644 |
--- a/tools/findit/svn_repository_parser.py |
+++ b/tools/findit/svn_repository_parser.py |
@@ -1,9 +1,8 @@ |
-# Copyright 2014 The Chromium Authors. All rights reserved. |
+# Copyright (c) 2014 The Chromium Authors. All rights reserved. |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
import logging |
-import os |
import xml.dom.minidom as minidom |
from xml.parsers.expat import ExpatError |
@@ -80,14 +79,16 @@ class SVNParser(ParserInterface): |
for changed_path in paths[0].getElementsByTagName('path'): |
# Get path, file action and file name from the xml. |
stgao
2014/08/22 06:50:54
comment is not updated.
jeun
2014/08/22 22:58:44
Done.
|
file_path = changed_path.firstChild.nodeValue |
- file_action = changed_path.getAttribute('action') |
- changed_file = os.path.basename(file_path) |
+ file_change_type = changed_path.getAttribute('action') |
+ |
+ if file_path.startswith('/trunk/'): |
+ file_path = file_path[len('/trunk/'):] |
# Add file to the map. |
- if changed_file not in file_to_revision_map: |
- file_to_revision_map[changed_file] = [] |
- file_to_revision_map[changed_file].append( |
- (revision_number, file_action, file_path)) |
+ if file_path not in file_to_revision_map: |
+ file_to_revision_map[file_path] = [] |
+ file_to_revision_map[file_path].append( |
+ (revision_number, file_change_type)) |
# Set commit message of the CL. |
revision_object['message'] = revision.getElementsByTagName('msg')[ |
@@ -102,7 +103,7 @@ class SVNParser(ParserInterface): |
return (revision_map, file_to_revision_map) |
- def ParseLineDiff(self, path, component, file_action, revision_number): |
+ def ParseLineDiff(self, path, component, file_change_type, revision_number): |
changed_line_numbers = [] |
changed_line_contents = [] |
@@ -113,7 +114,7 @@ class SVNParser(ParserInterface): |
# If the file is added (not modified), treat it as if it is not changed. |
backup_url = url_map['revision_url'] % revision_number |
- if file_action == 'A': |
+ if file_change_type == 'A': |
return (backup_url, changed_line_numbers, changed_line_contents) |
# Retrieve data from the url. If no data is retrieved, return empty lists. |
@@ -219,7 +220,11 @@ class SVNParser(ParserInterface): |
# Each of the blame result is in <tr>. |
blame_results = blame_html.getElementsByTagName('tr') |
- blame_result = blame_results[line] |
+ try: |
+ blame_result = blame_results[line] |
+ except IndexError: |
+ logging.error('Failed to retrieve blame information from %s.', url) |
+ return None |
# There must be 4 <td> for each <tr>. If not, this page is wrong. |
tds = blame_result.getElementsByTagName('td') |
@@ -257,6 +262,9 @@ class SVNParser(ParserInterface): |
except IndexError: |
revision = tds[2].firstChild.nodeValue |
+ (revision_info, _) = self.ParseChangelog(component, revision, revision) |
+ message = revision_info[int(revision)]['message'] |
+ |
# Return the parsed information. |
revision_url = url_map['revision_url'] % int(revision) |
- return (line_content, revision, author, revision_url) |
+ return (line_content, revision, author, revision_url, message) |