code: def rmtree_errorhandler(func, path, exc_info):
      
      # if file type currently read only
      if os.stat(path).st_mode & stat.S_IREAD:
          # convert to read/write
          os.chmod(path, stat.S_IWRITE)
          # use the original function to repeat the operation
          func(path)
          return
      else:
          raise
docs: On Windows, the files in .svn are read-only, so when rmtree() tries to
      remove them, an exception is thrown.  We catch that here, remove the
      read-only attribute, and hopefully continue without problems.