summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xmake/modules/private/action/require/impl/actions/download.lua11
1 files changed, 6 insertions, 5 deletions
diff --git a/xmake/modules/private/action/require/impl/actions/download.lua b/xmake/modules/private/action/require/impl/actions/download.lua
index df47673a3..280090fde 100644
--- a/xmake/modules/private/action/require/impl/actions/download.lua
+++ b/xmake/modules/private/action/require/impl/actions/download.lua
@@ -108,7 +108,7 @@ function _checkout(package, url, sourcedir, opt)
branch = nil
end
- -- only shallow clone this branch
+ -- only shallow clone this branch
local clone_submodules = opt.url_submodules ~= false
git.clone(url, {depth = 1, recursive = clone_submodules, shallow_submodules = clone_submodules, longpaths = longpaths, branch = branch, outputdir = packagedir})
@@ -130,8 +130,9 @@ function _checkout(package, url, sourcedir, opt)
-- only shallow clone this tag
-- @see https://github.com/xmake-io/xmake/issues/4151
- if tag and git.clone.can_clone_tag() then
- local clone_submodules = opt.url_submodules ~= false
+ local sparse_includes = opt.url_includes
+ local clone_submodules = opt.url_submodules ~= false
+ if tag and git.clone.can_clone_tag() and not sparse_includes then
git.clone(url, {depth = 1, recursive = clone_submodules, shallow_submodules = clone_submodules, longpaths = longpaths, branch = tag, outputdir = packagedir})
else
@@ -140,10 +141,10 @@ function _checkout(package, url, sourcedir, opt)
git.clone(url, {treeless = true, checkout = false, longpaths = longpaths, outputdir = packagedir})
-- attempt to checkout the given version
- git.checkout(revision, {repodir = packagedir, includes = opt.url_includes})
+ git.checkout(revision, {repodir = packagedir, includes = sparse_includes})
-- update all submodules
- if os.isfile(path.join(packagedir, ".gitmodules")) and opt.url_submodules ~= false then
+ if os.isfile(path.join(packagedir, ".gitmodules")) and clone_submodules then
git.submodule.update({init = true, recursive = true, longpaths = longpaths, repodir = packagedir})
end
end