---
lib/gitano/command.lua | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/lib/gitano/command.lua b/lib/gitano/command.lua
index 468b34b..4e82012 100644
--- a/lib/gitano/command.lua
+++ b/lib/gitano/command.lua
@@ -75,6 +75,41 @@ local function get_cmd(cmdname)
}
end
+-- Adding archive command here
+
+local function builtin_upload_archive_validate(config, repo, cmdline)
+ -- git-upload-archive repo
+ if #cmdline > 2 then
+ return false
+ end
+ cmdline[2] = repo:fs_path()
+ return true
+end
+
+local function builtin_upload_archive_prep(config, repo, cmdline, context)
+ if repo.is_nascent then
+ return "deny", "Repository " .. repo.name .. " does not
exist"
+ end
+ -- git-upload-archive is always a simple write operation
+ context.operation = "read"
+ return repo:run_lace(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()
+end
+
+assert(register_cmd("git-upload-archive", nil, nil,
+ builtin_upload_archive_validate,
+ builtin_upload_archive_prep,
+ builtin_upload_archive_run,
+ true, true))
+
+-- End of archive command
+
local builtin_help_short = "Ask for help"
local builtin_help_helptext = [[
usage: help [admin|command]
--
1.7.9.5