def checkValid(self, updating):

        #
        # Make sure the local represenation exists and has the correct URL (terminal error),
        # and check if working copy has same revision as rspec specifies (warning).
        #

        # Check if working copy exists at all
        if not self.isLocal() and not updating:
            errorMessage(
                "Local representation of repository '%s' (%s) doesn't exist. The view needs to be updated."
                % (self.getID(), self.getAbsLocalPath())
            )
            return False

        # Check if repository URLs match
        if self.isLocal():
            url = self.client.getURLFromWorkingCopy(self.getAbsLocalPath())
            if not ctx_common.areURLsEqual(url, self.getHref()):
                errorMessage(
                    "Inconsistent repository.\nWorking copy of repository '%s' originates from '%s', but the RSpec specifies '%s'"
                    % (self.getID(), url, self.getHref())
                )
                return False

        # Check revision
        if not updating:
            return self.checkValidRevision()

        return True
 def checkMissmatchedRepo(self):
     if self.isLocal():
         url = self.client.getURLFromWorkingCopy(self.getAbsLocalPath())
         if not ctx_common.areURLsEqual(url, self.getHref()):
             path = self.getAbsLocalPath()
             infoMessage("Removing missmatched repository: %s" % (path), 1)
             for root, dirs, files in os.walk(path, topdown=False):
                 for name in files:
                     filename = os.path.join(root, name)
                     os.chmod(filename, stat.S_IWRITE)
                     os.remove(filename)
                 for name in dirs:
                     os.rmdir(os.path.join(root, name))