Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Unified Diff: git-cl.py

Issue 113480: Sync git-cl and git-try to the master branch. (Closed)
Patch Set: Keep import readline but don't fail on ImportError. Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | git-try.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: git-cl.py
diff --git a/git-cl.py b/git-cl.py
index 4763fd169d0df79b41712f0c0bfbf57f251df01d..a8ebf6cefe13f41e50adedde6261ac4d7a47307a 100755
--- a/git-cl.py
+++ b/git-cl.py
@@ -6,7 +6,6 @@ import getpass
import optparse
import os
import re
-import readline
import subprocess
import sys
import tempfile
@@ -14,6 +13,11 @@ import textwrap
import upload
import urllib2
+try:
+ import readline
+except ImportError:
+ pass
+
DEFAULT_SERVER = 'codereview.appspot.com'
def DieWithError(message):
@@ -21,11 +25,16 @@ def DieWithError(message):
sys.exit(1)
-def RunGit(args, error_ok=False, error_message=None, exit_code=False):
+def RunGit(args, error_ok=False, error_message=None, exit_code=False,
+ redirect_stdout=True):
cmd = ['git'] + args
# Useful for debugging:
# print >>sys.stderr, ' '.join(cmd)
- proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
+ if redirect_stdout:
+ stdout = subprocess.PIPE
+ else:
+ stdout = None
+ proc = subprocess.Popen(cmd, stdout=stdout)
output = proc.communicate()[0]
if exit_code:
return proc.returncode
@@ -86,10 +95,6 @@ class Settings:
'refs/remotes']).splitlines()
svn_refs = {}
for ref in remotes:
- # git-svn remote refs are generally directly in the refs/remotes/dir,
- # not a subdirectory (like refs/remotes/origin/master).
- if '/' in ref[len('refs/remotes/'):]:
- continue
match = git_svn_re.search(RunGit(['cat-file', '-p', ref]))
if match:
svn_refs[match.group(1)] = ref
@@ -377,7 +382,9 @@ def UserEditedLog(starting_text):
if ret != 0:
return
- text = open(filename).read()
+ file.flush()
+ file.seek(0)
+ text = file.read()
file.close()
stripcomment_re = re.compile(r'^#.*$', re.MULTILINE)
return stripcomment_re.sub('', text).strip()
@@ -521,6 +528,14 @@ def CmdDCommit(args):
if RunGit(['show-ref', '--quiet', '--verify', 'refs/heads/' + MERGE_BRANCH],
exit_code=True) == 0:
RunGit(['branch', '-D', MERGE_BRANCH])
+
+ # We might be in a directory that's present in this branch but not in the
+ # trunk. Move up to the top of the tree so that git commands that expect a
+ # valid CWD won't fail after we check out the merge branch.
+ rel_base_path = RunGit(['rev-parse', '--show-cdup']).strip()
+ if rel_base_path:
+ os.chdir(rel_base_path)
+
# Stuff our change into the merge branch.
RunGit(['checkout', '-q', '-b', MERGE_BRANCH, base_branch])
RunGit(['merge', '--squash', cl.GetBranchRef()])
@@ -618,7 +633,7 @@ def CmdPatch(args):
def CmdRebase(args):
# Provide a wrapper for git svn rebase to help avoid accidental
# git svn dcommit.
- RunGit(['svn', 'rebase'])
+ RunGit(['svn', 'rebase'], redirect_stdout=False)
def GetTreeStatus():
"""Fetches the tree status and returns either 'open', 'closed',
« no previous file with comments | « no previous file | git-try.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698