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

Side by Side Diff: gcl.py

Issue 7875004: Fix gcl sometimes stripping the new line characters when changing the issue description on the se... (Closed) Base URL: http://src.chromium.org/svn/trunk/tools/depot_tools/
Patch Set: Created 9 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """\ 6 """\
7 Wrapper script around Rietveld's upload.py that simplifies working with groups 7 Wrapper script around Rietveld's upload.py that simplifies working with groups
8 of files. 8 of files.
9 """ 9 """
10 10
(...skipping 1077 matching lines...) Expand 10 before | Expand all | Expand 10 after
1088 file_re = re.compile(r"^[a-z].+\Z", re.IGNORECASE) 1088 file_re = re.compile(r"^[a-z].+\Z", re.IGNORECASE)
1089 affected_files = [x for x in other_files if file_re.match(x[0])] 1089 affected_files = [x for x in other_files if file_re.match(x[0])]
1090 unaffected_files = [x for x in other_files if not file_re.match(x[0])] 1090 unaffected_files = [x for x in other_files if not file_re.match(x[0])]
1091 1091
1092 description = description.rstrip() + '\n' 1092 description = description.rstrip() + '\n'
1093 1093
1094 separator1 = ("\n---All lines above this line become the description.\n" 1094 separator1 = ("\n---All lines above this line become the description.\n"
1095 "---Repository Root: " + change_info.GetLocalRoot() + "\n" 1095 "---Repository Root: " + change_info.GetLocalRoot() + "\n"
1096 "---Paths in this changelist (" + change_info.name + "):\n") 1096 "---Paths in this changelist (" + change_info.name + "):\n")
1097 separator2 = "\n\n---Paths modified but not in any changelist:\n\n" 1097 separator2 = "\n\n---Paths modified but not in any changelist:\n\n"
1098 text = (description + separator1 + '\n' + 1098
1099 description_to_write = description
1100 if sys.platform == 'win32':
1101 description_to_write = description.replace('\n', '\r\n')
1102
1103 text = (description_to_write + separator1 + '\n' +
1099 '\n'.join([f[0] + f[1] for f in change_info.GetFiles()])) 1104 '\n'.join([f[0] + f[1] for f in change_info.GetFiles()]))
1100 1105
1101 if change_info.Exists(): 1106 if change_info.Exists():
1102 text += (separator2 + 1107 text += (separator2 +
1103 '\n'.join([f[0] + f[1] for f in affected_files]) + '\n') 1108 '\n'.join([f[0] + f[1] for f in affected_files]) + '\n')
1104 else: 1109 else:
1105 text += ('\n'.join([f[0] + f[1] for f in affected_files]) + '\n' + 1110 text += ('\n'.join([f[0] + f[1] for f in affected_files]) + '\n' +
1106 separator2) 1111 separator2)
1107 text += '\n'.join([f[0] + f[1] for f in unaffected_files]) + '\n' 1112 text += '\n'.join([f[0] + f[1] for f in unaffected_files]) + '\n'
1108 1113
1109 handle, filename = tempfile.mkstemp(text=True) 1114 handle, filename = tempfile.mkstemp(text=True)
1110 os.write(handle, text) 1115 os.write(handle, text)
1111 os.close(handle) 1116 os.close(handle)
1112
1113 # Open up the default editor in the system to get the CL description. 1117 # Open up the default editor in the system to get the CL description.
1114 try: 1118 try:
1115 if not silent: 1119 if not silent:
1116 cmd = '%s %s' % (GetEditor(), filename) 1120 cmd = '%s %s' % (GetEditor(), filename)
1117 if sys.platform == 'win32' and os.environ.get('TERM') == 'msys': 1121 if sys.platform == 'win32' and os.environ.get('TERM') == 'msys':
1118 # Msysgit requires the usage of 'env' to be present. 1122 # Msysgit requires the usage of 'env' to be present.
1119 cmd = 'env ' + cmd 1123 cmd = 'env ' + cmd
1120 try: 1124 try:
1121 # shell=True to allow the shell to handle all forms of quotes in 1125 # shell=True to allow the shell to handle all forms of quotes in
1122 # $EDITOR. 1126 # $EDITOR.
1123 subprocess2.check_call(cmd, shell=True) 1127 subprocess2.check_call(cmd, shell=True)
1124 except subprocess2.CalledProcessError, e: 1128 except subprocess2.CalledProcessError, e:
1125 ErrorExit('Editor returned %d' % e.returncode) 1129 ErrorExit('Editor returned %d' % e.returncode)
1126 result = gclient_utils.FileRead(filename, 'r') 1130 result = gclient_utils.FileRead(filename, 'r')
1127 finally: 1131 finally:
1128 os.remove(filename) 1132 os.remove(filename)
1129 1133
1130 if not result: 1134 if not result:
1131 return 0 1135 return 0
1132 1136
1133 split_result = result.split(separator1, 1) 1137 split_result = result.split(separator1, 1)
1134 if len(split_result) != 2: 1138 if len(split_result) != 2:
1135 ErrorExit("Don't modify the text starting with ---!\n\n" + result) 1139 ErrorExit("Don't modify the text starting with ---!\n\n" + result)
1136 1140
1137 # Update the CL description if it has changed. 1141 # Update the CL description if it has changed.
1138 new_description = split_result[0] 1142 new_description = split_result[0]
1143
1144 if sys.platform == 'win32':
1145 new_description = new_description.replace('\r\n', '\n')
1146
1139 cl_files_text = split_result[1] 1147 cl_files_text = split_result[1]
1140 if new_description != description or override_description: 1148 if new_description != description or override_description:
1141 change_info.description = new_description 1149 change_info.description = new_description
1142 change_info.needs_upload = True 1150 change_info.needs_upload = True
1143 1151
1144 new_cl_files = [] 1152 new_cl_files = []
1145 for line in cl_files_text.splitlines(): 1153 for line in cl_files_text.splitlines():
1146 if not len(line): 1154 if not len(line):
1147 continue 1155 continue
1148 if line.startswith("---"): 1156 if line.startswith("---"):
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
1461 raise 1469 raise
1462 print >> sys.stderr, ( 1470 print >> sys.stderr, (
1463 'AppEngine is misbehaving and returned HTTP %d, again. Keep faith ' 1471 'AppEngine is misbehaving and returned HTTP %d, again. Keep faith '
1464 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e)) 1472 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e))
1465 return 1 1473 return 1
1466 1474
1467 1475
1468 if __name__ == "__main__": 1476 if __name__ == "__main__":
1469 fix_encoding.fix_encoding() 1477 fix_encoding.fix_encoding()
1470 sys.exit(main(sys.argv[1:])) 1478 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698