From bb9445cf4659c5f4ac57e745082063d5d174e16d Mon Sep 17 00:00:00 2001 From: Marat Radchenko Date: Thu, 16 May 2024 18:03:08 +0300 Subject: [PATCH] Expose repository_object_format via Project API GitLab 16.9 introduced an option to create repositories with SHA256 instead of SHA1. This commit exposes object format used by particular repository via Project API. See https://gitlab.com/gitlab-org/gitlab/-/issues/419887 Signed-off-by: Marat Radchenko --- src/main/java/org/gitlab4j/api/ProjectApi.java | 5 +++-- src/main/java/org/gitlab4j/api/models/Project.java | 14 ++++++++++++++ src/test/java/org/gitlab4j/api/TestProjectApi.java | 4 +++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/gitlab4j/api/ProjectApi.java b/src/main/java/org/gitlab4j/api/ProjectApi.java index de1954cbc..a275c7725 100644 --- a/src/main/java/org/gitlab4j/api/ProjectApi.java +++ b/src/main/java/org/gitlab4j/api/ProjectApi.java @@ -1031,6 +1031,7 @@ public Project createProject(Project project, String importUrl) throws GitLabApi .withParam("build_git_strategy", project.getBuildGitStrategy()) .withParam("build_coverage_regex", project.getBuildCoverageRegex()) .withParam("ci_config_path", project.getCiConfigPath()) + .withParam("repository_object_format", project.getRepositoryObjectFormat()) .withParam("suggestion_commit_message", project.getSuggestionCommitMessage()) .withParam("remove_source_branch_after_merge", project.getRemoveSourceBranchAfterMerge()) .withParam("squash_option", project.getSquashOption()); @@ -2254,7 +2255,7 @@ public ProjectHook addHook(Object projectIdOrPath, String url, boolean doPushEve boolean doIssuesEvents, boolean doMergeRequestsEvents) throws GitLabApiException { return addHook(projectIdOrPath, url, doPushEvents, doIssuesEvents, doMergeRequestsEvents, null); } - + /** * Adds a hook to project. * Convenience method for {@link #addHook(Object, String, ProjectHook, Boolean, String)} @@ -4044,7 +4045,7 @@ public ProjectAccessToken createProjectAccessToken(Object projectIdOrPath, Strin public ProjectAccessToken rotateProjectAccessToken(Object projectIdOrPath, Long tokenId) throws GitLabApiException { return rotateProjectAccessToken(projectIdOrPath, tokenId, null); } - + /** * Rotates the given project access token. * The token is revoked and a new one which will expire in one week is created to replace it. diff --git a/src/main/java/org/gitlab4j/api/models/Project.java b/src/main/java/org/gitlab4j/api/models/Project.java index b475f6d70..34251e2b8 100644 --- a/src/main/java/org/gitlab4j/api/models/Project.java +++ b/src/main/java/org/gitlab4j/api/models/Project.java @@ -114,6 +114,7 @@ public String toString() { private AutoDevopsDeployStrategy autoDevopsDeployStrategy; private Boolean autocloseReferencedIssues; private Boolean emailsDisabled; + private String repositoryObjectFormat; private String suggestionCommitMessage; private SquashOption squashOption; private String mergeCommitTemplate; @@ -900,6 +901,19 @@ public Project withEmailsDisabled(Boolean emailsDisabled) { return this; } + public String getRepositoryObjectFormat() { + return repositoryObjectFormat; + } + + public void setRepositoryObjectFormat(String repositoryObjectFormat) { + this.repositoryObjectFormat = repositoryObjectFormat; + } + + public Project withRepositoryObjectFormat(String repositoryObjectFormat) { + this.repositoryObjectFormat = repositoryObjectFormat; + return this; + } + public String getSuggestionCommitMessage() { return this.suggestionCommitMessage; } diff --git a/src/test/java/org/gitlab4j/api/TestProjectApi.java b/src/test/java/org/gitlab4j/api/TestProjectApi.java index 5f091acfe..4a3e909d4 100644 --- a/src/test/java/org/gitlab4j/api/TestProjectApi.java +++ b/src/test/java/org/gitlab4j/api/TestProjectApi.java @@ -224,6 +224,7 @@ public void testCreate() throws GitLabApiException { .withMergeRequestsEnabled(true) .withWikiEnabled(true) .withSnippetsEnabled(true) + .withRepositoryObjectFormat("sha1") .withVisibility(Visibility.PUBLIC) .withTagList(Arrays.asList("tag1", "tag2")); @@ -235,6 +236,7 @@ public void testCreate() throws GitLabApiException { assertEquals(project.getMergeRequestsEnabled(), newProject.getMergeRequestsEnabled()); assertEquals(project.getWikiEnabled(), newProject.getWikiEnabled()); assertEquals(project.getSnippetsEnabled(), newProject.getSnippetsEnabled()); + assertEquals(project.getRepositoryObjectFormat(), newProject.getRepositoryObjectFormat()); assertEquals(project.getTagList(), newProject.getTagList()); assertTrue(Visibility.PUBLIC == newProject.getVisibility() || Boolean.TRUE == newProject.getPublic()); } @@ -323,7 +325,7 @@ else if (TEST_PROJECT_NAME_2.equals(project.getName())) @Test @Disabled("Required Gitlab version not less then 16.9") public void testGetAvatar() throws GitLabApiException, IOException { - + assumeTrue(testProject != null); File avatarFile = new File("src/test/resources/org/gitlab4j/api", AVATAR_FILENAME);