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

Side by Side Diff: git_cl.py

Issue 10445042: Revert r138874 "Automatically adds quotes on Windows when necessary" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 8 years, 7 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 | tests/git_cl_test.py » ('j') | 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) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 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 # Copyright (C) 2008 Evan Martin <martine@danga.com> 6 # Copyright (C) 2008 Evan Martin <martine@danga.com>
7 7
8 """A git-command for integrating reviews on Rietveld.""" 8 """A git-command for integrating reviews on Rietveld."""
9 9
10 import json 10 import json
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 44
45 # Initialized in main() 45 # Initialized in main()
46 settings = None 46 settings = None
47 47
48 48
49 def DieWithError(message): 49 def DieWithError(message):
50 print >> sys.stderr, message 50 print >> sys.stderr, message
51 sys.exit(1) 51 sys.exit(1)
52 52
53 53
54 def QuoteCommand(command):
55 """Quotes command on Windows so it runs fine even with & and | in the string.
56 """
57 if sys.platform == 'win32':
58 def fix(arg):
59 if ('&' in arg or '|' in arg) and '"' not in arg:
60 arg = '"%s"' % arg
61 return arg
62 command = [fix(arg) for arg in command]
63 return command
64
65
66 def RunCommand(args, error_ok=False, error_message=None, **kwargs): 54 def RunCommand(args, error_ok=False, error_message=None, **kwargs):
67 try: 55 try:
68 return subprocess2.check_output(QuoteCommand(args), **kwargs) 56 return subprocess2.check_output(args, shell=False, **kwargs)
69 except subprocess2.CalledProcessError, e: 57 except subprocess2.CalledProcessError, e:
70 if not error_ok: 58 if not error_ok:
71 DieWithError( 59 DieWithError(
72 'Command "%s" failed.\n%s' % ( 60 'Command "%s" failed.\n%s' % (
73 ' '.join(args), error_message or e.stdout or '')) 61 ' '.join(args), error_message or e.stdout or ''))
74 return e.stdout 62 return e.stdout
75 63
76 64
77 def RunGit(args, **kwargs): 65 def RunGit(args, **kwargs):
78 """Returns stdout.""" 66 """Returns stdout."""
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 (upstream_branch, self.GetBranch())) 526 (upstream_branch, self.GetBranch()))
539 527
540 issue = ConvertToInteger(self.GetIssue()) 528 issue = ConvertToInteger(self.GetIssue())
541 patchset = ConvertToInteger(self.GetPatchset()) 529 patchset = ConvertToInteger(self.GetPatchset())
542 if issue: 530 if issue:
543 description = self.GetDescription() 531 description = self.GetDescription()
544 else: 532 else:
545 # If the change was never uploaded, use the log messages of all commits 533 # If the change was never uploaded, use the log messages of all commits
546 # up to the branch point, as git cl upload will prefill the description 534 # up to the branch point, as git cl upload will prefill the description
547 # with these log messages. 535 # with these log messages.
548 description = CreateDescriptionFromLog([upstream_branch + '..']) 536 description = RunCommand(['git', 'log', '--pretty=format:%s%n%n%b',
537 '%s...' % (upstream_branch)]).strip()
549 538
550 if not author: 539 if not author:
551 author = RunGit(['config', 'user.email']).strip() or None 540 author = RunGit(['config', 'user.email']).strip() or None
552 return presubmit_support.GitChange( 541 return presubmit_support.GitChange(
553 name, 542 name,
554 description, 543 description,
555 absroot, 544 absroot,
556 files, 545 files,
557 issue, 546 issue,
558 patchset, 547 patchset,
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
883 """Pulls out the commit log to use as a base for the CL description.""" 872 """Pulls out the commit log to use as a base for the CL description."""
884 log_args = [] 873 log_args = []
885 if len(args) == 1 and not args[0].endswith('.'): 874 if len(args) == 1 and not args[0].endswith('.'):
886 log_args = [args[0] + '..'] 875 log_args = [args[0] + '..']
887 elif len(args) == 1 and args[0].endswith('...'): 876 elif len(args) == 1 and args[0].endswith('...'):
888 log_args = [args[0][:-1]] 877 log_args = [args[0][:-1]]
889 elif len(args) == 2: 878 elif len(args) == 2:
890 log_args = [args[0] + '..' + args[1]] 879 log_args = [args[0] + '..' + args[1]]
891 else: 880 else:
892 log_args = args[:] # Hope for the best! 881 log_args = args[:] # Hope for the best!
893 return RunGit(['log', '--pretty=format:%s%n%n%b'] + log_args) 882 return RunGit(['log', '--pretty=format:%s\n\n%b'] + log_args)
894 883
895 884
896 def ConvertToInteger(inputval): 885 def ConvertToInteger(inputval):
897 """Convert a string to integer, but returns either an int or None.""" 886 """Convert a string to integer, but returns either an int or None."""
898 try: 887 try:
899 return int(inputval) 888 return int(inputval)
900 except (TypeError, ValueError): 889 except (TypeError, ValueError):
901 return None 890 return None
902 891
903 892
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after
1562 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e))) 1551 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e)))
1563 1552
1564 # Not a known command. Default to help. 1553 # Not a known command. Default to help.
1565 GenUsage(parser, 'help') 1554 GenUsage(parser, 'help')
1566 return CMDhelp(parser, argv) 1555 return CMDhelp(parser, argv)
1567 1556
1568 1557
1569 if __name__ == '__main__': 1558 if __name__ == '__main__':
1570 fix_encoding.fix_encoding() 1559 fix_encoding.fix_encoding()
1571 sys.exit(main(sys.argv[1:])) 1560 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « no previous file | tests/git_cl_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698