diff --git a/swh/loader/svn/tests/test_utils.py b/swh/loader/svn/tests/test_utils.py --- a/swh/loader/svn/tests/test_utils.py +++ b/swh/loader/svn/tests/test_utils.py @@ -408,6 +408,18 @@ False, ), ), + ( + "-r 123 http://svn.example.com/repos/sounds@100 third-party/sounds", + "trunk/externals", + "http://svn.example.org/repos/test", + ("third-party/sounds", "http://svn.example.com/repos/sounds", 123, False), + ), + ( + "-r 123 http://svn.example.com/repos/sounds@150 third-party/sounds", + "trunk/externals", + "http://svn.example.org/repos/test", + ("third-party/sounds", "http://svn.example.com/repos/sounds", 123, False), + ), ], ) def test_parse_external_definition(external, dir_path, repo_url, expected_result): diff --git a/swh/loader/svn/utils.py b/swh/loader/svn/utils.py --- a/swh/loader/svn/utils.py +++ b/swh/loader/svn/utils.py @@ -288,7 +288,10 @@ # http://svn.example.org/repos/test/path@XXX url, revision_s = external_url.rsplit("@", maxsplit=1) try: - revision = int(revision_s) + # ensure revision_s can be parsed to int + rev = int(revision_s) + # -r XXX takes priority over @XXX + revision = revision or rev external_url = url except ValueError: # handle URL like http://user@svn.example.org/