public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [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

* [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 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

* 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