def METHOD_NAME(self):
    if self.zip:
        self.zip.close()
        self.zip = None
    index = len(self.rlist) - 1
    while index >= 0:
        item = self.rlist[index]
        exist = os.path.exists(item.path)
        if item.action == _MKFILE and exist:
            #if not os.access(item.path, os.W_OK):
            #    os.chmod(item.path, S_IWUSR)
            __built_in_remove__(item.path)
        elif item.action == _RMFILE and not exist:
            if not self.zip:
                self.zip = zipfile.ZipFile(self.zipfile, 'r', zipfile.ZIP_DEFLATED)
            arcname = os.path.normpath(item.path)
            arcname = arcname[len(self.workspace)+1:].encode('utf_8')
            if os.sep != "/" and os.sep in arcname:
                arcname = arcname.replace(os.sep, '/')
            mtime = self.zip.getinfo(arcname).date_time
            content = self.zip.read(arcname)
            filep = __built_in_open__(item.path, "wb")
            filep.write(content)
            filep.close()
            intime = time.mktime(mtime + (0, 0, 0))
            os.utime(item.path, (intime, intime))
        elif item.action == _MKDIR and exist:
            while True:
                try:
                    __built_in_rmdir__(item.path)
                    break
                except IOError:
                    # Sleep a short time and try again
                    # The anti-virus software may delay the file removal in this directory
                    sleep(0.1)
        elif item.action == _RMDIR and not exist:
            __built_in_mkdir__(item.path)
        elif item.action == _CHMOD and exist:
            try:
                __built_in_chmod__(item.path, item.mode)
            except EnvironmentError:
                pass
        index -= 1
    self.commit()