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

Side by Side Diff: gclient_scm.py

Issue 6676119: Move where the check is to handle things not being checked out yet. (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 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2010 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 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 rev_str = ' at %s' % revision 179 rev_str = ' at %s' % revision
180 files = [] 180 files = []
181 181
182 printed_path = False 182 printed_path = False
183 verbose = [] 183 verbose = []
184 if options.verbose: 184 if options.verbose:
185 print('\n_____ %s%s' % (self.relpath, rev_str)) 185 print('\n_____ %s%s' % (self.relpath, rev_str))
186 verbose = ['--verbose'] 186 verbose = ['--verbose']
187 printed_path = True 187 printed_path = True
188 188
189 # See if the url has changed
190 current_url = self._Capture(['config', 'remote.origin.url'])
191 if current_url != url:
192 print('_____ switching %s to a new upstream' % self.relpath)
193 # Make sure it's clean
194 self._CheckClean(rev_str)
195 # Switch over to the new upstream
196 self._Run(['remote', 'set-url', 'origin', url], options)
197 quiet = []
198 if not options.verbose:
199 quiet = ['--quiet']
200 self._Run(['fetch', 'origin', '--prune'] + quiet, options)
201 self._Run(['reset', '--hard', 'origin/master'] + quiet, options)
202 files = self._Capture(['ls-files']).splitlines()
203 file_list.extend([os.path.join(self.checkout_path, f) for f in files])
204 return
205
206 if revision.startswith('refs/heads/'): 189 if revision.startswith('refs/heads/'):
207 rev_type = "branch" 190 rev_type = "branch"
208 elif revision.startswith('origin/'): 191 elif revision.startswith('origin/'):
209 # For compatability with old naming, translate 'origin' to 'refs/heads' 192 # For compatability with old naming, translate 'origin' to 'refs/heads'
210 revision = revision.replace('origin/', 'refs/heads/') 193 revision = revision.replace('origin/', 'refs/heads/')
211 rev_type = "branch" 194 rev_type = "branch"
212 else: 195 else:
213 # hash is also a tag, only make a distinction at checkout 196 # hash is also a tag, only make a distinction at checkout
214 rev_type = "hash" 197 rev_type = "hash"
215 198
216 if not os.path.exists(self.checkout_path): 199 if not os.path.exists(self.checkout_path):
217 self._Clone(revision, url, options) 200 self._Clone(revision, url, options)
218 files = self._Capture(['ls-files']).splitlines() 201 files = self._Capture(['ls-files']).splitlines()
219 file_list.extend([os.path.join(self.checkout_path, f) for f in files]) 202 file_list.extend([os.path.join(self.checkout_path, f) for f in files])
220 if not verbose: 203 if not verbose:
221 # Make the output a little prettier. It's nice to have some whitespace 204 # Make the output a little prettier. It's nice to have some whitespace
222 # between projects when cloning. 205 # between projects when cloning.
223 print('') 206 print('')
224 return 207 return
225 208
226 if not os.path.exists(os.path.join(self.checkout_path, '.git')): 209 if not os.path.exists(os.path.join(self.checkout_path, '.git')):
227 raise gclient_utils.Error('\n____ %s%s\n' 210 raise gclient_utils.Error('\n____ %s%s\n'
228 '\tPath is not a git repo. No .git dir.\n' 211 '\tPath is not a git repo. No .git dir.\n'
229 '\tTo resolve:\n' 212 '\tTo resolve:\n'
230 '\t\trm -rf %s\n' 213 '\t\trm -rf %s\n'
231 '\tAnd run gclient sync again\n' 214 '\tAnd run gclient sync again\n'
232 % (self.relpath, rev_str, self.relpath)) 215 % (self.relpath, rev_str, self.relpath))
233 216
217 # See if the url has changed
218 current_url = self._Capture(['config', 'remote.origin.url'])
219 if current_url != url:
220 print('_____ switching %s to a new upstream' % self.relpath)
221 # Make sure it's clean
222 self._CheckClean(rev_str)
223 # Switch over to the new upstream
224 self._Run(['remote', 'set-url', 'origin', url], options)
225 quiet = []
226 if not options.verbose:
227 quiet = ['--quiet']
228 self._Run(['fetch', 'origin', '--prune'] + quiet, options)
229 self._Run(['reset', '--hard', 'origin/master'] + quiet, options)
230 files = self._Capture(['ls-files']).splitlines()
231 file_list.extend([os.path.join(self.checkout_path, f) for f in files])
232 return
233
234 cur_branch = self._GetCurrentBranch() 234 cur_branch = self._GetCurrentBranch()
235 235
236 # Cases: 236 # Cases:
237 # 0) HEAD is detached. Probably from our initial clone. 237 # 0) HEAD is detached. Probably from our initial clone.
238 # - make sure HEAD is contained by a named ref, then update. 238 # - make sure HEAD is contained by a named ref, then update.
239 # Cases 1-4. HEAD is a branch. 239 # Cases 1-4. HEAD is a branch.
240 # 1) current branch is not tracking a remote branch (could be git-svn) 240 # 1) current branch is not tracking a remote branch (could be git-svn)
241 # - try to rebase onto the new hash or branch 241 # - try to rebase onto the new hash or branch
242 # 2) current branch is tracking a remote branch with local committed 242 # 2) current branch is tracking a remote branch with local committed
243 # changes, but the DEPS file switched to point to a hash 243 # changes, but the DEPS file switched to point to a hash
(...skipping 677 matching lines...) Expand 10 before | Expand all | Expand 10 after
921 921
922 This method returns a new list to be used as a command.""" 922 This method returns a new list to be used as a command."""
923 new_command = command[:] 923 new_command = command[:]
924 if revision: 924 if revision:
925 new_command.extend(['--revision', str(revision).strip()]) 925 new_command.extend(['--revision', str(revision).strip()])
926 # --force was added to 'svn update' in svn 1.5. 926 # --force was added to 'svn update' in svn 1.5.
927 if ((options.force or options.manually_grab_svn_rev) and 927 if ((options.force or options.manually_grab_svn_rev) and
928 scm.SVN.AssertVersion("1.5")[0]): 928 scm.SVN.AssertVersion("1.5")[0]):
929 new_command.append('--force') 929 new_command.append('--force')
930 return new_command 930 return new_command
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