Mercurial > hg
changeset 14041:bcc6ed0f6c3b
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.
author | Augie Fackler <durin42@gmail.com> |
---|---|
date | Fri, 29 Apr 2011 03:34:18 -0500 |
parents | 9d2be7e17fc1 |
children | 9966c95b8c4f |
files | mercurial/subrepo.py |
diffstat | 1 files changed, 9 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/subrepo.py Fri Apr 29 16:34:52 2011 +0200 +++ b/mercurial/subrepo.py Fri Apr 29 03:34:18 2011 -0500 @@ -621,7 +621,15 @@ 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):