diff options
author | Mehdi Amini <mehdi.amini@apple.com> | 2016-11-12 01:17:59 +0000 |
---|---|---|
committer | Mehdi Amini <mehdi.amini@apple.com> | 2016-11-12 01:17:59 +0000 |
commit | fbd2685c89b10f7b3371ef652931744cc5bcf442 (patch) | |
tree | 3d943ae2de770761049b97db27398d4d876d9296 /llvm/utils/git-svn | |
parent | d1fe08b8a9abe19d5ba5d96465d20601542b3040 (diff) | |
download | bcm5719-llvm-fbd2685c89b10f7b3371ef652931744cc5bcf442.tar.gz bcm5719-llvm-fbd2685c89b10f7b3371ef652931744cc5bcf442.zip |
Improve `git llvm push` to suggest `git pull` when applying patch fails
Differential Revision: https://reviews.llvm.org/D26565
llvm-svn: 286695
Diffstat (limited to 'llvm/utils/git-svn')
-rwxr-xr-x | llvm/utils/git-svn/git-llvm | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/llvm/utils/git-svn/git-llvm b/llvm/utils/git-svn/git-llvm index de7d89dc666..d545c52cb8f 100755 --- a/llvm/utils/git-svn/git-llvm +++ b/llvm/utils/git-svn/git-llvm @@ -82,7 +82,7 @@ def first_dirname(d): d = head -def shell(cmd, strip=True, cwd=None, stdin=None): +def shell(cmd, strip=True, cwd=None, stdin=None, die_on_failure=True): log_verbose('Running: %s' % ' '.join(cmd)) start = time.time() @@ -100,10 +100,13 @@ def shell(cmd, strip=True, cwd=None, stdin=None): if strip: stdout = stdout.rstrip('\r\n') return stdout - eprint('`%s` returned %s' % (' '.join(cmd), p.returncode)) + err_msg = '`%s` returned %s' % (' '.join(cmd), p.returncode) + eprint(err_msg) if stderr: eprint(stderr.rstrip()) - sys.exit(2) + if die_on_failure: + sys.exit(2) + raise RuntimeError(err_msg) def git(*cmd, **kwargs): @@ -187,7 +190,13 @@ def svn_push_one_rev(svn_repo, rev, dry_run): svn_sr_path = os.path.join(svn_repo, GIT_TO_SVN_DIR[sr]) # git is the only thing that can handle its own patches... log_verbose('Apply patch: %s' % diff) - shell(['git', 'apply', '-p2', '-'], cwd=svn_sr_path, stdin=diff) + try: + shell(['git', 'apply', '-p2', '-'], cwd=svn_sr_path, stdin=diff, + die_on_failure=False) + except RuntimeError as e: + eprint("Patch doesn't apply: maybe you should try `git pull -r` " + "first?") + sys.exit(2) status_lines = svn(svn_repo, 'status').split('\n') |