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
experimental/szager/collated-output
mhm@chromium.org 14 years ago
parent 158f438fd2
commit 7a09961f47

@ -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()

Loading…
Cancel
Save