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

Side by Side Diff: gclient_scm.py

Issue 8227033: Make revert more resilient to partial sync failure. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 9 years, 2 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 | tests/gclient_scm_test.py » ('j') | 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) 2011 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2011 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 902 matching lines...) Expand 10 before | Expand all | Expand 10 after
913 options.revision) 913 options.revision)
914 self._Run(command, options, cwd=self._root_dir) 914 self._Run(command, options, cwd=self._root_dir)
915 915
916 def revert(self, options, args, file_list): 916 def revert(self, options, args, file_list):
917 """Reverts local modifications. Subversion specific. 917 """Reverts local modifications. Subversion specific.
918 918
919 All reverted files will be appended to file_list, even if Subversion 919 All reverted files will be appended to file_list, even if Subversion
920 doesn't know about them. 920 doesn't know about them.
921 """ 921 """
922 if not os.path.isdir(self.checkout_path): 922 if not os.path.isdir(self.checkout_path):
923 if os.path.exists(self.checkout_path):
924 gclient_utils.rmtree(self.checkout_path)
923 # svn revert won't work if the directory doesn't exist. It needs to 925 # svn revert won't work if the directory doesn't exist. It needs to
924 # checkout instead. 926 # checkout instead.
925 print('\n_____ %s is missing, synching instead' % self.relpath) 927 print('\n_____ %s is missing, synching instead' % self.relpath)
926 # Don't reuse the args. 928 # Don't reuse the args.
927 return self.update(options, [], file_list) 929 return self.update(options, [], file_list)
928 930
931 if not os.path.isdir(os.path.join(self.checkout_path, '.svn')):
932 if os.path.isdir(os.path.join(self.checkout_path, '.git')):
933 print('________ found .git directory; skipping %s' % self.relpath)
934 return
935 if os.path.isdir(os.path.join(self.checkout_path, '.hg')):
936 print('________ found .hg directory; skipping %s' % self.relpath)
937 return
938 if not options.force:
939 raise gclient_utils.Error('Invalid checkout path, aborting')
940 print(
941 '\n_____ %s is not a valid svn checkout, synching instead' %
942 self.relpath)
943 gclient_utils.rmtree(self.checkout_path)
944 # Don't reuse the args.
945 return self.update(options, [], file_list)
946
929 def printcb(file_status): 947 def printcb(file_status):
930 file_list.append(file_status[1]) 948 file_list.append(file_status[1])
931 if logging.getLogger().isEnabledFor(logging.INFO): 949 if logging.getLogger().isEnabledFor(logging.INFO):
932 logging.info('%s%s' % (file_status[0], file_status[1])) 950 logging.info('%s%s' % (file_status[0], file_status[1]))
933 else: 951 else:
934 print(os.path.join(self.checkout_path, file_status[1])) 952 print(os.path.join(self.checkout_path, file_status[1]))
935 scm.SVN.Revert(self.checkout_path, callback=printcb) 953 scm.SVN.Revert(self.checkout_path, callback=printcb)
936 954
937 try: 955 try:
938 # svn revert is so broken we don't even use it. Using 956 # svn revert is so broken we don't even use it. Using
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
992 1010
993 This method returns a new list to be used as a command.""" 1011 This method returns a new list to be used as a command."""
994 new_command = command[:] 1012 new_command = command[:]
995 if revision: 1013 if revision:
996 new_command.extend(['--revision', str(revision).strip()]) 1014 new_command.extend(['--revision', str(revision).strip()])
997 # --force was added to 'svn update' in svn 1.5. 1015 # --force was added to 'svn update' in svn 1.5.
998 if ((options.force or options.manually_grab_svn_rev) and 1016 if ((options.force or options.manually_grab_svn_rev) and
999 scm.SVN.AssertVersion("1.5")[0]): 1017 scm.SVN.AssertVersion("1.5")[0]):
1000 new_command.append('--force') 1018 new_command.append('--force')
1001 return new_command 1019 return new_command
OLDNEW
« no previous file with comments | « no previous file | tests/gclient_scm_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698