diff options
| author | ruki <[email protected]> | 2025-11-11 00:24:47 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-11-11 00:24:47 +0800 |
| commit | 2d4595d2d0ac368f4606e30ad31489f6be8454d6 (patch) | |
| tree | c287d3bd12005ab1f5c69e17608554c8d30a5dd5 | |
| parent | 72f441c0a6f0ac864e7b4b0c06e8523434e4b599 (diff) | |
fix sparse checkout #7007
| -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 |
