def move_repo(self, repo, new_src, force=False):
        project = self.get_git_project(repo.src)
        if not project:
            return
        ui.info("* moving", ui.blue, project.src,
                ui.reset, "to", ui.blue, new_src)
        new_path = os.path.join(self.worktree.root, new_src)
        new_path = qisys.sh.to_native_path(new_path)
        if os.path.exists(new_path):
            if force:
                qisys.sh.rm(new_path)
            else:
                ui.error(new_path, "already exists")
                ui.error("If you are sure there is nothing valuable here, "
                        "remove this directory and try again")
                return
        new_base_dir = os.path.dirname(new_path)
        try:
            qisys.sh.mkdir(new_base_dir, recursive=True)
            os.rename(project.path, new_path)
        except Exception as e:
            ui.error("Error when moving", project.src, "to", new_path,
                     "\n", e , "\n",
                     "Repository left in", project.src)
            return
        self.worktree.move_project(project.src, new_src)
        project.src = new_src
        self.save_project_config(project)
        return True
Move a project in the worktree (same remote url, different
dataset/ETHPy150Open aldebaran/qibuild/python/qisrc/worktree.py/GitWorkTree.move_repo