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

Side by Side Diff: scm.py

Issue 10355014: Make checkout.*.prepare() to delete the svn:ignored files. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 8 years, 7 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 | « checkout.py ('k') | 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) 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 """SCM-specific utility classes.""" 5 """SCM-specific utility classes."""
6 6
7 import cStringIO 7 import cStringIO
8 import glob 8 import glob
9 import logging 9 import logging
10 import os 10 import os
(...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 @staticmethod 614 @staticmethod
615 def CaptureRevision(cwd): 615 def CaptureRevision(cwd):
616 """Get the base revision of a SVN repository. 616 """Get the base revision of a SVN repository.
617 617
618 Returns: 618 Returns:
619 Int base revision 619 Int base revision
620 """ 620 """
621 return SVN.CaptureLocalInfo([], cwd).get('Revision') 621 return SVN.CaptureLocalInfo([], cwd).get('Revision')
622 622
623 @staticmethod 623 @staticmethod
624 def CaptureStatus(files, cwd): 624 def CaptureStatus(files, cwd, no_ignore=False):
625 """Returns the svn 1.5 svn status emulated output. 625 """Returns the svn 1.5 svn status emulated output.
626 626
627 @files can be a string (one file) or a list of files. 627 @files can be a string (one file) or a list of files.
628 628
629 Returns an array of (status, file) tuples.""" 629 Returns an array of (status, file) tuples."""
630 command = ["status", "--xml"] 630 command = ["status", "--xml"]
631 if no_ignore:
632 command.append('--no-ignore')
631 if not files: 633 if not files:
632 pass 634 pass
633 elif isinstance(files, basestring): 635 elif isinstance(files, basestring):
634 command.append(files) 636 command.append(files)
635 else: 637 else:
636 command.extend(files) 638 command.extend(files)
637 639
638 status_letter = { 640 status_letter = {
639 None: ' ', 641 None: ' ',
640 '': ' ', 642 '': ' ',
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 current_version_list = map(only_int, cls.current_version.split('.')) 1002 current_version_list = map(only_int, cls.current_version.split('.'))
1001 for min_ver in map(int, min_version.split('.')): 1003 for min_ver in map(int, min_version.split('.')):
1002 ver = current_version_list.pop(0) 1004 ver = current_version_list.pop(0)
1003 if ver < min_ver: 1005 if ver < min_ver:
1004 return (False, cls.current_version) 1006 return (False, cls.current_version)
1005 elif ver > min_ver: 1007 elif ver > min_ver:
1006 return (True, cls.current_version) 1008 return (True, cls.current_version)
1007 return (True, cls.current_version) 1009 return (True, cls.current_version)
1008 1010
1009 @staticmethod 1011 @staticmethod
1010 def Revert(cwd, callback=None, ignore_externals=False): 1012 def Revert(cwd, callback=None, ignore_externals=False, no_ignore=False):
1011 """Reverts all svn modifications in cwd, including properties. 1013 """Reverts all svn modifications in cwd, including properties.
1012 1014
1013 Deletes any modified files or directory. 1015 Deletes any modified files or directory.
1014 1016
1015 A "svn update --revision BASE" call is required after to revive deleted 1017 A "svn update --revision BASE" call is required after to revive deleted
1016 files. 1018 files.
1017 """ 1019 """
1018 for file_status in SVN.CaptureStatus(None, cwd): 1020 for file_status in SVN.CaptureStatus(None, cwd, no_ignore=no_ignore):
1019 file_path = os.path.join(cwd, file_status[1]) 1021 file_path = os.path.join(cwd, file_status[1])
1020 if (ignore_externals and 1022 if (ignore_externals and
1021 file_status[0][0] == 'X' and 1023 file_status[0][0] == 'X' and
1022 file_status[0][1:].isspace()): 1024 file_status[0][1:].isspace()):
1023 # Ignore externals. 1025 # Ignore externals.
1024 logging.info('Ignoring external %s' % file_status[1]) 1026 logging.info('Ignoring external %s' % file_status[1])
1025 continue 1027 continue
1026 1028
1027 # This is the case where '! L .' is returned by 'svn status'. Just 1029 # This is the case where '! L .' is returned by 'svn status'. Just
1028 # strip off the '/.'. 1030 # strip off the '/.'.
(...skipping 26 matching lines...) Expand all
1055 # revert, like for properties. 1057 # revert, like for properties.
1056 if not os.path.isdir(cwd): 1058 if not os.path.isdir(cwd):
1057 # '.' was deleted. It's not worth continuing. 1059 # '.' was deleted. It's not worth continuing.
1058 return 1060 return
1059 try: 1061 try:
1060 SVN.Capture(['revert', file_status[1]], cwd=cwd) 1062 SVN.Capture(['revert', file_status[1]], cwd=cwd)
1061 except subprocess2.CalledProcessError: 1063 except subprocess2.CalledProcessError:
1062 if not os.path.exists(file_path): 1064 if not os.path.exists(file_path):
1063 continue 1065 continue
1064 raise 1066 raise
OLDNEW
« no previous file with comments | « checkout.py ('k') | tests/gclient_scm_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698