diff --git a/swh/lister/gitweb/lister.py b/swh/lister/gitweb/lister.py index 8d0d81b83fbd095ed94fc2f96be1b84b4f1c85c7..1710ba79556882c0655e1e8dafd517bfbaa2c18e 100644 --- a/swh/lister/gitweb/lister.py +++ b/swh/lister/gitweb/lister.py @@ -167,13 +167,9 @@ def try_to_determine_git_repository(repository_url: str) -> Optional[str]: """ result = None parsed_url = urlparse(repository_url) - params = parse_qs(parsed_url.query).get("p") - if params: - repo = params[0] - if repo and repo.endswith(";a=summary"): - repo = repo.rstrip(";a=summary") - - result = f"git://{parsed_url.netloc}/{repo}" + repo = parse_qs(parsed_url.query, separator=";").get("p") + if repo: + result = f"git://{parsed_url.netloc}/{repo[0]}" return result diff --git a/swh/lister/gitweb/tests/test_lister.py b/swh/lister/gitweb/tests/test_lister.py index 1c83e7dc0ec8902b6998a3cbbe8de6c76b83619f..dbb5ecbf4c2e4cce845443196b75b2ce5e8ff642 100644 --- a/swh/lister/gitweb/tests/test_lister.py +++ b/swh/lister/gitweb/tests/test_lister.py @@ -138,6 +138,10 @@ def test_lister_gitweb_get_origin_from_repo_failing( "https://git.shadowcat.co.uk?p=File-Slurp.git;a=summary", "git://git.shadowcat.co.uk/File-Slurp.git", ), + ( + "https://git.example.org?p=baaaa;a=summary", + "git://git.example.org/baaaa", + ), ("https://domain.org/foobar", None), ], )