Open
Description
On Windows, os.rmtree
cannot not remove directories with read-only files; such are the git db directories.
The fix is something like this:
...
finally:
# Need to collect here to be sure all handles have been closed. It appears
# a windows-only issue. In fact things should be deleted, as well as
# memory maps closed, once objects go out of scope. For some reason
# though this is not the case here unless we collect explicitly.
if not keep:
gc.collect()
# From http://stackoverflow.com/a/4829285/548792
def on_rm_error(func, path, exc_info):
import stat
os.chmod(path, stat.S_IWRITE)
func(path)
shutil.rmtree(path, onerror=on_rm_error)