* [edk2-staging/EdkRepo] [PATCH 0/2] EdkRepo: Add initial manifest repository support @ 2020-04-21 21:46 Ashley E Desimone 2020-04-21 21:46 ` [edk2-staging/EdkRepo] [PATCH 1/2] EdkRepo: Add edkrepo/common/workspace_mgmt/manifest_repos_mgmt Ashley E Desimone 2020-04-21 21:46 ` [edk2-staging/EdkRepo] [PATCH 2/2] EdkRepo: Update pull_latest_manifest_repo to use pull_single_manifest_repo Ashley E Desimone 0 siblings, 2 replies; 5+ messages in thread From: Ashley E Desimone @ 2020-04-21 21:46 UTC (permalink / raw) To: devel Cc: Nate DeSimone, Puja Pandya, Erik Bjorge, Bret Barkelew, Prince Agyeman Adds initial support for manifest repository management while retaining support for commands to use the existing edkrepo.cfg format and manifest repo support functions. Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> Cc: Puja Pandya <puja.pandya@intel.com> Cc: Erik Bjorge <erik.c.bjorge@intel.com> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com> Cc: Prince Agyeman <prince.agyeman@intel.com> Ashley E Desimone (2): EdkRepo: Add edkrepo/common/workspace_mgmt/manifest_repos_mgmt EdkRepo: Update pull_latest_manifest_repo to use pull_single_manifest_repo edkrepo/common/common_repo_functions.py | 33 ++---------- edkrepo/common/humble.py | 8 --- .../humble/manifest_repos_mgmt_humble.py | 23 +++++++++ .../common/workspace_mgmt/manifest_repos_mgmt.py | 59 ++++++++++++++++++++++ setup.py | 5 +- 5 files changed, 89 insertions(+), 39 deletions(-) create mode 100644 edkrepo/common/workspace_mgmt/humble/manifest_repos_mgmt_humble.py create mode 100644 edkrepo/common/workspace_mgmt/manifest_repos_mgmt.py -- 2.16.2.windows.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [edk2-staging/EdkRepo] [PATCH 1/2] EdkRepo: Add edkrepo/common/workspace_mgmt/manifest_repos_mgmt 2020-04-21 21:46 [edk2-staging/EdkRepo] [PATCH 0/2] EdkRepo: Add initial manifest repository support Ashley E Desimone @ 2020-04-21 21:46 ` Ashley E Desimone 2020-04-22 5:28 ` Nate DeSimone 2020-04-21 21:46 ` [edk2-staging/EdkRepo] [PATCH 2/2] EdkRepo: Update pull_latest_manifest_repo to use pull_single_manifest_repo Ashley E Desimone 1 sibling, 1 reply; 5+ messages in thread From: Ashley E Desimone @ 2020-04-21 21:46 UTC (permalink / raw) To: devel Cc: Nate DeSimone, Puja Pandya, Erik Bjorge, Bret Barkelew, Prince Agyeman Add a directory to edkrepo/common to store workspace management functionatlity. Add edkrepo/common/workspace_mgmt/humble directory to store related strings and included manifest_repos_mgmt_humble.py Add edkrepo/common/workspace_mgmt/manifest_repos_mgmt.py to support the management of multiple manifest repositories. Added pull_single_manifest_repo() to manifest_repos_mgmt.py Updated setup.py to include the new directories. Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> Cc: Puja Pandya <puja.pandya@intel.com> Cc: Erik Bjorge <erik.c.bjorge@intel.com> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com> Cc: Prince Agyeman <prince.agyeman@intel.com> --- .../humble/manifest_repos_mgmt_humble.py | 23 +++++++++ .../common/workspace_mgmt/manifest_repos_mgmt.py | 59 ++++++++++++++++++++++ setup.py | 5 +- 3 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 edkrepo/common/workspace_mgmt/humble/manifest_repos_mgmt_humble.py create mode 100644 edkrepo/common/workspace_mgmt/manifest_repos_mgmt.py diff --git a/edkrepo/common/workspace_mgmt/humble/manifest_repos_mgmt_humble.py b/edkrepo/common/workspace_mgmt/humble/manifest_repos_mgmt_humble.py new file mode 100644 index 0000000..4424720 --- /dev/null +++ b/edkrepo/common/workspace_mgmt/humble/manifest_repos_mgmt_humble.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 +# +## @file +# manifest_repos_mgmt_humble.py +# +# Copyright (c) 2017- 2020, Intel Corporation. All rights reserved.<BR> +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +''' Contains user facing strings for manifest_repos_mgmt.py ''' + +from colorama import Fore +from colorama import Style + +CLONE_SINGLE_MAN_REPO = 'Cloning global manifest repository to: {} from: {}' +SYNC_SINGLE_MAN_REPO = 'Syncing the global manifest repository: {}' +SINGLE_MAN_REPO_DIRTY = ('Uncommited changes present in the global manifest ' + 'repository: {} Resolve these changes and attempt your' + ' operation again.') +SINGLE_MAN_REPO_NOT_CFG_BRANCH = ('The current active branch, {}, is not the ' + 'specified branch for global manifst repository: {}') +SINGLE_MAN_REPO_CHECKOUT_CFG_BRANCH = 'Checking out the specified branch: {} prior to syncing' +SINGLE_MAN_REPO_MOVED = '{}{}WARNING:{}{} The global manifest repository has moved. Backing up previous global manifest repository to: {{}}{}\n'.format(Style.BRIGHT, Fore.RED, Style.RESET_ALL, Fore.RED, Style.RESET_ALL) \ No newline at end of file diff --git a/edkrepo/common/workspace_mgmt/manifest_repos_mgmt.py b/edkrepo/common/workspace_mgmt/manifest_repos_mgmt.py new file mode 100644 index 0000000..438de8e --- /dev/null +++ b/edkrepo/common/workspace_mgmt/manifest_repos_mgmt.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 +# +## @file +# manifest_repos_mgmt.py +# +# Copyright (c) 2017- 2020, Intel Corporation. All rights reserved.<BR> +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import traceback +import shutil + +import git +from git import Repo + +import edkrepo.config.config_factory as cfg +from edkrepo.common.edkrepo_exception import EdkrepoUncommitedChangesException +from edkrepo.common.common_repo_functions import init_color_console, generate_name_for_obsolete_backup +from edkrepo.common.progress_handler import GitProgressHandler +import edkrepo.common.workspace_mgmt.humble.manifest_repos_mgmt_humble as humble + + +def pull_single_manifest_repo(url, branch, local_path, reset_hard=False): + ''' + Clones or syncs a single global manifest repository as defined in either + the edkrepo.cfg or the edkrepo_user.cfg + ''' + # If a relative path is used join to the edkrepo global data directory path + if not os.path.isabs(local_path): + local_path = os.path.join(cfg.get_edkrepo_global_data_directory(), local_path) + # Clone the repository if it does not exist locally + if not os.path.exists(local_path): + print(humble.CLONE_SINGLE_MAN_REPO.format(local_path, url)) + repo = Repo.clone_from(url, local_path, progress=GitProgressHandler(), branch=branch) + # Sync the repository if it exists locally + else: + repo = Repo(local_path) + if url in repo.remotes['origin'].urls: + if repo.is_dirty(untracked_files=True) and not reset_hard: + raise EdkrepoUncommitedChangesException(humble.SINGLE_MAN_REPO_DIRTY.format(local_path)) + elif repo.is_dirty(untracked_files=True) and reset_hard: + repo.git.reset('--hard') + print(humble.SYNC_SINGLE_MAN_REPO.format(local_path)) + if repo.active_branch.name != branch: + print(humble.SINGLE_MAN_REPO_NOT_CFG_BRANCH.format(repo.active_branch.name, local_path)) + print(humble.SINGLE_MAN_REPO_CHECKOUT_CFG_BRANCH.format(branch)) + repo.git.checkout(branch) + repo.remotes.origin.pull() + # If the URL specified for this manifest repo has moved back up the existing + # local copy and clone the new repository + else: + new_path = generate_name_for_obsolete_backup(local_path) + new_path = os.path.join(os.path.dirname(local_path), new_path) + print(humble.SINGLE_MANE_REPO_MOVED.format(new_path)) + shutil.move(local_path, new_path) + print (humble.CLONE_SIGNLE_MAN_REPO.format(local_path, url)) + repo = Repo.clone_from(url, local_path, progress=GitProgressHandler(), branch=branch) + diff --git a/setup.py b/setup.py index 06a382b..b4d6ce8 100755 --- a/setup.py +++ b/setup.py @@ -12,8 +12,9 @@ setup(name='edkrepo', version='2.0.0', description='The edkrepo tools', packages=['edkrepo', 'edkrepo.commands', 'edkrepo.commands.arguments', 'edkrepo.commands.humble', - 'edkrepo.git_automation', 'edkrepo.common', 'edkrepo.config', 'edkrepo.config.humble', - 'edkrepo_manifest_parser', 'project_utils'], + 'edkrepo.git_automation', 'edkrepo.common', 'edkrepo.common.workspace_mgmt', + 'edkrepo.common.workspace_mgmt.humble', 'edkrepo.config', 'edkrepo.config.humble', + 'edkrepo_manifest_parser', 'project_utils'], package_data={ }, include_package_data=True, -- 2.16.2.windows.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [edk2-staging/EdkRepo] [PATCH 1/2] EdkRepo: Add edkrepo/common/workspace_mgmt/manifest_repos_mgmt 2020-04-21 21:46 ` [edk2-staging/EdkRepo] [PATCH 1/2] EdkRepo: Add edkrepo/common/workspace_mgmt/manifest_repos_mgmt Ashley E Desimone @ 2020-04-22 5:28 ` Nate DeSimone 0 siblings, 0 replies; 5+ messages in thread From: Nate DeSimone @ 2020-04-22 5:28 UTC (permalink / raw) To: Desimone, Ashley E, devel@edk2.groups.io Cc: Pandya, Puja, Bjorge, Erik C, Bret Barkelew, Agyeman, Prince Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com> On 4/21/20, 2:47 PM, "Desimone, Ashley E" <ashley.e.desimone@intel.com> wrote: Add a directory to edkrepo/common to store workspace management functionatlity. Add edkrepo/common/workspace_mgmt/humble directory to store related strings and included manifest_repos_mgmt_humble.py Add edkrepo/common/workspace_mgmt/manifest_repos_mgmt.py to support the management of multiple manifest repositories. Added pull_single_manifest_repo() to manifest_repos_mgmt.py Updated setup.py to include the new directories. Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> Cc: Puja Pandya <puja.pandya@intel.com> Cc: Erik Bjorge <erik.c.bjorge@intel.com> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com> Cc: Prince Agyeman <prince.agyeman@intel.com> --- .../humble/manifest_repos_mgmt_humble.py | 23 +++++++++ .../common/workspace_mgmt/manifest_repos_mgmt.py | 59 ++++++++++++++++++++++ setup.py | 5 +- 3 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 edkrepo/common/workspace_mgmt/humble/manifest_repos_mgmt_humble.py create mode 100644 edkrepo/common/workspace_mgmt/manifest_repos_mgmt.py diff --git a/edkrepo/common/workspace_mgmt/humble/manifest_repos_mgmt_humble.py b/edkrepo/common/workspace_mgmt/humble/manifest_repos_mgmt_humble.py new file mode 100644 index 0000000..4424720 --- /dev/null +++ b/edkrepo/common/workspace_mgmt/humble/manifest_repos_mgmt_humble.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 +# +## @file +# manifest_repos_mgmt_humble.py +# +# Copyright (c) 2017- 2020, Intel Corporation. All rights reserved.<BR> +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +''' Contains user facing strings for manifest_repos_mgmt.py ''' + +from colorama import Fore +from colorama import Style + +CLONE_SINGLE_MAN_REPO = 'Cloning global manifest repository to: {} from: {}' +SYNC_SINGLE_MAN_REPO = 'Syncing the global manifest repository: {}' +SINGLE_MAN_REPO_DIRTY = ('Uncommited changes present in the global manifest ' + 'repository: {} Resolve these changes and attempt your' + ' operation again.') +SINGLE_MAN_REPO_NOT_CFG_BRANCH = ('The current active branch, {}, is not the ' + 'specified branch for global manifst repository: {}') +SINGLE_MAN_REPO_CHECKOUT_CFG_BRANCH = 'Checking out the specified branch: {} prior to syncing' +SINGLE_MAN_REPO_MOVED = '{}{}WARNING:{}{} The global manifest repository has moved. Backing up previous global manifest repository to: {{}}{}\n'.format(Style.BRIGHT, Fore.RED, Style.RESET_ALL, Fore.RED, Style.RESET_ALL) \ No newline at end of file diff --git a/edkrepo/common/workspace_mgmt/manifest_repos_mgmt.py b/edkrepo/common/workspace_mgmt/manifest_repos_mgmt.py new file mode 100644 index 0000000..438de8e --- /dev/null +++ b/edkrepo/common/workspace_mgmt/manifest_repos_mgmt.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 +# +## @file +# manifest_repos_mgmt.py +# +# Copyright (c) 2017- 2020, Intel Corporation. All rights reserved.<BR> +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import traceback +import shutil + +import git +from git import Repo + +import edkrepo.config.config_factory as cfg +from edkrepo.common.edkrepo_exception import EdkrepoUncommitedChangesException +from edkrepo.common.common_repo_functions import init_color_console, generate_name_for_obsolete_backup +from edkrepo.common.progress_handler import GitProgressHandler +import edkrepo.common.workspace_mgmt.humble.manifest_repos_mgmt_humble as humble + + +def pull_single_manifest_repo(url, branch, local_path, reset_hard=False): + ''' + Clones or syncs a single global manifest repository as defined in either + the edkrepo.cfg or the edkrepo_user.cfg + ''' + # If a relative path is used join to the edkrepo global data directory path + if not os.path.isabs(local_path): + local_path = os.path.join(cfg.get_edkrepo_global_data_directory(), local_path) + # Clone the repository if it does not exist locally + if not os.path.exists(local_path): + print(humble.CLONE_SINGLE_MAN_REPO.format(local_path, url)) + repo = Repo.clone_from(url, local_path, progress=GitProgressHandler(), branch=branch) + # Sync the repository if it exists locally + else: + repo = Repo(local_path) + if url in repo.remotes['origin'].urls: + if repo.is_dirty(untracked_files=True) and not reset_hard: + raise EdkrepoUncommitedChangesException(humble.SINGLE_MAN_REPO_DIRTY.format(local_path)) + elif repo.is_dirty(untracked_files=True) and reset_hard: + repo.git.reset('--hard') + print(humble.SYNC_SINGLE_MAN_REPO.format(local_path)) + if repo.active_branch.name != branch: + print(humble.SINGLE_MAN_REPO_NOT_CFG_BRANCH.format(repo.active_branch.name, local_path)) + print(humble.SINGLE_MAN_REPO_CHECKOUT_CFG_BRANCH.format(branch)) + repo.git.checkout(branch) + repo.remotes.origin.pull() + # If the URL specified for this manifest repo has moved back up the existing + # local copy and clone the new repository + else: + new_path = generate_name_for_obsolete_backup(local_path) + new_path = os.path.join(os.path.dirname(local_path), new_path) + print(humble.SINGLE_MANE_REPO_MOVED.format(new_path)) + shutil.move(local_path, new_path) + print (humble.CLONE_SIGNLE_MAN_REPO.format(local_path, url)) + repo = Repo.clone_from(url, local_path, progress=GitProgressHandler(), branch=branch) + diff --git a/setup.py b/setup.py index 06a382b..b4d6ce8 100755 --- a/setup.py +++ b/setup.py @@ -12,8 +12,9 @@ setup(name='edkrepo', version='2.0.0', description='The edkrepo tools', packages=['edkrepo', 'edkrepo.commands', 'edkrepo.commands.arguments', 'edkrepo.commands.humble', - 'edkrepo.git_automation', 'edkrepo.common', 'edkrepo.config', 'edkrepo.config.humble', - 'edkrepo_manifest_parser', 'project_utils'], + 'edkrepo.git_automation', 'edkrepo.common', 'edkrepo.common.workspace_mgmt', + 'edkrepo.common.workspace_mgmt.humble', 'edkrepo.config', 'edkrepo.config.humble', + 'edkrepo_manifest_parser', 'project_utils'], package_data={ }, include_package_data=True, -- 2.16.2.windows.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [edk2-staging/EdkRepo] [PATCH 2/2] EdkRepo: Update pull_latest_manifest_repo to use pull_single_manifest_repo 2020-04-21 21:46 [edk2-staging/EdkRepo] [PATCH 0/2] EdkRepo: Add initial manifest repository support Ashley E Desimone 2020-04-21 21:46 ` [edk2-staging/EdkRepo] [PATCH 1/2] EdkRepo: Add edkrepo/common/workspace_mgmt/manifest_repos_mgmt Ashley E Desimone @ 2020-04-21 21:46 ` Ashley E Desimone 2020-04-22 5:30 ` Nate DeSimone 1 sibling, 1 reply; 5+ messages in thread From: Ashley E Desimone @ 2020-04-21 21:46 UTC (permalink / raw) To: devel Cc: Nate DeSimone, Puja Pandya, Erik Bjorge, Bret Barkelew, Prince Agyeman Updates the implementation for pull_latest_manifest_repo to call pull_single_manifest repo. Removes definitions of strings used by pull_latest_manifest_repo from common/humble.py and from the imports of common_repo_functions.py Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> Cc: Puja Pandya <puja.pandya@intel.com> Cc: Erik Bjorge <erik.c.bjorge@intel.com> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com> Cc: Prince Agyeman <prince.agyeman@intel.com> --- edkrepo/common/common_repo_functions.py | 33 ++++----------------------------- edkrepo/common/humble.py | 8 -------- 2 files changed, 4 insertions(+), 37 deletions(-) diff --git a/edkrepo/common/common_repo_functions.py b/edkrepo/common/common_repo_functions.py index 0d39291..3ec171a 100644 --- a/edkrepo/common/common_repo_functions.py +++ b/edkrepo/common/common_repo_functions.py @@ -46,12 +46,10 @@ from edkrepo.common.humble import COMMIT_TEMPLATE_NOT_FOUND, COMMIT_TEMPLATE_CUS from edkrepo.common.humble import ADD_PRIMARY_REMOTE, REMOVE_PRIMARY_REMOTE from edkrepo.common.humble import FETCH_PRIMARY_REMOTE, MIRROR_PRIMARY_SHA, TAG_AND_BRANCH_SPECIFIED from edkrepo.common.humble import MIRROR_BEHIND_PRIMARY_REPO, HOOK_NOT_FOUND_ERROR, SUBMODULE_FAILURE -from edkrepo.common.humble import MANIFEST_REPO_DIRTY, MANIFEST_REPO_MOVED, CLONING_MANIFEST_REPO, SYNCING_MANIFEST_REPO from edkrepo.common.humble import INCLUDED_URL_LINE, INCLUDED_INSTEAD_OF_LINE, INCLUDED_FILE_NAME from edkrepo.common.humble import ERROR_WRITING_INCLUDE, MULTIPLE_SOURCE_ATTRIBUTES_SPECIFIED from edkrepo.common.humble import VERIFY_GLOBAL, VERIFY_ARCHIVED, VERIFY_PROJ, VERIFY_PROJ_FAIL -from edkrepo.common.humble import VERIFY_PROJ_NOT_IN_INDEX, VERIFY_GLOBAL_FAIL, MANIFEST_REPO_NOT_CONFIG_BRANCH -from edkrepo.common.humble import MANIFEST_REPO_CHECKOUT_CONFIG_BRANCH +from edkrepo.common.humble import VERIFY_PROJ_NOT_IN_INDEX, VERIFY_GLOBAL_FAIL from edkrepo.common.pathfix import get_actual_path from project_utils.sparse import BuildInfo, process_sparse_checkout from edkrepo.config.config_factory import get_workspace_path @@ -61,6 +59,7 @@ from edkrepo_manifest_parser.edk_manifest import CiIndexXml, ManifestXml from edkrepo.common.edkrepo_exception import EdkrepoNotFoundException, EdkrepoGitException, EdkrepoWarningException from edkrepo.common.edkrepo_exception import EdkrepoFoundMultipleException, EdkrepoHookNotFoundException from edkrepo.common.edkrepo_exception import EdkrepoGitConfigSetupException, EdkrepoManifestInvalidException +from edkrepo.common.workspace_mgmt.manifest_repos_mgmt import pull_single_manifest_repo from edkrepo.common.ui_functions import init_color_console from edkrepo_manifest_parser import edk_manifest from edkrepo_manifest_parser.edk_manifest_validation import validate_manifestrepo @@ -77,32 +76,8 @@ def pull_latest_manifest_repo(args, config, reset_hard=False): branch = config['cfg_file'].manifest_repo_branch local_path = config['cfg_file'].manifest_repo_local_path init_color_console(False) - if not (os.path.isabs(local_path)): - #since only a relative path was specified it must be joined to the Edkrepo Application Data Directory - local_path = os.path.join(get_edkrepo_global_data_directory(), local_path) - if not os.path.exists(local_path): - print (CLONING_MANIFEST_REPO.format(local_path, repo_url)) - repo = Repo.clone_from(repo_url, local_path, progress=GitProgressHandler(), branch=branch) - else: - repo = Repo(local_path) - if repo_url in repo.remotes['origin'].urls: - if repo.is_dirty(untracked_files=True) and not reset_hard: - raise EdkrepoWarningException(MANIFEST_REPO_DIRTY) - elif repo.is_dirty(untracked_files=True) and reset_hard: - repo.git.reset('--hard') - print (SYNCING_MANIFEST_REPO) - if repo.active_branch.name != branch: - print(MANIFEST_REPO_NOT_CONFIG_BRANCH.format(repo.active_branch.name)) - print(MANIFEST_REPO_CHECKOUT_CONFIG_BRANCH.format(branch)) - repo.git.checkout(branch) - repo.remotes.origin.pull() - else: - new_path = generate_name_for_obsolete_backup(local_path) - new_path = os.path.join(os.path.dirname(local_path), new_path) - print(MANIFEST_REPO_MOVED.format(new_path)) - shutil.move(local_path, new_path) - print (CLONING_MANIFEST_REPO.format(local_path, repo_url)) - repo = Repo.clone_from(repo_url, local_path, progress=GitProgressHandler(), branch=branch) + pull_single_manifest_repo(repo_url, branch, local_path, reset_hard) + def clone_repos(args, workspace_dir, repos_to_clone, project_client_side_hooks, config, skip_submodule, manifest): for repo_to_clone in repos_to_clone: diff --git a/edkrepo/common/humble.py b/edkrepo/common/humble.py index 64b9519..8ca38bb 100644 --- a/edkrepo/common/humble.py +++ b/edkrepo/common/humble.py @@ -34,14 +34,6 @@ MULTIPLE_SOURCE_ATTRIBUTES_SPECIFIED = 'BRANCH or TAG name present with COMMIT I TAG_AND_BRANCH_SPECIFIED = 'BRANCH AND TAG name present in combination field for {} repo. Using TAG.\n' CHECKING_CONNECTION = 'Checking connection to remote url: {}\n' -# Informational messages and warnings for pull_latest_manifest_repo() -MANIFEST_REPO_DIRTY = 'Uncommited changes present in the global manifest repository. Run edkrepo update-manifest-repo --hard to revert these changes and sync the global manifest repository.\n' -MANIFEST_REPO_MOVED = '{}{}WARNING:{}{} The Global manifest repository has moved. Backing up previous global manifest repository to: {{}}{}\n'.format(Style.BRIGHT, Fore.RED, Style.RESET_ALL, Fore.RED, Style.RESET_ALL) -CLONING_MANIFEST_REPO = 'Cloning global manifest repository to: {} from: {}\n' -SYNCING_MANIFEST_REPO = 'Syncing the global manifest repository.\n' -MANIFEST_REPO_NOT_CONFIG_BRANCH = 'The current active branch, {}, is not the specified manifest repository branch' -MANIFEST_REPO_CHECKOUT_CONFIG_BRANCH = 'Checking out the specified manifest repository branch, {}, prior to syncing' - #Error messages for sync_command.py SYNC_EXIT = 'Exiting without performing sync operations.' SYNC_UNCOMMITED_CHANGES = UNCOMMITED_CHANGES + SYNC_EXIT -- 2.16.2.windows.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [edk2-staging/EdkRepo] [PATCH 2/2] EdkRepo: Update pull_latest_manifest_repo to use pull_single_manifest_repo 2020-04-21 21:46 ` [edk2-staging/EdkRepo] [PATCH 2/2] EdkRepo: Update pull_latest_manifest_repo to use pull_single_manifest_repo Ashley E Desimone @ 2020-04-22 5:30 ` Nate DeSimone 0 siblings, 0 replies; 5+ messages in thread From: Nate DeSimone @ 2020-04-22 5:30 UTC (permalink / raw) To: Desimone, Ashley E, devel@edk2.groups.io Cc: Pandya, Puja, Bjorge, Erik C, Bret Barkelew, Agyeman, Prince Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com> On 4/21/20, 2:47 PM, "Desimone, Ashley E" <ashley.e.desimone@intel.com> wrote: Updates the implementation for pull_latest_manifest_repo to call pull_single_manifest repo. Removes definitions of strings used by pull_latest_manifest_repo from common/humble.py and from the imports of common_repo_functions.py Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> Cc: Puja Pandya <puja.pandya@intel.com> Cc: Erik Bjorge <erik.c.bjorge@intel.com> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com> Cc: Prince Agyeman <prince.agyeman@intel.com> --- edkrepo/common/common_repo_functions.py | 33 ++++----------------------------- edkrepo/common/humble.py | 8 -------- 2 files changed, 4 insertions(+), 37 deletions(-) diff --git a/edkrepo/common/common_repo_functions.py b/edkrepo/common/common_repo_functions.py index 0d39291..3ec171a 100644 --- a/edkrepo/common/common_repo_functions.py +++ b/edkrepo/common/common_repo_functions.py @@ -46,12 +46,10 @@ from edkrepo.common.humble import COMMIT_TEMPLATE_NOT_FOUND, COMMIT_TEMPLATE_CUS from edkrepo.common.humble import ADD_PRIMARY_REMOTE, REMOVE_PRIMARY_REMOTE from edkrepo.common.humble import FETCH_PRIMARY_REMOTE, MIRROR_PRIMARY_SHA, TAG_AND_BRANCH_SPECIFIED from edkrepo.common.humble import MIRROR_BEHIND_PRIMARY_REPO, HOOK_NOT_FOUND_ERROR, SUBMODULE_FAILURE -from edkrepo.common.humble import MANIFEST_REPO_DIRTY, MANIFEST_REPO_MOVED, CLONING_MANIFEST_REPO, SYNCING_MANIFEST_REPO from edkrepo.common.humble import INCLUDED_URL_LINE, INCLUDED_INSTEAD_OF_LINE, INCLUDED_FILE_NAME from edkrepo.common.humble import ERROR_WRITING_INCLUDE, MULTIPLE_SOURCE_ATTRIBUTES_SPECIFIED from edkrepo.common.humble import VERIFY_GLOBAL, VERIFY_ARCHIVED, VERIFY_PROJ, VERIFY_PROJ_FAIL -from edkrepo.common.humble import VERIFY_PROJ_NOT_IN_INDEX, VERIFY_GLOBAL_FAIL, MANIFEST_REPO_NOT_CONFIG_BRANCH -from edkrepo.common.humble import MANIFEST_REPO_CHECKOUT_CONFIG_BRANCH +from edkrepo.common.humble import VERIFY_PROJ_NOT_IN_INDEX, VERIFY_GLOBAL_FAIL from edkrepo.common.pathfix import get_actual_path from project_utils.sparse import BuildInfo, process_sparse_checkout from edkrepo.config.config_factory import get_workspace_path @@ -61,6 +59,7 @@ from edkrepo_manifest_parser.edk_manifest import CiIndexXml, ManifestXml from edkrepo.common.edkrepo_exception import EdkrepoNotFoundException, EdkrepoGitException, EdkrepoWarningException from edkrepo.common.edkrepo_exception import EdkrepoFoundMultipleException, EdkrepoHookNotFoundException from edkrepo.common.edkrepo_exception import EdkrepoGitConfigSetupException, EdkrepoManifestInvalidException +from edkrepo.common.workspace_mgmt.manifest_repos_mgmt import pull_single_manifest_repo from edkrepo.common.ui_functions import init_color_console from edkrepo_manifest_parser import edk_manifest from edkrepo_manifest_parser.edk_manifest_validation import validate_manifestrepo @@ -77,32 +76,8 @@ def pull_latest_manifest_repo(args, config, reset_hard=False): branch = config['cfg_file'].manifest_repo_branch local_path = config['cfg_file'].manifest_repo_local_path init_color_console(False) - if not (os.path.isabs(local_path)): - #since only a relative path was specified it must be joined to the Edkrepo Application Data Directory - local_path = os.path.join(get_edkrepo_global_data_directory(), local_path) - if not os.path.exists(local_path): - print (CLONING_MANIFEST_REPO.format(local_path, repo_url)) - repo = Repo.clone_from(repo_url, local_path, progress=GitProgressHandler(), branch=branch) - else: - repo = Repo(local_path) - if repo_url in repo.remotes['origin'].urls: - if repo.is_dirty(untracked_files=True) and not reset_hard: - raise EdkrepoWarningException(MANIFEST_REPO_DIRTY) - elif repo.is_dirty(untracked_files=True) and reset_hard: - repo.git.reset('--hard') - print (SYNCING_MANIFEST_REPO) - if repo.active_branch.name != branch: - print(MANIFEST_REPO_NOT_CONFIG_BRANCH.format(repo.active_branch.name)) - print(MANIFEST_REPO_CHECKOUT_CONFIG_BRANCH.format(branch)) - repo.git.checkout(branch) - repo.remotes.origin.pull() - else: - new_path = generate_name_for_obsolete_backup(local_path) - new_path = os.path.join(os.path.dirname(local_path), new_path) - print(MANIFEST_REPO_MOVED.format(new_path)) - shutil.move(local_path, new_path) - print (CLONING_MANIFEST_REPO.format(local_path, repo_url)) - repo = Repo.clone_from(repo_url, local_path, progress=GitProgressHandler(), branch=branch) + pull_single_manifest_repo(repo_url, branch, local_path, reset_hard) + def clone_repos(args, workspace_dir, repos_to_clone, project_client_side_hooks, config, skip_submodule, manifest): for repo_to_clone in repos_to_clone: diff --git a/edkrepo/common/humble.py b/edkrepo/common/humble.py index 64b9519..8ca38bb 100644 --- a/edkrepo/common/humble.py +++ b/edkrepo/common/humble.py @@ -34,14 +34,6 @@ MULTIPLE_SOURCE_ATTRIBUTES_SPECIFIED = 'BRANCH or TAG name present with COMMIT I TAG_AND_BRANCH_SPECIFIED = 'BRANCH AND TAG name present in combination field for {} repo. Using TAG.\n' CHECKING_CONNECTION = 'Checking connection to remote url: {}\n' -# Informational messages and warnings for pull_latest_manifest_repo() -MANIFEST_REPO_DIRTY = 'Uncommited changes present in the global manifest repository. Run edkrepo update-manifest-repo --hard to revert these changes and sync the global manifest repository.\n' -MANIFEST_REPO_MOVED = '{}{}WARNING:{}{} The Global manifest repository has moved. Backing up previous global manifest repository to: {{}}{}\n'.format(Style.BRIGHT, Fore.RED, Style.RESET_ALL, Fore.RED, Style.RESET_ALL) -CLONING_MANIFEST_REPO = 'Cloning global manifest repository to: {} from: {}\n' -SYNCING_MANIFEST_REPO = 'Syncing the global manifest repository.\n' -MANIFEST_REPO_NOT_CONFIG_BRANCH = 'The current active branch, {}, is not the specified manifest repository branch' -MANIFEST_REPO_CHECKOUT_CONFIG_BRANCH = 'Checking out the specified manifest repository branch, {}, prior to syncing' - #Error messages for sync_command.py SYNC_EXIT = 'Exiting without performing sync operations.' SYNC_UNCOMMITED_CHANGES = UNCOMMITED_CHANGES + SYNC_EXIT -- 2.16.2.windows.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-04-22 5:30 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-04-21 21:46 [edk2-staging/EdkRepo] [PATCH 0/2] EdkRepo: Add initial manifest repository support Ashley E Desimone 2020-04-21 21:46 ` [edk2-staging/EdkRepo] [PATCH 1/2] EdkRepo: Add edkrepo/common/workspace_mgmt/manifest_repos_mgmt Ashley E Desimone 2020-04-22 5:28 ` Nate DeSimone 2020-04-21 21:46 ` [edk2-staging/EdkRepo] [PATCH 2/2] EdkRepo: Update pull_latest_manifest_repo to use pull_single_manifest_repo Ashley E Desimone 2020-04-22 5:30 ` Nate DeSimone
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox