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

Side by Side Diff: git_cl.py

Issue 6758001: Move git_cl back into depot_tools. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Add stub to not break incremental update Created 9 years, 8 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 | « git-cl ('k') | git_cl/LICENSE » ('j') | 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
11 import sys 11 import sys
12 import tempfile 12 import tempfile
13 import textwrap 13 import textwrap
14 import urlparse 14 import urlparse
15 import urllib2 15 import urllib2
16 16
17 try: 17 try:
18 import readline # pylint: disable=W0611 18 import readline # pylint: disable=W0611
19 except ImportError: 19 except ImportError:
20 pass 20 pass
21 21
22 # TODO(dpranke): don't use relative import.
23 import upload # pylint: disable=W0403
24 try: 22 try:
25 # TODO(dpranke): We wrap this in a try block for a limited form of 23 import simplejson as json # pylint: disable=F0401
26 # backwards-compatibility with older versions of git-cl that weren't
27 # dependent on depot_tools. This version should still work outside of
28 # depot_tools as long as --bypass-hooks is used. We should remove this
29 # once this has baked for a while and things seem safe.
30 depot_tools_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
31 sys.path.append(depot_tools_path)
32 import breakpad # pylint: disable=W0611
33 except ImportError: 24 except ImportError:
34 pass 25 try:
26 import json
27 except ImportError:
28 # Fall back to the packaged version.
29 from third_party import simplejson as json
30
31
32 from third_party import upload
33 import breakpad # pylint: disable=W0611
34 import presubmit_support
35 import scm
36 import watchlists
37
38
35 39
36 DEFAULT_SERVER = 'http://codereview.appspot.com' 40 DEFAULT_SERVER = 'http://codereview.appspot.com'
37 POSTUPSTREAM_HOOK_PATTERN = '.git/hooks/post-cl-%s' 41 POSTUPSTREAM_HOOK_PATTERN = '.git/hooks/post-cl-%s'
38 DESCRIPTION_BACKUP_FILE = '~/.git_cl_description_backup' 42 DESCRIPTION_BACKUP_FILE = '~/.git_cl_description_backup'
39 43
40 def DieWithError(message): 44 def DieWithError(message):
41 print >> sys.stderr, message 45 print >> sys.stderr, message
42 sys.exit(1) 46 sys.exit(1)
43 47
44 48
(...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 def ConvertToInteger(inputval): 768 def ConvertToInteger(inputval):
765 """Convert a string to integer, but returns either an int or None.""" 769 """Convert a string to integer, but returns either an int or None."""
766 try: 770 try:
767 return int(inputval) 771 return int(inputval)
768 except (TypeError, ValueError): 772 except (TypeError, ValueError):
769 return None 773 return None
770 774
771 775
772 def RunHook(committing, upstream_branch, rietveld_server, tbr, may_prompt): 776 def RunHook(committing, upstream_branch, rietveld_server, tbr, may_prompt):
773 """Calls sys.exit() if the hook fails; returns a HookResults otherwise.""" 777 """Calls sys.exit() if the hook fails; returns a HookResults otherwise."""
774 import presubmit_support
775 import scm
776 import watchlists
777
778 root = RunCommand(['git', 'rev-parse', '--show-cdup']).strip() 778 root = RunCommand(['git', 'rev-parse', '--show-cdup']).strip()
779 if not root: 779 if not root:
780 root = '.' 780 root = '.'
781 absroot = os.path.abspath(root) 781 absroot = os.path.abspath(root)
782 if not root: 782 if not root:
783 raise Exception('Could not get root directory.') 783 raise Exception('Could not get root directory.')
784 784
785 # We use the sha1 of HEAD as a name of this change. 785 # We use the sha1 of HEAD as a name of this change.
786 name = RunCommand(['git', 'rev-parse', 'HEAD']).strip() 786 name = RunCommand(['git', 'rev-parse', 'HEAD']).strip()
787 files = scm.GIT.CaptureStatus([root], upstream_branch) 787 files = scm.GIT.CaptureStatus([root], upstream_branch)
(...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after
1304 return 'closed' 1304 return 'closed'
1305 elif status.find('open') != -1 or status == '1': 1305 elif status.find('open') != -1 or status == '1':
1306 return 'open' 1306 return 'open'
1307 return 'unknown' 1307 return 'unknown'
1308 return 'unset' 1308 return 'unset'
1309 1309
1310 1310
1311 def GetTreeStatusReason(): 1311 def GetTreeStatusReason():
1312 """Fetches the tree status from a json url and returns the message 1312 """Fetches the tree status from a json url and returns the message
1313 with the reason for the tree to be opened or closed.""" 1313 with the reason for the tree to be opened or closed."""
1314 # Don't import it at file level since simplejson is not installed by default
1315 # on python 2.5 and it is only used for git-cl tree which isn't often used,
1316 # forcing everyone to install simplejson isn't efficient.
1317 try:
1318 import simplejson as json # pylint: disable=F0401
1319 except ImportError:
1320 try:
1321 import json
1322 except ImportError:
1323 print >> sys.stderr, 'Please install simplejson'
1324 sys.exit(1)
1325
1326 url = settings.GetTreeStatusUrl() 1314 url = settings.GetTreeStatusUrl()
1327 json_url = urlparse.urljoin(url, '/current?format=json') 1315 json_url = urlparse.urljoin(url, '/current?format=json')
1328 connection = urllib2.urlopen(json_url) 1316 connection = urllib2.urlopen(json_url)
1329 status = json.loads(connection.read()) 1317 status = json.loads(connection.read())
1330 connection.close() 1318 connection.close()
1331 return status['message'] 1319 return status['message']
1332 1320
1333 1321
1334 def CMDtree(parser, args): 1322 def CMDtree(parser, args):
1335 """show the status of the tree""" 1323 """show the status of the tree"""
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1415 ('AppEngine is misbehaving and returned HTTP %d, again. Keep faith ' 1403 ('AppEngine is misbehaving and returned HTTP %d, again. Keep faith '
1416 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e))) 1404 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e)))
1417 1405
1418 # Not a known command. Default to help. 1406 # Not a known command. Default to help.
1419 GenUsage(parser, 'help') 1407 GenUsage(parser, 'help')
1420 return CMDhelp(parser, argv) 1408 return CMDhelp(parser, argv)
1421 1409
1422 1410
1423 if __name__ == '__main__': 1411 if __name__ == '__main__':
1424 sys.exit(main(sys.argv[1:])) 1412 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « git-cl ('k') | git_cl/LICENSE » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698