Commit ca2b8e76 authored by maruel@chromium.org's avatar maruel@chromium.org

Automatically adds quotes on Windows when necessary

So that a command like
 "git config rietveld.viewvc-url http://src.chromium.org/viewvc/chrome?view=rev&revision="
works fine.

Fix the description automatically generated for the hooks to be using the same
code than for the one presented to the user.

R=cmp@chromium.org
BUG=
TEST=Tested manually on cygwin, win32, linux


Review URL: https://chromiumcodereview.appspot.com/10447021

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@138874 0039d316-1c4b-4281-b951-d872f2087c98
parent 13a9fbe1
......@@ -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):
......
......@@ -112,11 +112,11 @@ class TestGitCl(TestCase):
'M\t.gitignore\n'),
((['git', 'config', 'branch.master.rietveldissue'],), ''),
((['git', 'config', 'branch.master.rietveldpatchset'],), ''),
((['git', 'log', '--pretty=format:%s%n%n%b', 'master...'],), 'foo'),
((['git', 'log', '--pretty=format:%s%n%n%b', 'master..'],), 'foo'),
((['git', 'config', 'user.email'],), 'me@example.com'),
((['git', 'diff', '--no-ext-diff', '--stat', '-M', 'master...'],),
'+dat'),
((['git', 'log', '--pretty=format:%s\n\n%b', 'master..'],), 'desc\n'),
((['git', 'log', '--pretty=format:%s%n%n%b', 'master..'],), 'desc\n'),
]
@staticmethod
......@@ -345,7 +345,7 @@ class TestGitCl(TestCase):
'M\t.gitignore\n'),
((['git', 'config', 'branch.master.rietveldissue'],), ''),
((['git', 'config', 'branch.master.rietveldpatchset'],), ''),
((['git', 'log', '--pretty=format:%s%n%n%b', 'master...'],), 'foo'),
((['git', 'log', '--pretty=format:%s%n%n%b', 'master..'],), 'foo'),
((['git', 'config', 'user.email'],), 'me@example.com'),
((['git', 'diff', '--no-ext-diff', '--stat', '-M', 'master...'],),
'+dat'),
......@@ -354,7 +354,7 @@ class TestGitCl(TestCase):
@staticmethod
def _gerrit_upload_calls(description, reviewers):
calls = [
((['git', 'log', '--pretty=format:%s\n\n%b', 'master..'],),
((['git', 'log', '--pretty=format:%s%n%n%b', 'master..'],),
description),
((['git', 'config', 'rietveld.cc'],), '')
]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment