| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2009 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2009 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 """Client-side script to send a try job to the try server. It communicates to | 5 """Client-side script to send a try job to the try server. It communicates to |
| 6 the try server by either writting to a svn repository or by directly connecting | 6 the try server by either writting to a svn repository or by directly connecting |
| 7 to the server by HTTP. | 7 to the server by HTTP. |
| 8 """ | 8 """ |
| 9 | 9 |
| 10 import datetime | 10 import datetime |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 class InvalidScript(Exception): | 78 class InvalidScript(Exception): |
| 79 def __str__(self): | 79 def __str__(self): |
| 80 return self.args[0] + '\n' + HELP_STRING | 80 return self.args[0] + '\n' + HELP_STRING |
| 81 | 81 |
| 82 | 82 |
| 83 class NoTryServerAccess(Exception): | 83 class NoTryServerAccess(Exception): |
| 84 def __str__(self): | 84 def __str__(self): |
| 85 return self.args[0] + '\n' + HELP_STRING | 85 return self.args[0] + '\n' + HELP_STRING |
| 86 | 86 |
| 87 | 87 |
| 88 def EscapeDot(name): | 88 def Escape(name): |
| 89 return name.replace('.', '-') | 89 """Escapes characters that could interfere with the file system or try job |
| 90 parsing. |
| 91 """ |
| 92 return re.sub(r'[^\w#-]', '_', name) |
| 90 | 93 |
| 91 | 94 |
| 92 class SCM(object): | 95 class SCM(object): |
| 93 """Simplistic base class to implement one function: ProcessOptions.""" | 96 """Simplistic base class to implement one function: ProcessOptions.""" |
| 94 def __init__(self, options, path): | 97 def __init__(self, options, path): |
| 95 items = path.split('@') | 98 items = path.split('@') |
| 96 assert len(items) <= 2 | 99 assert len(items) <= 2 |
| 97 self.checkout_root = items[0] | 100 self.checkout_root = items[0] |
| 98 items.append(None) | 101 items.append(None) |
| 99 self.diff_against = items[1] | 102 self.diff_against = items[1] |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 temp_dir = tempfile.mkdtemp() | 374 temp_dir = tempfile.mkdtemp() |
| 372 temp_file = tempfile.NamedTemporaryFile() | 375 temp_file = tempfile.NamedTemporaryFile() |
| 373 try: | 376 try: |
| 374 try: | 377 try: |
| 375 # Description | 378 # Description |
| 376 temp_file.write(description) | 379 temp_file.write(description) |
| 377 temp_file.flush() | 380 temp_file.flush() |
| 378 | 381 |
| 379 # Diff file | 382 # Diff file |
| 380 current_time = str(datetime.datetime.now()).replace(':', '.') | 383 current_time = str(datetime.datetime.now()).replace(':', '.') |
| 381 file_name = (EscapeDot(options.user) + '.' + EscapeDot(options.name) + | 384 file_name = (Escape(options.user) + '.' + Escape(options.name) + |
| 382 '.%s.diff' % current_time) | 385 '.%s.diff' % current_time) |
| 383 full_path = os.path.join(temp_dir, file_name) | 386 full_path = os.path.join(temp_dir, file_name) |
| 384 gclient_utils.FileWrite(full_path, options.diff, 'wb') | 387 gclient_utils.FileWrite(full_path, options.diff, 'wb') |
| 385 | 388 |
| 386 # Committing it will trigger a try job. | 389 # Committing it will trigger a try job. |
| 387 if sys.platform == "cygwin": | 390 if sys.platform == "cygwin": |
| 388 # Small chromium-specific issue here: | 391 # Small chromium-specific issue here: |
| 389 # git-try uses /usr/bin/python on cygwin but svn.bat will be used | 392 # git-try uses /usr/bin/python on cygwin but svn.bat will be used |
| 390 # instead of /usr/bin/svn by default. That causes bad things(tm) since | 393 # instead of /usr/bin/svn by default. That causes bad things(tm) since |
| 391 # Windows' svn.exe has no clue about cygwin paths. Hence force to use | 394 # Windows' svn.exe has no clue about cygwin paths. Hence force to use |
| (...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 757 print >> sys.stderr, e | 760 print >> sys.stderr, e |
| 758 return 1 | 761 return 1 |
| 759 except gclient_utils.Error, e: | 762 except gclient_utils.Error, e: |
| 760 print >> sys.stderr, e | 763 print >> sys.stderr, e |
| 761 return 1 | 764 return 1 |
| 762 return 0 | 765 return 0 |
| 763 | 766 |
| 764 | 767 |
| 765 if __name__ == "__main__": | 768 if __name__ == "__main__": |
| 766 sys.exit(TryChange(None, [], False)) | 769 sys.exit(TryChange(None, [], False)) |
| OLD | NEW |