#+TITLE: Shackle Shell A shell intended for restricted access on a version control repo server. This is intended as a replacement for [[https://git-scm.com/docs/git-shell][Git Shell]], but with the additional commands I want to create new repos, rearrange things, etc built in. It will also limit access to only git repos within the file hierarchy I use. Additionally, this may support passthrough for other version control system like Pijul. * Roadmap ** MVP - [X] interactive command prompt - [X] non-interactive commands can be run with -c - [X] exit command - [X] git init of private repo - [X] responds to unknown commands - [X] Isolation of workdir between tests - [X] git fetch with git upload-pack - [X] git push with git receive-pack - [X] proper shell argument lexing, with quote stuff - [X] history (only within same session) - [X] don't quit interactive shell sessions if there's an error - [X] help command - [X] restrict repos to only acceptable paths - [X] clone / pull - [X] push - [X] git init of shared repos - [X] create the shared repo in the right place - [X] use the right file permissions and config - [X] don't allow this to be a group the user isn't in - [X] allow pull and push from shared repos - [X] listing of repos - [X] set repo descriptions - [X] init new repo - [X] change an existing repo - [X] Change ~git-init~ name to just be ~init~. Later, the ~git~ part will be an option which defaults to git. - [ ] set the main branch of a repo - [ ] help docs on all the commands ** Post-MVP - [ ] functions correctly when the git path isn't created yet - [ ] git archive with git upload-archive - [ ] git config management around protected branches - [ ] move a repo to a different group - [ ] housekeeping git tasks (git fsck, git gc) - [ ] pijul fetch and pijul push - [ ] pijul support on other commands - [ ] project website