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

Side by Side Diff: git_cl/git_cl.py

Issue 6591093: Set cwd to the root of the git checkout when running git svn info. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 9 years, 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # git-cl -- a git-command for integrating reviews on Rietveld 2 # git-cl -- a git-command for integrating reviews on Rietveld
3 # Copyright (C) 2008 Evan Martin <martine@danga.com> 3 # Copyright (C) 2008 Evan Martin <martine@danga.com>
4 4
5 import errno 5 import errno
6 import logging 6 import logging
7 import optparse 7 import optparse
8 import os 8 import os
9 import re 9 import re
10 import subprocess 10 import subprocess
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 except OSError, e: 47 except OSError, e:
48 if e.errno == errno.EAGAIN and sys.platform == 'cygwin': 48 if e.errno == errno.EAGAIN and sys.platform == 'cygwin':
49 DieWithError( 49 DieWithError(
50 'Visit ' 50 'Visit '
51 'http://code.google.com/p/chromium/wiki/CygwinDllRemappingFailure to ' 51 'http://code.google.com/p/chromium/wiki/CygwinDllRemappingFailure to '
52 'learn how to fix this error; you need to rebase your cygwin dlls') 52 'learn how to fix this error; you need to rebase your cygwin dlls')
53 raise 53 raise
54 54
55 55
56 def RunCommand(cmd, error_ok=False, error_message=None, 56 def RunCommand(cmd, error_ok=False, error_message=None,
57 redirect_stdout=True, swallow_stderr=False): 57 redirect_stdout=True, swallow_stderr=False, **kwargs):
58 if redirect_stdout: 58 if redirect_stdout:
59 stdout = subprocess.PIPE 59 stdout = subprocess.PIPE
60 else: 60 else:
61 stdout = None 61 stdout = None
62 if swallow_stderr: 62 if swallow_stderr:
63 stderr = subprocess.PIPE 63 stderr = subprocess.PIPE
64 else: 64 else:
65 stderr = None 65 stderr = None
66 proc = Popen(cmd, stdout=stdout, stderr=stderr) 66 proc = Popen(cmd, stdout=stdout, stderr=stderr, **kwargs)
67 output = proc.communicate()[0] 67 output = proc.communicate()[0]
68 if not error_ok and proc.returncode != 0: 68 if not error_ok and proc.returncode != 0:
69 DieWithError('Command "%s" failed.\n' % (' '.join(cmd)) + 69 DieWithError('Command "%s" failed.\n' % (' '.join(cmd)) +
70 (error_message or output or '')) 70 (error_message or output or ''))
71 return output 71 return output
72 72
73 73
74 def RunGit(args, **kwargs): 74 def RunGit(args, **kwargs):
75 cmd = ['git'] + args 75 cmd = ['git'] + args
76 return RunCommand(cmd, **kwargs) 76 return RunCommand(cmd, **kwargs)
(...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 upload_args.extend(['--message', subject]) 801 upload_args.extend(['--message', subject])
802 upload_args.extend(['--description', change_desc]) 802 upload_args.extend(['--description', change_desc])
803 cc = ','.join(filter(None, (settings.GetCCList(), options.cc))) 803 cc = ','.join(filter(None, (settings.GetCCList(), options.cc)))
804 if cc: 804 if cc:
805 upload_args.extend(['--cc', cc]) 805 upload_args.extend(['--cc', cc])
806 806
807 # Include the upstream repo's URL in the change -- this is useful for 807 # Include the upstream repo's URL in the change -- this is useful for
808 # projects that have their source spread across multiple repos. 808 # projects that have their source spread across multiple repos.
809 remote_url = None 809 remote_url = None
810 if settings.GetIsGitSvn(): 810 if settings.GetIsGitSvn():
811 data = RunGit(['svn', 'info']) 811 # URL is dependent on the current directory.
812 data = RunGit(['svn', 'info'], cwd=settings.GetRoot())
812 if data: 813 if data:
813 keys = dict(line.split(': ', 1) for line in data.splitlines() 814 keys = dict(line.split(': ', 1) for line in data.splitlines()
814 if ': ' in line) 815 if ': ' in line)
815 remote_url = keys.get('URL', None) 816 remote_url = keys.get('URL', None)
Evan Martin 2011/03/03 19:50:34 FYI, I just learned that "git svn info --url" does
816 else: 817 else:
817 if cl.GetRemoteUrl() and '/' in cl.GetUpstreamBranch(): 818 if cl.GetRemoteUrl() and '/' in cl.GetUpstreamBranch():
818 remote_url = (cl.GetRemoteUrl() + '@' 819 remote_url = (cl.GetRemoteUrl() + '@'
819 + cl.GetUpstreamBranch().split('/')[-1]) 820 + cl.GetUpstreamBranch().split('/')[-1])
820 if remote_url: 821 if remote_url:
821 upload_args.extend(['--base_url', remote_url]) 822 upload_args.extend(['--base_url', remote_url])
822 823
823 try: 824 try:
824 issue, patchset = upload.RealMain(['upload'] + upload_args + args) 825 issue, patchset = upload.RealMain(['upload'] + upload_args + args)
825 except: 826 except:
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
1278 ('AppEngine is misbehaving and returned HTTP %d, again. Keep faith ' 1279 ('AppEngine is misbehaving and returned HTTP %d, again. Keep faith '
1279 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e))) 1280 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e)))
1280 1281
1281 # Not a known command. Default to help. 1282 # Not a known command. Default to help.
1282 GenUsage(parser, 'help') 1283 GenUsage(parser, 'help')
1283 return CMDhelp(parser, argv) 1284 return CMDhelp(parser, argv)
1284 1285
1285 1286
1286 if __name__ == '__main__': 1287 if __name__ == '__main__':
1287 sys.exit(main(sys.argv[1:])) 1288 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698