From bfb3e29ccb888a216aa45b9ff435fe6cd2a9b981 Mon Sep 17 00:00:00 2001 From: Max Mertens Date: Mon, 30 Sep 2024 10:40:50 +0200 Subject: [PATCH 1/3] Catch Gitlab HTTP error for missing submodules --- gitlab_submodule/gitlab_submodule.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gitlab_submodule/gitlab_submodule.py b/gitlab_submodule/gitlab_submodule.py index 772de60..6467892 100644 --- a/gitlab_submodule/gitlab_submodule.py +++ b/gitlab_submodule/gitlab_submodule.py @@ -2,6 +2,7 @@ from gitlab import Gitlab from gitlab.v4.objects import Project, ProjectManager +from gitlab.exceptions import GitlabHttpError from gitlab_submodule.objects import Submodule, Subproject from gitlab_submodule.read_gitmodules import \ @@ -60,7 +61,7 @@ def iterate_subprojects( ) if not (only_gitlab_subprojects and not subproject.project): yield subproject - except FileNotFoundError: + except FileNotFoundError, GitlabHttpError: pass From f1961ce0ed1458b1edf4c5635d6254e703a9c675 Mon Sep 17 00:00:00 2001 From: ValentinFrancois <24223132+ValentinFrancois@users.noreply.github.com> Date: Sat, 28 Jun 2025 18:41:52 +0200 Subject: [PATCH 2/3] fix SyntaxError --- gitlab_submodule/gitlab_submodule.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitlab_submodule/gitlab_submodule.py b/gitlab_submodule/gitlab_submodule.py index 6467892..39437b3 100644 --- a/gitlab_submodule/gitlab_submodule.py +++ b/gitlab_submodule/gitlab_submodule.py @@ -61,7 +61,7 @@ def iterate_subprojects( ) if not (only_gitlab_subprojects and not subproject.project): yield subproject - except FileNotFoundError, GitlabHttpError: + except (FileNotFoundError, GitlabHttpError): pass From ddced9c9008b31fe3f142e3094b562a9caaf1934 Mon Sep 17 00:00:00 2001 From: ValentinFrancois <24223132+ValentinFrancois@users.noreply.github.com> Date: Sat, 28 Jun 2025 18:50:35 +0200 Subject: [PATCH 3/3] improvement: Catch GitlabHttpError at the right place --- gitlab_submodule/gitlab_submodule.py | 3 +-- gitlab_submodule/submodule_commit.py | 8 ++------ gitlab_submodule/submodule_to_project.py | 7 +++---- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/gitlab_submodule/gitlab_submodule.py b/gitlab_submodule/gitlab_submodule.py index 39437b3..772de60 100644 --- a/gitlab_submodule/gitlab_submodule.py +++ b/gitlab_submodule/gitlab_submodule.py @@ -2,7 +2,6 @@ from gitlab import Gitlab from gitlab.v4.objects import Project, ProjectManager -from gitlab.exceptions import GitlabHttpError from gitlab_submodule.objects import Submodule, Subproject from gitlab_submodule.read_gitmodules import \ @@ -61,7 +60,7 @@ def iterate_subprojects( ) if not (only_gitlab_subprojects and not subproject.project): yield subproject - except (FileNotFoundError, GitlabHttpError): + except FileNotFoundError: pass diff --git a/gitlab_submodule/submodule_commit.py b/gitlab_submodule/submodule_commit.py index ceb3eab..2e4fdb6 100644 --- a/gitlab_submodule/submodule_commit.py +++ b/gitlab_submodule/submodule_commit.py @@ -3,15 +3,11 @@ from os import path from typing import Optional, Union -from gitlab.exceptions import GitlabGetError +from gitlab.exceptions import GitlabGetError, GitlabHttpError from gitlab.v4.objects import Project, ProjectCommit from gitlab_submodule.objects import Commit, Submodule - -logger = logging.getLogger(__name__) - - logger = logging.getLogger(__name__) @@ -54,7 +50,7 @@ def _get_submodule_commit_id( submodule_dir = project.files.get( submodule_path, ref=ref if ref else project.default_branch) - except GitlabGetError: + except (GitlabGetError, GitlabHttpError): raise FileNotFoundError( f'Local submodule path "{submodule_path}" was not found for ' f'project at url "{project.web_url}" - check if your .gitmodules ' diff --git a/gitlab_submodule/submodule_to_project.py b/gitlab_submodule/submodule_to_project.py index 70af4c0..bca4260 100644 --- a/gitlab_submodule/submodule_to_project.py +++ b/gitlab_submodule/submodule_to_project.py @@ -1,10 +1,9 @@ -from typing import List, Optional, Union - import logging import re from posixpath import join, normpath +from typing import List, Optional, Union -from gitlab.exceptions import GitlabGetError +from gitlab.exceptions import GitlabGetError, GitlabHttpError from gitlab.v4.objects import Project, ProjectManager from giturlparse import GitUrlParsed, parse @@ -28,7 +27,7 @@ def submodule_to_project( try: submodule_project = project_manager.get( submodule_project_path_with_namespace) - except GitlabGetError: + except (GitlabGetError, GitlabHttpError): # Repo doesn't actually exist (possible because you can modify # .gitmodules without using `git submodule add`) raise FileNotFoundError(