summaryrefslogtreecommitdiff
path: root/xmake/modules
diff options
context:
space:
mode:
authorruki <[email protected]>2022-04-14 00:37:13 +0800
committerruki <[email protected]>2022-04-14 00:37:13 +0800
commit12652bfd524697241b893d4a4e1672ecc3608f2c (patch)
tree6b0aa0ba694723e1bb99b39830a7c8969c71f2a1 /xmake/modules
parenta39818c953e11781d2305e2ad3afe5b551c15eec (diff)
support git commit as require version
Diffstat (limited to 'xmake/modules')
-rw-r--r--xmake/modules/private/action/require/impl/actions/download.lua2
-rw-r--r--xmake/modules/private/action/require/impl/package.lua6
2 files changed, 6 insertions, 2 deletions
diff --git a/xmake/modules/private/action/require/impl/actions/download.lua b/xmake/modules/private/action/require/impl/actions/download.lua
index ad0e7bc37..2275c96f7 100644
--- a/xmake/modules/private/action/require/impl/actions/download.lua
+++ b/xmake/modules/private/action/require/impl/actions/download.lua
@@ -79,7 +79,7 @@ function _checkout(package, url, sourcedir, url_alias)
git.clone(url, {longpaths = longpaths, outputdir = packagedir})
-- attempt to checkout the given version
- local revision = package:revision(url_alias) or package:tag() or package:version_str()
+ local revision = package:revision(url_alias) or package:tag() or package:commit() or package:version_str()
git.checkout(revision, {repodir = packagedir})
-- update all submodules
diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua
index b0fe3399c..848ad4b8f 100644
--- a/xmake/modules/private/action/require/impl/package.lua
+++ b/xmake/modules/private/action/require/impl/package.lua
@@ -361,7 +361,11 @@ function _select_package_version(package, requireinfo, locked_requireinfo)
version, source = try { function () return semver.select(require_version, package:versions()) end }
end
if not version and has_giturl and not semver.is_valid(require_version) then -- select branch?
- version, source = require_version ~= "latest" and require_version or "master", "branch"
+ if require_version and #require_version == 40 and require_version:match("%w+") then
+ version, source = require_version, "commit"
+ else
+ version, source = require_version ~= "latest" and require_version or "master", "branch"
+ end
end
-- local source package? we use a phony version
if not version and require_version == "latest" and #package:urls() == 0 then