Commit 7a09961f authored by mhm@chromium.org's avatar mhm@chromium.org

Reland again Msysgit Support for gcl and git-cl.

EDITOR environment variable shouldn't be required anymore
can contain quotes and multiple arguments.

Uses shell=True to let the shell parse the quoted string
instead of handling all forms of quotes ourselves. 

By default, msysgit ships with the TERM environment variable
set, when set to 'msys', we prepend 'env' to the executed
command. That is required so msys knows which program
to run the given file.

BUG=none
TEST=On many platforms. Win7, WinXP, Ubuntu.
Review URL: http://codereview.chromium.org/6685062

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@78332 0039d316-1c4b-4281-b951-d872f2087c98
parent 158f438f
......@@ -1123,10 +1123,14 @@ def CMDchange(args):
os.close(handle)
# Open up the default editor in the system to get the CL description.
result = None
try:
if not silent:
os.system(GetEditor() + " " + filename)
cmd = '%s %s' % (GetEditor(), filename)
if sys.platform == 'win32' and os.environ.get('TERM') == 'msys':
# Msysgit requires the usage of 'env' to be present.
cmd = 'env ' + cmd
# shell=True to allow the shell to handle all forms of quotes in $EDITOR.
subprocess.check_call(cmd, shell=True)
result = gclient_utils.FileRead(filename, 'r')
finally:
os.remove(filename)
......
......@@ -688,15 +688,21 @@ def UserEditedLog(starting_text):
fileobj.close()
# Open up the default editor in the system to get the CL description.
ret = subprocess.call(editor + ' ' + filename, shell=True)
if ret != 0:
try:
cmd = '%s %s' % (editor, filename)
if sys.platform == 'win32' and os.environ.get('TERM') == 'msys':
# Msysgit requires the usage of 'env' to be present.
cmd = 'env ' + cmd
# shell=True to allow the shell to handle all forms of quotes in $EDITOR.
subprocess.check_call(cmd, shell=True)
fileobj = open(filename)
text = fileobj.read()
fileobj.close()
finally:
os.remove(filename)
return
fileobj = open(filename)
text = fileobj.read()
fileobj.close()
os.remove(filename)
if not text:
return
stripcomment_re = re.compile(r'^#.*$', re.MULTILINE)
return stripcomment_re.sub('', text).strip()
......
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