import time from git import Repo, RemoteProgress from .task import Task def progress(op_code, cur_count, max_count=None, message=''): if op_code == RemoteProgress.END: print() print(f"操作: {op_code}, 进度: {cur_count}/{max_count}, 消息: {message}") class ProjectInit(Task): def execute(self): print("111") self.context.project_original_path = "/Users/luojian/Documents/project/zicp/Android/GameLauncher" try: repo = Repo(self.context.project_original_path) except Exception: repo = Repo.clone_from(self.context.repo_url, self.context.project_original_path, recursive=True, progress=progress) print("112") # for submodule in repo.submodules: # print(f"子模块 '{submodule.name}' 路径: {submodule.path}") # # print(f"Commit ID: {submodule.module().head.commit}") if self.context.repo_commit: pass elif self.context.repo_branch: # 克隆仓库 branch_name = self.context.repo_branch remote_name = "origin" # 远程仓库默认名称 # repo.git.fetch(remote_name) # if repo.active_branch.name != branch_name: # # 检查本地是否已存在该分支 # if branch_name in repo.heads: # # 本地分支已存在,直接切换 # repo.heads[branch_name].checkout() # else: # # 2. 创建本地分支并跟踪远程分支 # remote_branch_ref = f"{remote_name}/{branch_name}" # local_branch = repo.create_head(branch_name, remote_branch_ref) # 创建本地分支指向远程 # local_branch.set_tracking_branch(repo.remotes[remote_name].refs[branch_name]) # 设置跟踪 # local_branch.checkout() # 切换到该分支 self.context.local_repo_branch = repo.active_branch.name self.context.local_repo_commit = repo.head.commit.hexsha[:10] # 拉取最新代码 # repo.remotes.origin.pull() print("当前分支:" + repo.active_branch.name) pass else: raise Exception(f"No commit to {self.context.repo_commit}") # repo.git.submodule('update', '--init', '--recursive') # # for submodule in repo.submodules: # print(submodule.url) # print(submodule.name) # print(submodule.hexsha) # print(submodule.path) # sub_repo = submodule.module() # sub_repo.git.reset("--hard", submodule.hexsha) # print(f"Reset {submodule.name} to {submodule.hexsha[:7]}")