| Index: gclient_scm.py
|
| ===================================================================
|
| --- gclient_scm.py (revision 102020)
|
| +++ gclient_scm.py (working copy)
|
| @@ -781,10 +781,26 @@
|
|
|
| # Look for locked directories.
|
| dir_info = scm.SVN.CaptureStatus(os.path.join(self.checkout_path, '.'))
|
| - for d in dir_info:
|
| - if d[0][2] == 'L':
|
| - self._Run(['cleanup', d[1]], options)
|
| + if any(d[0][2] == 'L' for d in dir_info):
|
| + try:
|
| + self._Run(['cleanup', self.checkout_path], options)
|
| + except subprocess2.CalledProcessError, e:
|
| + # Get the status again, svn cleanup may have cleaned up at least
|
| + # something.
|
| + dir_info = scm.SVN.CaptureStatus(os.path.join(self.checkout_path, '.'))
|
|
|
| + # Try to fix the failures by removing troublesome files.
|
| + for d in dir_info:
|
| + if d[0][2] == 'L':
|
| + if d[0][0] == '!' and options.force:
|
| + print 'Removing troublesome path %s' % d[1]
|
| + gclient_utils.rmtree(d[1])
|
| + else:
|
| + print 'Not removing troublesome path %s automatically.' % d[1]
|
| + if d[0][0] == '!':
|
| + print 'You can pass --force to enable automatic removal.'
|
| + raise e
|
| +
|
| # Retrieve the current HEAD version because svn is slow at null updates.
|
| if options.manually_grab_svn_rev and not revision:
|
| from_info_live = scm.SVN.CaptureInfo(from_info['URL'])
|
|
|