rebase: do not crash in panic when cwd disapear in the process (issue4121)

Before this patch rebase crashed badly when it happend. (not abort, crash).

Fix courtesy of Matt Mackall.
This commit is contained in:
Pierre-Yves David 2014-01-31 15:13:15 -08:00
parent 0d013e32a2
commit b563457396
2 changed files with 30 additions and 1 deletions

View File

@ -162,8 +162,12 @@ class dirstate(object):
else:
return fallback
@propertycache
def _cwd(self):
return os.getcwd()
def getcwd(self):
cwd = os.getcwd()
cwd = self._cwd
if cwd == self._root:
return ''
# self._root ends with a path separator if self._root is '/' or 'C:\'

View File

@ -649,3 +649,28 @@ each root have a different common ancestor with the destination and this is a de
|/
o 0: 'A'
Test that rebase is not confused by $CWD disapearing during rebase (issue 4121)
$ cd ..
$ hg init cwd-vanish
$ cd cwd-vanish
$ touch initial-file
$ hg add initial-file
$ hg commit -m 'initial commit'
$ touch dest-file
$ hg add dest-file
$ hg commit -m 'dest commit'
$ hg up 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ touch other-file
$ hg add other-file
$ hg commit -m 'first source commit'
created new head
$ mkdir subdir
$ cd subdir
$ touch subfile
$ hg add subfile
$ hg commit -m 'second source with subdir'
$ hg rebase -b . -d 1 --traceback
saved backup bundle to $TESTTMP/cwd-vanish/.hg/strip-backup/779a07b1b7a0-backup.hg (glob)