| 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 |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 def GetRepositoryRoot(): | 89 def GetRepositoryRoot(): |
| 90 """Returns the top level directory of the current repository. | 90 """Returns the top level directory of the current repository. |
| 91 | 91 |
| 92 The directory is returned as an absolute path. | 92 The directory is returned as an absolute path. |
| 93 """ | 93 """ |
| 94 global REPOSITORY_ROOT | 94 global REPOSITORY_ROOT |
| 95 if not REPOSITORY_ROOT: | 95 if not REPOSITORY_ROOT: |
| 96 infos = gclient.CaptureSVNInfo(os.getcwd(), print_error=False) | 96 infos = gclient.CaptureSVNInfo(os.getcwd(), print_error=False) |
| 97 cur_dir_repo_root = infos.get("Repository Root") | 97 cur_dir_repo_root = infos.get("Repository Root") |
| 98 if not cur_dir_repo_root: | 98 if not cur_dir_repo_root: |
| 99 raise Exception("gcl run outside of repository") | 99 raise gclient.Error("gcl run outside of repository") |
| 100 | 100 |
| 101 REPOSITORY_ROOT = os.getcwd() | 101 REPOSITORY_ROOT = os.getcwd() |
| 102 while True: | 102 while True: |
| 103 parent = os.path.dirname(REPOSITORY_ROOT) | 103 parent = os.path.dirname(REPOSITORY_ROOT) |
| 104 if (gclient.CaptureSVNInfo(parent, print_error=False).get( | 104 if (gclient.CaptureSVNInfo(parent, print_error=False).get( |
| 105 "Repository Root") != cur_dir_repo_root): | 105 "Repository Root") != cur_dir_repo_root): |
| 106 break | 106 break |
| 107 REPOSITORY_ROOT = parent | 107 REPOSITORY_ROOT = parent |
| 108 return REPOSITORY_ROOT | 108 return REPOSITORY_ROOT |
| 109 | 109 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 131 directory to the root repository. | 131 directory to the root repository. |
| 132 | 132 |
| 133 Note: The cache will be inconsistent if the same file is retrieved with both | 133 Note: The cache will be inconsistent if the same file is retrieved with both |
| 134 use_root=True and use_root=False on the same file. Don't be stupid. | 134 use_root=True and use_root=False on the same file. Don't be stupid. |
| 135 """ | 135 """ |
| 136 global FILES_CACHE | 136 global FILES_CACHE |
| 137 if filename not in FILES_CACHE: | 137 if filename not in FILES_CACHE: |
| 138 # Don't try to look up twice. | 138 # Don't try to look up twice. |
| 139 FILES_CACHE[filename] = None | 139 FILES_CACHE[filename] = None |
| 140 # First we check if we have a cached version. | 140 # First we check if we have a cached version. |
| 141 cached_file = os.path.join(GetCacheDir(), filename) | 141 try: |
| 142 cached_file = os.path.join(GetCacheDir(), filename) |
| 143 except gclient.Error: |
| 144 return None |
| 142 if (not os.path.exists(cached_file) or | 145 if (not os.path.exists(cached_file) or |
| 143 os.stat(cached_file).st_mtime > max_age): | 146 os.stat(cached_file).st_mtime > max_age): |
| 144 dir_info = gclient.CaptureSVNInfo(".") | 147 dir_info = gclient.CaptureSVNInfo(".") |
| 145 repo_root = dir_info["Repository Root"] | 148 repo_root = dir_info["Repository Root"] |
| 146 if use_root: | 149 if use_root: |
| 147 url_path = repo_root | 150 url_path = repo_root |
| 148 else: | 151 else: |
| 149 url_path = dir_info["URL"] | 152 url_path = dir_info["URL"] |
| 150 content = "" | 153 content = "" |
| 151 while True: | 154 while True: |
| (...skipping 940 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1092 | 1095 |
| 1093 | 1096 |
| 1094 def main(argv=None): | 1097 def main(argv=None): |
| 1095 if argv is None: | 1098 if argv is None: |
| 1096 argv = sys.argv | 1099 argv = sys.argv |
| 1097 | 1100 |
| 1098 if len(argv) == 1: | 1101 if len(argv) == 1: |
| 1099 Help() | 1102 Help() |
| 1100 return 0; | 1103 return 0; |
| 1101 | 1104 |
| 1102 # Create the directories where we store information about changelists if it | 1105 try: |
| 1103 # doesn't exist. | 1106 # Create the directories where we store information about changelists if it |
| 1104 if not os.path.exists(GetInfoDir()): | 1107 # doesn't exist. |
| 1105 os.mkdir(GetInfoDir()) | 1108 if not os.path.exists(GetInfoDir()): |
| 1106 if not os.path.exists(GetChangesDir()): | 1109 os.mkdir(GetInfoDir()) |
| 1107 os.mkdir(GetChangesDir()) | 1110 if not os.path.exists(GetChangesDir()): |
| 1108 # For smooth upgrade support, move the files in GetInfoDir() to | 1111 os.mkdir(GetChangesDir()) |
| 1109 # GetChangesDir(). | 1112 # For smooth upgrade support, move the files in GetInfoDir() to |
| 1110 # TODO(maruel): Remove this code in August 2009. | 1113 # GetChangesDir(). |
| 1111 for file in os.listdir(unicode(GetInfoDir())): | 1114 # TODO(maruel): Remove this code in August 2009. |
| 1112 file_path = os.path.join(unicode(GetInfoDir()), file) | 1115 for file in os.listdir(unicode(GetInfoDir())): |
| 1113 if os.path.isfile(file_path) and file != CODEREVIEW_SETTINGS_FILE: | 1116 file_path = os.path.join(unicode(GetInfoDir()), file) |
| 1114 shutil.move(file_path, GetChangesDir()) | 1117 if os.path.isfile(file_path) and file != CODEREVIEW_SETTINGS_FILE: |
| 1115 if not os.path.exists(GetCacheDir()): | 1118 shutil.move(file_path, GetChangesDir()) |
| 1116 os.mkdir(GetCacheDir()) | 1119 if not os.path.exists(GetCacheDir()): |
| 1120 os.mkdir(GetCacheDir()) |
| 1121 except gclient.Error: |
| 1122 # Will throw an exception if not run in a svn checkout. |
| 1123 pass |
| 1117 | 1124 |
| 1118 # Commands that don't require an argument. | 1125 # Commands that don't require an argument. |
| 1119 command = argv[1] | 1126 command = argv[1] |
| 1120 if command == "opened": | 1127 if command == "opened": |
| 1121 Opened() | 1128 Opened() |
| 1122 return 0 | 1129 return 0 |
| 1123 if command == "status": | 1130 if command == "status": |
| 1124 Opened() | 1131 Opened() |
| 1125 print "\n--- Not in any changelist:" | 1132 print "\n--- Not in any changelist:" |
| 1126 UnknownFiles([]) | 1133 UnknownFiles([]) |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1198 # the files. This allows commands such as 'gcl diff xxx' to work. | 1205 # the files. This allows commands such as 'gcl diff xxx' to work. |
| 1199 args =["svn", command] | 1206 args =["svn", command] |
| 1200 root = GetRepositoryRoot() | 1207 root = GetRepositoryRoot() |
| 1201 args.extend([os.path.join(root, x) for x in change_info.GetFileNames()]) | 1208 args.extend([os.path.join(root, x) for x in change_info.GetFileNames()]) |
| 1202 RunShell(args, True) | 1209 RunShell(args, True) |
| 1203 return 0 | 1210 return 0 |
| 1204 | 1211 |
| 1205 | 1212 |
| 1206 if __name__ == "__main__": | 1213 if __name__ == "__main__": |
| 1207 sys.exit(main()) | 1214 sys.exit(main()) |
| OLD | NEW |