diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2018-07-05 13:54:08 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2018-07-05 13:54:08 +0300 |
commit | dfcbb65ed9b65f392fc250cb91124e4793b49c14 (patch) | |
tree | b1babbf49d386b85a07e7743e973a2d9c63c6913 /libbpkg/manifest.cxx | |
parent | ac884344b24112b11cd6cad0a7cf41f036159a22 (diff) |
Guess repository type for relative locations and consider git type for all locations with .git extension
Diffstat (limited to 'libbpkg/manifest.cxx')
-rw-r--r-- | libbpkg/manifest.cxx | 30 |
1 files changed, 7 insertions, 23 deletions
diff --git a/libbpkg/manifest.cxx b/libbpkg/manifest.cxx index dc488de..af2a889 100644 --- a/libbpkg/manifest.cxx +++ b/libbpkg/manifest.cxx @@ -2062,13 +2062,14 @@ namespace bpkg } case repository_protocol::http: case repository_protocol::https: - { - return url.path->extension () == "git" - ? repository_type::git - : repository_type::pkg; - } case repository_protocol::file: { + if (url.path->extension () == "git") + return repository_type::git; + + if (url.scheme != repository_protocol::file) // HTTP(S)? + return repository_type::pkg; + return local && dir_exists (path_cast<dir_path> (*url.path) / dir_path (".git")) ? repository_type::git @@ -2751,25 +2752,8 @@ namespace bpkg { repository_url u (move (location->value)); - // If the prerequisite repository type is not specified explicitly then - // we consider it to be the base repository type for the relative - // location or guess it otherwise. - // if (!type) - { - if (u.scheme == repository_protocol::file && u.path->relative ()) - { - type = base_type; - - // Strip the URL fragment if the base repository type is dir (see - // the Repository Manifest documentation for the gory details). - // - if (base_type == repository_type::dir) - u.fragment = nullopt; - } - else - type = guess_type (u, false); // Can't throw. - } + type = guess_type (u, false); // Can't throw. // Call prerequisite repository location constructor, do not amend // relative path. |