diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2016-02-02 10:00:15 +0000 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2016-02-02 10:00:15 +0000 |
commit | a55961e0e132d6e315a51a24c45d7f604d78957f (patch) | |
tree | 2f3b011a7641ab190a61de5092d5d4720d6be883 /lib | |
parent | 47cf1173f1701ba37d8549bf34d9258e3d2b820b (diff) | |
parent | 06f1e0f0569565d3616716a6e1ade8a0e184c18e (diff) | |
download | gitano-a55961e0e132d6e315a51a24c45d7f604d78957f.tar.gz |
Merge remote-tracking branch 'rmaw/config'
Reviewed-By: Daniel Silverstone <dsilvers@digital-scurf.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitano/command.lua | 15 | ||||
-rw-r--r-- | lib/gitano/repocommand.lua | 7 | ||||
-rw-r--r-- | lib/gitano/repository.lua | 24 |
3 files changed, 32 insertions, 14 deletions
diff --git a/lib/gitano/command.lua b/lib/gitano/command.lua index b2e04dd..b46613c 100644 --- a/lib/gitano/command.lua +++ b/lib/gitano/command.lua @@ -8,7 +8,6 @@ local log = require 'gitano.log' local util = require 'gitano.util' local repository = require 'gitano.repository' -local sp = require "luxio.subprocess" local sio = require "luxio.simple" local cmds = {} @@ -190,10 +189,9 @@ local function builtin_upload_pack_prep(config, repo, cmdline, context) end local function builtin_upload_pack_run(config, repo, cmdline, env) - local cmdcopy = {env=env} - for i = 1, #cmdline do cmdcopy[i] = cmdline[i] end - local proc = sp.spawn(cmdcopy) - return proc:wait() + local cmdcopy = {"upload-pack", env=env} + for i = 2, #cmdline do cmdcopy[i] = cmdline[i] end + return repo:git_command(cmdcopy) end assert(register_cmd("git-upload-pack", nil, nil, @@ -221,10 +219,9 @@ local function builtin_receive_pack_prep(config, repo, cmdline, context) end local function builtin_receive_pack_run(config, repo, cmdline, env) - local cmdcopy = {env=env} - for i = 1, #cmdline do cmdcopy[i] = cmdline[i] end - local proc = sp.spawn(cmdcopy) - local how, why = proc:wait() + local cmdcopy = {"receive-pack", env=env} + for i = 2, #cmdline do cmdcopy[i] = cmdline[i] end + local how, why = repo:git_command(cmdcopy) -- Check that HEAD is now resolvable in the repo if how == "exit" and why == 0 and not repo.git:get("HEAD") then log.warn("") diff --git a/lib/gitano/repocommand.lua b/lib/gitano/repocommand.lua index 4d70a8b..cc81146 100644 --- a/lib/gitano/repocommand.lua +++ b/lib/gitano/repocommand.lua @@ -8,8 +8,6 @@ local log = require 'gitano.log' local util = require 'gitano.util' local repository = require 'gitano.repository' -local sp = require "luxio.subprocess" - local builtin_gc_short = "Invoke git gc on your repository" local builtin_gc_helptext = [[ usage: gc repo [options] @@ -62,11 +60,10 @@ local function builtin_simple_validate(config, repo, cmdline) end local function builtin_simple_run(config, repo, cmdline, env) - local cmdcopy = {env=util.deep_copy(env), "git", cmdline[1]} + local cmdcopy = {cmdline[1], env=util.deep_copy(env)} cmdcopy.env.GIT_DIR=repo:fs_path() for i = 3, #cmdline do cmdcopy[#cmdcopy+1] = cmdline[i] end - local proc = sp.spawn(cmdcopy) - return proc:wait() + return repo:git_command(cmdcopy) end local function register_repocommand(register_cmd) diff --git a/lib/gitano/repository.lua b/lib/gitano/repository.lua index 3ee85e1..e5f7927 100644 --- a/lib/gitano/repository.lua +++ b/lib/gitano/repository.lua @@ -722,6 +722,30 @@ function repo_method:save_admin(reason, author, committer) return self:run_checks() end +local _git_booleans = { + ["true"] = true, yes = true, on = true, + ["false"] = false, no = false, off = false, +} +local function _git_config_bool(v) + if type(v) == "string" then + return _git_booleans[v:lower()] + elseif type(v) == "boolean" then + return v + end + -- Intentional fall-through to return nil +end + +function repo_method:git_command(t) + local t_copy = util.deep_copy(t) + table.insert(t_copy, 1, "git") + if _git_config_bool(self:conf_get "git.receive.shallowUpdate") then + table.insert(t_copy, 2, "-c") + table.insert(t_copy, 3, "receive.shallowUpdate=true") + end + local proc = sp.spawn(t_copy) + return proc:wait() +end + local repo_meta = { __index = repo_method, } |