diff options
| -rw-r--r-- | xmake/modules/private/action/require/impl/actions/download.lua | 11 |
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 |
