Mercurial > hg-stable
changeset 30233:3afde791dce1 stable
largefiles: handle that a found standin file doesn't exist when removing it
I somehow ended up in a situation where hg crashed on an unlink I introduced in
328545c7d8a1.
I don't know how it happened and can't reproduce it. It seems like it only can
happen when the file is removed between the time of check in a working
directory context walk that finds a standin file, and the time of use when we
try to remove it because the corresponding largefile doesn't exist.
But better safe than sorry: replace the plain unlink with unlinkpath with
ignoremissing=True. That will also remove remaining empty directories, which
arguably is more correct.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Thu, 27 Oct 2016 20:06:33 +0200 |
parents | 362740e05460 |
children | 34a5f6c66bc5 |
files | hgext/largefiles/reposetup.py |
diffstat | 1 files changed, 1 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/largefiles/reposetup.py Tue Oct 25 21:49:30 2016 +0900 +++ b/hgext/largefiles/reposetup.py Thu Oct 27 20:06:33 2016 +0200 @@ -217,7 +217,7 @@ # standin. Removing a file as a side effect of # running status is gross, but the alternatives (if # any) are worse. - self.wvfs.unlink(standin) + self.wvfs.unlinkpath(standin, ignoremissing=True) # Filter result lists result = list(result)