svn subrepo: attempt work around obstructed checkouts (issue2752)

It should be possible to do better than this with 'svn switch', but
the logic required woud be significantly more complex. Until someone
needs the performance improvements of using switch, we'll just use the
same strategy for everything.
This commit is contained in:
Augie Fackler 2011-04-29 03:34:18 -05:00
parent 7a9d95a376
commit a2ae5598b9

View File

@ -621,7 +621,15 @@ class svnsubrepo(abstractsubrepo):
self._svncommand(['revert', '--recursive'])
status = self._svncommand(['checkout', state[0], '--revision', state[1]])
if not re.search('Checked out revision [0-9]+.', status):
raise util.Abort(status.splitlines()[-1])
# catch the case where the checkout operation is
# obstructed but the working copy is clean
if ('already a working copy for a different' in status and
not self.dirty()):
self.remove()
self.get(state, overwrite)
return
else:
raise util.Abort(status.splitlines()[-1])
self._ui.status(status)
def merge(self, state):