def METHOD_NAME(self, host, remote_url, revision, target_dir):
    if self._is_remote_defined(remote_url):
        self.logger.info("Downloading sources for %s from %s to %s.", self.repository_name, remote_url, target_dir)
        self.path_manager.create_path(host, target_dir, create_locally=False)
        self.git_manager.clone(host, remote_url, target_dir)
    elif self.path_manager.is_path_present(host, target_dir) and self._is_repository_initialization_skippable(revision):
        self.logger.info("Skipping repository initialization for %s.", self.repository_name)
    else:
        raise SystemSetupError(f"A remote repository URL is mandatory for {self.repository_name}")