summaryrefslogtreecommitdiff
path: root/readme.org
blob: df2bb8247cb87cf573b5f4018b83fd3bb0bfd8c5 (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
48
49
50
51
52
53
54
55
56
#+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
- [ ] set repo descriptions
  - [ ] init new repo
  - [ ] change an existing repo
- [ ] set the main branch of a repo
- [ ] Change ~git-init~ name to just be ~init~, with the ~git~ part being a VCS
  option.
- [ ] 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