---
bin/gitano-smart-http.cgi.in | 16 +++++++++-------
lib/gitano/command.lua | 15 ++++++---------
lib/gitano/repocommand.lua | 7 ++-----
plugins/archive.lua | 8 +++-----
4 files changed, 20 insertions(+), 26 deletions(-)
diff --git a/bin/gitano-smart-http.cgi.in b/bin/gitano-smart-http.cgi.in
index 6f8fdee..31749ec 100755
--- a/bin/gitano-smart-http.cgi.in
+++ b/bin/gitano-smart-http.cgi.in
@@ -13,7 +13,6 @@
local gitano = require "gitano"
local gall = require "gall"
local luxio = require "luxio"
-local subprocess = require "luxio.subprocess"
local sio = require "luxio.simple"
-- @@GITANO_BIN_PATH
@@ -63,14 +62,17 @@ if request_method == "GET" or request_method ==
"POST" then
gitano.log.cap_level(gitano.log.level.INFO)
local transactionid = gitano.log.syslog.open()
- if cmdline and gitano.auth.is_authorized(user, "http", cmdline,
- os.getenv("GITANO_ROOT"),
- transactionid,
- start_log_level) then
- local proc = subprocess.spawn_simple({"git", "http-backend"})
+ local authorized, cmd, parsed_cmdline, config, env, repo
+ if cmdline then
+ authorized, cmd, parsed_cmdline, config, env, repo =
+ gitano.auth.is_authorized(user, "http", cmdline,
+ os.getenv("GITANO_ROOT"),
+ transactionid,
+ start_log_level)
+ if cmdline and authorized then
local exit_code
- _, exit_code = proc:wait()
+ _, exit_code = repo:git_command{"http-backend"}
if exit_code ~= 0 then
stdout:write("Status: 500 Internal Server Error\r\n\r\n")
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/plugins/archive.lua b/plugins/archive.lua
index e117201..026050b 100644
--- a/plugins/archive.lua
+++ b/plugins/archive.lua
@@ -1,5 +1,4 @@
local gitano = require "gitano"
-local sp = require "luxio.subprocess"
local function builtin_upload_archive_validate(config, repo, cmdline)
-- git-upload-archive repo
@@ -20,10 +19,9 @@ local function builtin_upload_archive_prep(config, repo, cmdline,
context)
end
local function builtin_upload_archive_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-archive", env=env}
+ for i = 2, #cmdline do cmdcopy[i] = cmdline[i] end
+ return repo:git_command(cmdcopy)
end
assert(gitano.command.register("git-upload-archive", nil, nil,
--
2.7.0