@@ -179,30 +179,49 @@ def build_gitlab_repo_url(purl):
179179 (
180180 r"git\.kernel\.org" ,
181181 r"gitweb\.gentoo\.org" ,
182- ): "https://{namespace}/{name}.git/commit/?id={version}" ,
182+ ): {
183+ "commit_url" : "https://{namespace}/{name}.git/commit/?id={version}" ,
184+ "repo_url" : "https://{namespace}/{name}.git" ,
185+ },
183186 # gitiles
184187 (
185188 r"android\.googlesource\.com" ,
186189 r"aomedia\.googlesource\.com" ,
187190 r"chromium\.googlesource\.com" ,
188- ): "https://{namespace}/{name}/+/{version}" ,
191+ ): {
192+ "commit_url" : "https://{namespace}/{name}/+/{version}" ,
193+ "repo_url" : "https://{namespace}/{name}" ,
194+ },
189195 # allura
190- (r"sourceforge\.net" , r"forge-allura\.apache\.org" ): "https://{namespace}/{name}/ci/{version}" ,
196+ (r"sourceforge\.net" , r"forge-allura\.apache\.org" ): {
197+ "commit_url" : "https://{namespace}/{name}/ci/{version}" ,
198+ "repo_url" : "https://{namespace}/{name}" ,
199+ },
191200 # gitweb
192201 (
193202 r"gcc\.gnu\.org" ,
194203 r"git\.postgresql\.org" ,
195- ): "https://{namespace}/?p={name}.git;a=commit;h={version}" ,
204+ r"sourceware\.org/git" ,
205+ ): {
206+ "commit_url" : "https://{namespace}/?p={name}.git;a=commit;h={version}" ,
207+ "repo_url" : "https://{namespace}/?p={name}.git" ,
208+ },
196209 # gitea / forgejo
197210 (
198211 r"codeberg\.org" ,
199212 r"gitea\.com" ,
200- ): "https://{namespace}/{name}/commit/{version}" ,
213+ ): {
214+ "commit_url" : "https://{namespace}/{name}/commit/{version}" ,
215+ "repo_url" : "https://{namespace}/{name}" ,
216+ },
201217 # sub gitlab ( excludes gitlab.com )
202218 (
203- r"git\.codelinaro\.org" ,
219+ r"git\.codelinaro\.org.* " ,
204220 r"gitlab\.(?!com\b)[^/]+" ,
205- ): "https://{namespace}/{name}/-/commit/{version}" ,
221+ ): {
222+ "commit_url" : "https://{namespace}/{name}/-/commit/{version}" ,
223+ "repo_url" : "https://{namespace}/{name}" ,
224+ },
206225}
207226
208227
@@ -216,17 +235,20 @@ def build_generic_repo_url(purl):
216235 namespace = purl_data .namespace
217236 version = purl_data .version
218237
219- if not (namespace and name and version ):
238+ if not (namespace and name ):
220239 return
221240
222241 for patterns , template_url in GIT_REPO_GENERIC .items ():
223242 for pattern in patterns :
224243 if not re .match (pattern , namespace ):
225244 continue
226245
227- return template_url .format (namespace = namespace , name = name , version = version )
228-
229- return None
246+ if version :
247+ return template_url ["commit_url" ].format (
248+ namespace = namespace , name = name , version = version
249+ )
250+ return template_url ["repo_url" ].format (namespace = namespace , name = name )
251+ return
230252
231253
232254@repo_router .route ("pkg:(gem|rubygems)/.*" )
0 commit comments