summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-03-10 00:34:52 +0800
committerruki <[email protected]>2021-03-10 00:34:52 +0800
commitaeda97353dd23f22b7d7cda78eb3d10470177d55 (patch)
tree7b788fc63caa00c0ee62a0c435b4cfadc27c4e78
parent8b1b39ce7a9f342699c73aaede4b627ae151c31a (diff)
fix git checkout for requires
-rw-r--r--xmake/modules/devel/git/submodule/update.lua4
-rw-r--r--xmake/modules/private/action/require/impl/actions/download.lua8
2 files changed, 8 insertions, 4 deletions
diff --git a/xmake/modules/devel/git/submodule/update.lua b/xmake/modules/devel/git/submodule/update.lua
index 6256c673f..b75e391ca 100644
--- a/xmake/modules/devel/git/submodule/update.lua
+++ b/xmake/modules/devel/git/submodule/update.lua
@@ -30,8 +30,8 @@ import("lib.detect.find_tool")
--
-- import("devel.git.submodule")
--
--- submodule.update("master", {repodir = "/tmp/xmake", init = true, remote = true})
--- submodule.update("v1.0.1", {repodir = "/tmp/xmake", recursive = true, reference = "xxx", paths = "xxx"})
+-- submodule.update({repodir = "/tmp/xmake", init = true, remote = true})
+-- submodule.update({repodir = "/tmp/xmake", recursive = true, reference = "xxx", paths = "xxx"})
--
-- @endcode
--
diff --git a/xmake/modules/private/action/require/impl/actions/download.lua b/xmake/modules/private/action/require/impl/actions/download.lua
index 3d27f6736..93f8d3ddf 100644
--- a/xmake/modules/private/action/require/impl/actions/download.lua
+++ b/xmake/modules/private/action/require/impl/actions/download.lua
@@ -70,10 +70,14 @@ function _checkout(package, url, sourcedir, url_alias)
else
-- clone whole history and tags
- git.clone(url, {outputdir = packagedir, recursive = true})
+ git.clone(url, {outputdir = packagedir})
-- attempt to checkout the given version
- git.checkout(package:revision(url_alias) or package:tag() or package:version_str(), {repodir = packagedir})
+ local revision = package:revision(url_alias) or package:tag() or package:version_str()
+ git.checkout(revision, {repodir = packagedir})
+
+ -- update all submodules
+ git.submodule.update({init = true, recursive = true, repodir = packagedir})
end
-- move to source directory