summaryrefslogtreecommitdiff
path: root/readme.org
blob: 3674200d8e7af5bf8adde6cad3aefe4b882ec522 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#+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
- [ ] restrict repos to only acceptable paths
  - [ ] clone / pull
  - [ ] push
- [ ] git init of shared repos
- [ ] listing of repos
- [ ] set repo descriptions
- [ ] set the main branch of a repo
- [ ] help docs on all the commands

** Post-MVP

- [ ] 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