aboutsummaryrefslogtreecommitdiff
path: root/libbpkg
diff options
context:
space:
mode:
Diffstat (limited to 'libbpkg')
-rw-r--r--libbpkg/manifest.cxx30
-rw-r--r--libbpkg/manifest.hxx9
2 files changed, 12 insertions, 27 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.
diff --git a/libbpkg/manifest.hxx b/libbpkg/manifest.hxx
index fc6c332..59359b4 100644
--- a/libbpkg/manifest.hxx
+++ b/libbpkg/manifest.hxx
@@ -616,11 +616,12 @@ namespace bpkg
//
// 1. If scheme is git then git.
//
- // 2. If scheme is http(s), then check if path has the .git extension,
- // then git, otherwise pkg.
+ // 2. If path has the .git extension then git.
//
- // 3. If local (which will normally be without the .git extension), check
- // if directory contains the .git/ subdirectory then git, otherwise pkg.
+ // 3. If scheme is http(s) then pkg.
+ //
+ // 4. If local, check if directory contains the .git/ subdirectory then
+ // git, otherwise pkg.
//
// Can throw system_error in the later case.
//