import osimport sysimport subprocessfrom common import (get_git_organization,get_git_domain,create_local_config_file,switch_submodule_branches_recursive,get_remote_repo_tags,is_url,is_github_url,parse_pkg_url,get_branch_name_by_commit_id)# Recursively import projects and dependenciesdef import_project(proj_name_or_url, version):try:if is_url(proj_name_or_url):if is_github_url(proj_name_or_url):organization, proj_name = parse_pkg_url(proj_name_or_url)full_proj_url = proj_name_or_urlelse:print("Error: It must be a github url.")sys.exit(1)else:organization = get_git_organization()proj_name = proj_name_or_urlfull_proj_url = f"{get_git_domain()}/{organization}/{proj_name}.git"if os.path.exists(proj_name):print(f"Error: Failed to import for the project '{proj_name}' already existing.")sys.exit(1)if version:print("Checking version...")tags = get_remote_repo_tags(proj_name, organization)if version not in tags:print(f"Error: Version {version} not found in the remote repository. Please provide a valid version.")sys.exit(1)print(f"Importing project: {proj_name}...")# Clone the main project repositoryresult = subprocess.run(['git', 'clone', full_proj_url], stderr=subprocess.STDOUT)if result.returncode != 0:print(f"Error: Failed to import project '{proj_name}'.")sys.exit(1)# Checkout the project to the specified version and switch to the corresponding branchif version:print(f"Checking out the project {proj_name} to the correct branch and commit-id of version {version}...")subprocess.check_output(['git', 'checkout', version], cwd=proj_name, stderr=subprocess.STDOUT)commit_id = subprocess.check_output(['git', 'rev-parse', '--verify', 'HEAD'], cwd=proj_name, text=True).strip()branch_name = get_branch_name_by_commit_id(commit_id, proj_name)subprocess.check_output(['git', 'checkout', branch_name], cwd=proj_name, stderr=subprocess.STDOUT)subprocess.check_output(['git', 'reset', '--hard', commit_id], cwd=proj_name, stderr=subprocess.STDOUT)# Recursively add submodulesgit_modules_file = os.path.join(proj_name, '.gitmodules')if os.path.isfile(git_modules_file):print(f"Recursively importing submodules of {proj_name}...")result = subprocess.run(['git','submodule', 'update', '--init', '--recursive'], cwd=proj_name, stderr=subprocess.STDOUT)if result.returncode != 0:print(f"Error: Failed to import project '{proj_name}'.")sys.exit(1)# Recursively switch submodule branches and commit-idscwd = os.getcwd()os.chdir(proj_name)switch_submodule_branches_recursive()os.chdir(cwd)os.chdir(proj_name) # Enter the imported project directorycreate_local_config_file()print("Project imported successfully.")except Exception as e:print(f"Error: Failed to import project '{proj_name}': {e}")sys.exit(1)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。