From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web10.9630.1589080915457551711 for ; Sat, 09 May 2020 20:21:55 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: ashley.e.desimone@intel.com) IronPort-SDR: PR2egBc40MunHJ9xPcE6QR/Du5uHLA9wsFricbl4ja0xuLGVoq+TONBOB81B1EFViAOR2sH7S0 hSvQygyQFP+A== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 May 2020 20:21:54 -0700 IronPort-SDR: DgbDcSaovE5zALPN+BxaRcf+WxTOfyLOdfAmTxO+zyKwwZi9yvhitEOA9Gy9vDRGaYbf/ENdvZ VswC3TTyHC/Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,374,1583222400"; d="scan'208";a="463004301" Received: from aedesimo-desk.amr.corp.intel.com ([10.212.16.28]) by fmsmga006.fm.intel.com with ESMTP; 09 May 2020 20:21:54 -0700 From: "Ashley E Desimone" To: devel@edk2.groups.io Cc: Nate DeSimone , Puja Pandya , Erik Bjorge , Bret Barkelew , Prince Agyeman Subject: [edk2-staging/EdkRepo] [PATCH V3] EdkRepo: Update Create-Pin to be support multiple manifest repositories Date: Sat, 9 May 2020 20:21:50 -0700 Message-Id: <20200510032150.17144-1-ashley.e.desimone@intel.com> X-Mailer: git-send-email 2.16.2.windows.1 Update the create pin command to select and interact with only the workspaces source manifest repository. Signed-off-by: Ashley E Desimone Cc: Nate DeSimone Cc: Puja Pandya Cc: Erik Bjorge Cc: Bret Barkelew Cc: Prince Agyeman --- edkrepo/commands/create_pin_command.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/edkrepo/commands/create_pin_command.py b/edkrepo/commands/create_pin_command.py index f8618e5..24180ba 100644 --- a/edkrepo/commands/create_pin_command.py +++ b/edkrepo/commands/create_pin_command.py @@ -12,14 +12,16 @@ from collections import namedtuple from git import Repo -from edkrepo.commands.edkrepo_command import EdkrepoCommand +from edkrepo.commands.edkrepo_command import EdkrepoCommand, SourceManifestRepoArgument import edkrepo.commands.arguments.create_pin_args as arguments -from edkrepo.common.common_repo_functions import pull_latest_manifest_repo from edkrepo.common.edkrepo_exception import EdkrepoManifestInvalidException, EdkrepoInvalidParametersException from edkrepo.common.edkrepo_exception import EdkrepoWorkspaceCorruptException from edkrepo.common.humble import WRITING_PIN_FILE, GENERATING_PIN_DATA, GENERATING_REPO_DATA, BRANCH, COMMIT from edkrepo.common.humble import COMMIT_MESSAGE, PIN_PATH_NOT_PRESENT, PIN_FILE_ALREADY_EXISTS, PATH_AND_FILEPATH_USED from edkrepo.common.humble import MISSING_REPO +from edkrepo.common.workspace_maintenance.manifest_repos_maintenance import find_source_manifest_repo +from edkrepo.common.workspace_maintenance.manifest_repos_maintenance import list_available_manifest_repos +from edkrepo.common.workspace_maintenance.manifest_repos_maintenance import pull_workspace_manifest_repo from edkrepo.config.config_factory import get_workspace_manifest, get_workspace_path from edkrepo_manifest_parser.edk_manifest import ManifestXml @@ -49,6 +51,7 @@ class CreatePinCommand(EdkrepoCommand): 'positional': False, 'required': False, 'help-text': arguments.PUSH_HELP}) + args.append(SourceManifestRepoArgument) return metadata def run_command(self, args, config): @@ -56,14 +59,21 @@ class CreatePinCommand(EdkrepoCommand): if args.push and os.path.dirname(args.PinFileName): raise EdkrepoInvalidParametersException(PATH_AND_FILEPATH_USED) - pull_latest_manifest_repo(args, config) workspace_path = get_workspace_path() manifest = get_workspace_manifest() + if args.push: + src_manifest_repo = find_source_manifest_repo(manifest, config['cfg_file'], config['user_cfg_file'], args.source_manifest_repo) + pull_workspace_manifest_repo(manifest, config['cfg_file'], config['user_cfg_file'], args.source_manifest_repo, False) + cfg, user_cfg, conflicts = list_available_manifest_repos(config['cfg_file'], config['user_cfg_file']) + if src_manifest_repo in cfg: + manifest_repo_path = config['cfg_file'].manifest_repo_abs_path(src_manifest_repo) + elif src_manifest_repo in user_cfg: + manifest_repo_path = config['user_cfg_file'].manifest_repo_abs_path(src_manifest_repo) # If the push flag is enabled use general_config.pin_path to determine global manifest relative location to save # pin file to. if args.push and manifest.general_config.pin_path is not None: - pin_dir = os.path.join(config['cfg_file'].manifest_repo_abs_local_path, os.path.normpath(manifest.general_config.pin_path)) + pin_dir = os.path.join(manifest_repo_path, os.path.normpath(manifest.general_config.pin_path)) pin_file_name = os.path.join(pin_dir, args.PinFileName) elif args.push and manifest.general_config.pin_path is None: raise EdkrepoManifestInvalidException(PIN_PATH_NOT_PRESENT) @@ -104,7 +114,7 @@ class CreatePinCommand(EdkrepoCommand): # commit and push the pin file if args.push: - manifest_repo = Repo(config['cfg_file'].manifest_repo_abs_local_path) + manifest_repo = Repo(manifest_repo_path) # Create a local branch with the same name as the pin file arg and check it out before attempting the push # to master master_branch = manifest_repo.active_branch @@ -124,4 +134,4 @@ class CreatePinCommand(EdkrepoCommand): manifest_repo.git.push('origin', 'HEAD:master') finally: manifest_repo.heads[master_branch.name].checkout() - manifest_repo.delete_head(local_branch, '-D') \ No newline at end of file + manifest_repo.delete_head(local_branch, '-D') -- 2.16.2.windows.1