Index: git_cl.py |
diff --git a/git_cl.py b/git_cl.py |
index 2c63d7330cafd947151134f864714f77e8e918b6..7fa0c2d31f001401abf512dcf96eae42436de1a1 100755 |
--- a/git_cl.py |
+++ b/git_cl.py |
@@ -51,9 +51,21 @@ def DieWithError(message): |
sys.exit(1) |
+def QuoteCommand(command): |
+ """Quotes command on Windows so it runs fine even with & and | in the string. |
+ """ |
+ if sys.platform == 'win32': |
+ def fix(arg): |
+ if ('&' in arg or '|' in arg) and '"' not in arg: |
+ arg = '"%s"' % arg |
+ return arg |
+ command = [fix(arg) for arg in command] |
+ return command |
+ |
+ |
def RunCommand(args, error_ok=False, error_message=None, **kwargs): |
try: |
- return subprocess2.check_output(args, shell=False, **kwargs) |
+ return subprocess2.check_output(QuoteCommand(args), **kwargs) |
except subprocess2.CalledProcessError, e: |
if not error_ok: |
DieWithError( |
@@ -533,8 +545,7 @@ or verify this branch is set up to track another (via the --track argument to |
# If the change was never uploaded, use the log messages of all commits |
# up to the branch point, as git cl upload will prefill the description |
# with these log messages. |
- description = RunCommand(['git', 'log', '--pretty=format:%s%n%n%b', |
- '%s...' % (upstream_branch)]).strip() |
+ description = CreateDescriptionFromLog([upstream_branch + '..']) |
if not author: |
author = RunGit(['config', 'user.email']).strip() or None |
@@ -879,7 +890,7 @@ def CreateDescriptionFromLog(args): |
log_args = [args[0] + '..' + args[1]] |
else: |
log_args = args[:] # Hope for the best! |
- return RunGit(['log', '--pretty=format:%s\n\n%b'] + log_args) |
+ return RunGit(['log', '--pretty=format:%s%n%n%b'] + log_args) |
def ConvertToInteger(inputval): |