gitdb icon indicating copy to clipboard operation
gitdb copied to clipboard

Windows with_rw-directory TC helper fails to delete repos

Open ankostis opened this issue 9 years ago • 1 comments

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)

ankostis avatar Sep 27 '16 19:09 ankostis

I assume that this one could be fixed in conjunction with this PR ? In any case, thanks for reporting, it's good to keep track of the issue and a possible solution.

Byron avatar Oct 01 '16 11:10 Byron