From 4112e572aadbbc552749398010257be3a3ba802b Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Fri, 14 Aug 2015 13:09:57 +0200 Subject: Add a restore command to the SSH interface Implement a new command that can be used to restore deleted package bases without having to push a new commit. Signed-off-by: Lukas Fleischer --- git-interface/git-serve.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'git-interface/git-serve.py') diff --git a/git-interface/git-serve.py b/git-interface/git-serve.py index 8316cf7d..45c9a01b 100755 --- a/git-interface/git-serve.py +++ b/git-interface/git-serve.py @@ -19,6 +19,7 @@ aur_db_socket = config.get('database', 'socket') repo_path = config.get('serve', 'repo-path') repo_regex = config.get('serve', 'repo-regex') git_shell_cmd = config.get('serve', 'git-shell-cmd') +git_update_cmd = config.get('serve', 'git-update-cmd') ssh_cmdline = config.get('serve', 'ssh-cmdline') enable_maintenance = config.getboolean('options', 'enable-maintenance') @@ -152,10 +153,28 @@ elif action == 'setup-repo': if len(cmdargv) > 2: die_with_help("{:s}: too many arguments".format(action)) create_pkgbase(cmdargv[1], user) +elif action == 'restore': + if len(cmdargv) < 2: + die_with_help("{:s}: missing repository name".format(action)) + if len(cmdargv) > 2: + die_with_help("{:s}: too many arguments".format(action)) + + pkgbase = cmdargv[1] + if not re.match(repo_regex, pkgbase): + die('{:s}: invalid repository name: {:s}'.format(action, pkgbase)) + + if pkgbase_exists(pkgbase): + die('{:s}: package base exists: {:s}'.format(action, pkgbase)) + create_pkgbase(pkgbase, user) + + os.environ["AUR_USER"] = user + os.environ["AUR_PKGBASE"] = pkgbase + os.execl(git_update_cmd, git_update_cmd, 'restore') elif action == 'help': die("Commands:\n" + " help Show this help message and exit.\n" + " list-repos List all your repositories.\n" + + " restore Restore a deleted package base.\n" + " setup-repo Create an empty repository.\n" + " git-receive-pack Internal command used with Git.\n" + " git-upload-pack Internal command used with Git.") -- cgit v1.2.3-24-g4f1b