Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """Gclient-specific SCM-specific operations.""" | 5 """Gclient-specific SCM-specific operations.""" |
| 6 | 6 |
| 7 import logging | 7 import logging |
| 8 import os | 8 import os |
| 9 import posixpath | 9 import posixpath |
| 10 import re | 10 import re |
| (...skipping 911 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 922 # Reconstruct the url. | 922 # Reconstruct the url. |
| 923 url = '%s@%s' % (url, revision) | 923 url = '%s@%s' % (url, revision) |
| 924 rev_str = ' at %s' % revision | 924 rev_str = ' at %s' % revision |
| 925 else: | 925 else: |
| 926 managed = False | 926 managed = False |
| 927 revision = None | 927 revision = None |
| 928 else: | 928 else: |
| 929 forced_revision = False | 929 forced_revision = False |
| 930 rev_str = '' | 930 rev_str = '' |
| 931 | 931 |
| 932 if not os.path.exists(self.checkout_path): | 932 # Get the existing scm url and the revision number of the current checkout. |
| 933 exists = os.path.exists(self.checkout_path) | |
| 934 if exists and managed: | |
| 935 try: | |
| 936 from_info = scm.SVN.CaptureLocalInfo( | |
| 937 [], os.path.join(self.checkout_path, '.')) | |
| 938 except (gclient_utils.Error, subprocess2.CalledProcessError): | |
| 939 if options.reset and options.delete_unversioned_trees: | |
| 940 print 'Removing troublesome path %s' % self.checkout_path | |
| 941 gclient_utils.rmtree(self.checkout_path) | |
|
Peter Mayo
2012/11/14 22:30:25
How does this report errors (e.g. owned by root su
M-A Ruel
2012/11/14 23:17:32
That will throw, IMHO it's not a big deal to not c
Peter Mayo
2012/11/15 01:37:10
It's not a big deal to me either, it's just a way
| |
| 942 exists = False | |
| 943 else: | |
| 944 msg = ('Can\'t update/checkout %s if an unversioned directory is ' | |
| 945 'present. Delete the directory and try again.') | |
| 946 raise gclient_utils.Error(msg % self.checkout_path) | |
| 947 | |
| 948 if not exists: | |
| 933 gclient_utils.safe_makedirs(os.path.dirname(self.checkout_path)) | 949 gclient_utils.safe_makedirs(os.path.dirname(self.checkout_path)) |
| 934 # We need to checkout. | 950 # We need to checkout. |
| 935 command = ['checkout', url, self.checkout_path] | 951 command = ['checkout', url, self.checkout_path] |
| 936 command = self._AddAdditionalUpdateFlags(command, options, revision) | 952 command = self._AddAdditionalUpdateFlags(command, options, revision) |
| 937 self._RunAndGetFileList(command, options, file_list, self._root_dir) | 953 self._RunAndGetFileList(command, options, file_list, self._root_dir) |
| 938 return | 954 return |
| 939 | 955 |
| 940 if not managed: | 956 if not managed: |
| 941 print ('________ unmanaged solution; skipping %s' % self.relpath) | 957 print ('________ unmanaged solution; skipping %s' % self.relpath) |
| 942 return | 958 return |
| 943 | 959 |
| 944 # Get the existing scm url and the revision number of the current checkout. | |
| 945 try: | |
| 946 from_info = scm.SVN.CaptureLocalInfo( | |
| 947 [], os.path.join(self.checkout_path, '.')) | |
| 948 except (gclient_utils.Error, subprocess2.CalledProcessError): | |
| 949 raise gclient_utils.Error( | |
| 950 ('Can\'t update/checkout %s if an unversioned directory is present. ' | |
| 951 'Delete the directory and try again.') % self.checkout_path) | |
| 952 | |
| 953 if 'URL' not in from_info: | 960 if 'URL' not in from_info: |
| 954 raise gclient_utils.Error( | 961 raise gclient_utils.Error( |
| 955 ('gclient is confused. Couldn\'t get the url for %s.\n' | 962 ('gclient is confused. Couldn\'t get the url for %s.\n' |
| 956 'Try using @unmanaged.\n%s') % ( | 963 'Try using @unmanaged.\n%s') % ( |
| 957 self.checkout_path, from_info)) | 964 self.checkout_path, from_info)) |
| 958 | 965 |
| 959 # Look for locked directories. | 966 # Look for locked directories. |
| 960 dir_info = scm.SVN.CaptureStatus( | 967 dir_info = scm.SVN.CaptureStatus( |
| 961 None, os.path.join(self.checkout_path, '.')) | 968 None, os.path.join(self.checkout_path, '.')) |
| 962 if any(d[0][2] == 'L' for d in dir_info): | 969 if any(d[0][2] == 'L' for d in dir_info): |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1208 new_command.append('--force') | 1215 new_command.append('--force') |
| 1209 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: | 1216 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: |
| 1210 new_command.extend(('--accept', 'theirs-conflict')) | 1217 new_command.extend(('--accept', 'theirs-conflict')) |
| 1211 elif options.manually_grab_svn_rev: | 1218 elif options.manually_grab_svn_rev: |
| 1212 new_command.append('--force') | 1219 new_command.append('--force') |
| 1213 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: | 1220 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: |
| 1214 new_command.extend(('--accept', 'postpone')) | 1221 new_command.extend(('--accept', 'postpone')) |
| 1215 elif command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: | 1222 elif command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: |
| 1216 new_command.extend(('--accept', 'postpone')) | 1223 new_command.extend(('--accept', 'postpone')) |
| 1217 return new_command | 1224 return new_command |
| OLD | NEW |