add ability to specifiy commit ref

This commit is contained in:
2024-11-19 12:36:55 -06:00
parent 30e7e05771
commit 25372aea36
3 changed files with 37 additions and 5 deletions

View File

@ -78,6 +78,7 @@ local function register(spec, overrides)
package.url = spec.url or package.url or ("https://github.com/" .. id .. ".git")
package.branch = spec.branch or package.branch
package.dir = base_dir .. package.name
package.commit = spec.commit
package.pin = overrides.pin or spec.pin or package.pin
package.enabled = not overrides.disable and not spec.disable and package.enabled
@ -493,7 +494,7 @@ local function sync(package, cb)
log_err(before)
cb(err)
else
proc.git_fetch(package.dir, "origin", package.branch or "HEAD", function(err, message)
local function continue(err, message)
if err then
log_err(message)
cb(err)
@ -519,7 +520,12 @@ local function sync(package, cb)
end
end)
end
end)
end
if package.commit then
proc.git_checkout(package.dir, package.branch, package.commit, continue)
else
proc.git_fetch(package.dir, "origin", package.branch or "HEAD", continue)
end
end
end)
else
@ -527,9 +533,21 @@ local function sync(package, cb)
if err then
logger:log("error", string.format("failed to install %s; reason: %s", package.id, message))
else
package.exists = true
mark_reconfigure(package)
logger:log("install", string.format("installed %s", package.id))
if package.commit then
proc.git_checkout(package.dir, package.branch, package.commit, function(err, message)
if err then
logger:log("error", string.format("failed to checkout %s; reason: %s", package.id, message))
else
package.exists = true
mark_reconfigure(package)
logger:log("install", string.format("installed %s", package.id))
end
end)
else
package.exists = true
mark_reconfigure(package)
logger:log("install", string.format("installed %s", package.id))
end
end
cb(err)