Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Wrapper script around Rietveld's upload.py that groups files into | 6 """Wrapper script around Rietveld's upload.py that groups files into |
| 7 changelists.""" | 7 changelists.""" |
| 8 | 8 |
| 9 import getpass | 9 import getpass |
| 10 import os | 10 import os |
| 11 import random | 11 import random |
| 12 import re | 12 import re |
| 13 import shutil | 13 import shutil |
| 14 import string | 14 import string |
| 15 import subprocess | 15 import subprocess |
| 16 import sys | 16 import sys |
| 17 import tempfile | 17 import tempfile |
| 18 import upload | 18 import upload |
| 19 import urllib2 | 19 import urllib2 |
| 20 | 20 |
| 21 import breakpad | 21 import breakpad |
| 22 | 22 |
| 23 # gcl now depends on gclient. | 23 # gcl now depends on gclient. |
| 24 from scm import SVN | 24 from scm import SVN |
| 25 import gclient_utils | 25 import gclient_utils |
| 26 | 26 |
| 27 __version__ = '1.1.2' | 27 __version__ = '1.1.3' |
| 28 | 28 |
| 29 | 29 |
| 30 CODEREVIEW_SETTINGS = { | 30 CODEREVIEW_SETTINGS = { |
| 31 # Default values. | 31 # Default values. |
| 32 "CODE_REVIEW_SERVER": "codereview.chromium.org", | 32 "CODE_REVIEW_SERVER": "codereview.chromium.org", |
| 33 "CC_LIST": "chromium-reviews@googlegroups.com", | 33 "CC_LIST": "chromium-reviews@googlegroups.com", |
| 34 "VIEW_VC": "http://src.chromium.org/viewvc/chrome?view=rev&revision=", | 34 "VIEW_VC": "http://src.chromium.org/viewvc/chrome?view=rev&revision=", |
| 35 } | 35 } |
| 36 | 36 |
| 37 # globals that store the root of the current repository and the directory where | 37 # globals that store the root of the current repository and the directory where |
| (...skipping 813 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 851 | 851 |
| 852 def TryChange(change_info, args, swallow_exception): | 852 def TryChange(change_info, args, swallow_exception): |
| 853 """Create a diff file of change_info and send it to the try server.""" | 853 """Create a diff file of change_info and send it to the try server.""" |
| 854 try: | 854 try: |
| 855 import trychange | 855 import trychange |
| 856 except ImportError: | 856 except ImportError: |
| 857 if swallow_exception: | 857 if swallow_exception: |
| 858 return | 858 return |
| 859 ErrorExit("You need to install trychange.py to use the try server.") | 859 ErrorExit("You need to install trychange.py to use the try server.") |
| 860 | 860 |
| 861 def PathDifference(root, subpath): | |
| 862 """Returns the difference subpath minus root.""" | |
| 863 root = os.path.realpath(root) | |
| 864 subpath = os.path.realpath(subpath) | |
| 865 if not subpath.startswith(root): | |
| 866 return None | |
| 867 # If the root does not have a trailing \ or /, we add it so the returned | |
| 868 # path starts immediately after the seperator regardless of whether it is | |
| 869 # provided. | |
| 870 root = os.path.join(root, '') | |
| 871 return subpath[len(root):] | |
| 872 | |
| 873 # Try to find the gclient root. | |
| 874 def FindGclientRootDir(from_dir): | |
| 875 path = os.path.realpath(from_dir) | |
| 876 while not os.path.exists(os.path.join(path, '.gclient')): | |
| 877 next = os.path.split(path) | |
| 878 if not next[1]: | |
| 879 return None | |
| 880 path = next[0] | |
| 881 return path | |
| 882 | |
| 883 trychange_args = [] | |
| 884 gclient_root = FindGclientRootDir(GetRepositoryRoot()) | |
| 885 if gclient_root: | |
| 886 trychange_args.extend(['--root', PathDifference(gclient_root, | |
| 887 GetRepositoryRoot())]) | |
| 861 if change_info: | 888 if change_info: |
| 862 trychange_args = ['--name', change_info.name] | 889 trychange_args.extend(['--name', change_info.name]) |
| 863 if change_info.issue: | 890 if change_info.issue: |
| 864 trychange_args.extend(["--issue", str(change_info.issue)]) | 891 trychange_args.extend(["--issue", str(change_info.issue)]) |
| 865 if change_info.patchset: | 892 if change_info.patchset: |
| 866 trychange_args.extend(["--patchset", str(change_info.patchset)]) | 893 trychange_args.extend(["--patchset", str(change_info.patchset)]) |
| 867 trychange_args.extend(args) | 894 trychange_args.extend(args) |
| 868 trychange.TryChange(trychange_args, | 895 trychange.TryChange(trychange_args, |
|
bradn
2009/12/20 22:14:54
Might be more clear if you decide file_list in the
| |
| 869 file_list=change_info.GetFileNames(), | 896 file_list=change_info.GetFileNames(), |
| 870 swallow_exception=swallow_exception, | 897 swallow_exception=swallow_exception, |
| 871 prog='gcl try') | 898 prog='gcl try') |
| 872 else: | 899 else: |
| 873 trychange.TryChange(args, | 900 trychange_args.extend(args) |
| 901 trychange.TryChange(trychange_args, | |
| 874 file_list=None, | 902 file_list=None, |
| 875 swallow_exception=swallow_exception, | 903 swallow_exception=swallow_exception, |
| 876 prog='gcl try') | 904 prog='gcl try') |
| 877 | 905 |
| 878 | 906 |
| 879 def Commit(change_info, args): | 907 def Commit(change_info, args): |
| 880 if not change_info.GetFiles(): | 908 if not change_info.GetFiles(): |
| 881 print "Nothing to commit, changelist is empty." | 909 print "Nothing to commit, changelist is empty." |
| 882 return | 910 return |
| 883 if not OptionallyDoPresubmitChecks(change_info, True, args): | 911 if not OptionallyDoPresubmitChecks(change_info, True, args): |
| (...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1240 return 0 | 1268 return 0 |
| 1241 args =["svn", command] | 1269 args =["svn", command] |
| 1242 root = GetRepositoryRoot() | 1270 root = GetRepositoryRoot() |
| 1243 args.extend([os.path.join(root, x) for x in change_info.GetFileNames()]) | 1271 args.extend([os.path.join(root, x) for x in change_info.GetFileNames()]) |
| 1244 RunShell(args, True) | 1272 RunShell(args, True) |
| 1245 return 0 | 1273 return 0 |
| 1246 | 1274 |
| 1247 | 1275 |
| 1248 if __name__ == "__main__": | 1276 if __name__ == "__main__": |
| 1249 sys.exit(main()) | 1277 sys.exit(main()) |
| OLD | NEW |