From 7858316a63a528efc9d2de32a4ae4825687ea3df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Till-Andr=C3=A9=20Diegeler?= Date: Fri, 15 Aug 2025 07:59:05 +0200 Subject: [PATCH] Bugfix for go-git client issue --- gradle/changelog/gogit_client_support.yaml | 2 ++ .../main/java/sonia/scm/web/GitUserAgentProvider.java | 9 +++++++++ .../java/sonia/scm/web/GitUserAgentProviderTest.java | 1 + 3 files changed, 12 insertions(+) create mode 100644 gradle/changelog/gogit_client_support.yaml diff --git a/gradle/changelog/gogit_client_support.yaml b/gradle/changelog/gogit_client_support.yaml new file mode 100644 index 0000000000..26cebbbf75 --- /dev/null +++ b/gradle/changelog/gogit_client_support.yaml @@ -0,0 +1,2 @@ +- type: fixed + description: Support for go-git user agents (e.g. ArgoCD ≥ 2.14) diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitUserAgentProvider.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitUserAgentProvider.java index e93c5a3ecc..b770431670 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitUserAgentProvider.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitUserAgentProvider.java @@ -69,7 +69,12 @@ public class GitUserAgentProvider implements UserAgentProvider { .basicAuthenticationCharset(Charsets.UTF_8) .build(); + private static final String PREFIX_GOGIT = "go-git/"; + @VisibleForTesting + static final UserAgent GOGIT = UserAgent.scmClient("go-git") + .basicAuthenticationCharset(Charsets.UTF_8) + .build(); //~--- methods -------------------------------------------------------------- @@ -85,6 +90,8 @@ public class GitUserAgentProvider implements UserAgentProvider { return GIT_LFS; } else if (isGit(lowerUserAgent)) { return GIT; + } else if (isGoGit(lowerUserAgent)) { + return GOGIT; } else { return null; } @@ -109,4 +116,6 @@ public class GitUserAgentProvider implements UserAgentProvider { private boolean isGit(String userAgent) { return userAgent.startsWith(PREFIX_REGULAR); } + + private boolean isGoGit(String userAgent) { return userAgent.startsWith(PREFIX_GOGIT); } } diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/GitUserAgentProviderTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/GitUserAgentProviderTest.java index 506b8d5522..56639ba203 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/GitUserAgentProviderTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/GitUserAgentProviderTest.java @@ -47,6 +47,7 @@ public class GitUserAgentProviderTest { assertEquals(GitUserAgentProvider.JGIT, parse("jgit/4.5.2")); assertEquals(GitUserAgentProvider.GIT_LFS, parse("git-lfs/2.0.1 (GitHub; windows amd64; go 1.8; git 678cdbd4)")); assertEquals(GitUserAgentProvider.MSYSGIT, parse("git/1.8.3.msysgit.0")); + assertEquals(GitUserAgentProvider.GOGIT, parse("go-git/5.x")); assertNull(parse("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36")); }