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
diff --git a/git_cl.py b/git_cl.py
index 2c63d73..7fa0c2d 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -51,9 +51,21 @@
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 @@
# 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 @@
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):