Either clones the repository if it's not cloned already or pulls from origin.
        If ``single_pull`` is enabled, only pulls if the repo/branch combination wasn't pulled again by this instance.

        :param repo: Repo URL
        :param branch: Branch name
        :param depth:  See :meth:`run`
        :param reference: See :meth:`run`

        :return: A :class:`Repo <git.repo.base.Repo>` instance for the repo
                 and a :class:`Path <pathlib.Path>` to the location where the repo is stored.

def get_files(self, repo: str, branch: str, *,
                  depth: Optional[int]=1,
                  reference: Optional[Path]=None
                  ) -> Tuple[Repo, Path]:
        """
        Either clones the repository if it's not cloned already or pulls from origin.
        If ``single_pull`` is enabled, only pulls if the repo/branch combination wasn't pulled again by this instance.

        :param repo: Repo URL
        :param branch: Branch name
        :param depth:  See :meth:`run`
        :param reference: See :meth:`run`

        :return: A :class:`Repo <git.repo.base.Repo>` instance for the repo
                 and a :class:`Path <pathlib.Path>` to the location where the repo is stored.
        """
        repo_path = self.get_path_to_repo_and_branch(repo, branch)

        logger.info("Repo is stored at %s", repo_path)

        if repo_path.exists():
            git_repo = Repo.init(repo_path)
            repo_id = self.repo_id(repo)
            if not self.single_pull or self._current_hashes[repo_id].get(branch) is None:
                logger.info("Single pull not enabled, no pull hasn't been done yet or pull forced, pulling")
                self._pull(git_repo=git_repo, branch=branch)
            else:
                logger.info("Single pull enabled and already pulled in this initialization of backend")
        else:
            repo_path.parent.mkdir(exist_ok=True, parents=True)
            logger.info("Initial pull")
            git_repo = self._pull(repo_path=repo_path, repo=repo, branch=branch,
                                  depth=depth,
                                  reference=reference)

        self.save_hash(repo, branch, git_repo)

        return git_repo, repo_path