1# vi: set ft=conf
2
3# convert crlf to lf on windows
4[windows] dos2unix readme.md branch_list.1.txt info.txt
5
6# start soft serve
7exec soft serve &
8# wait for SSH server to start
9ensureserverrunning SSH_PORT
10
11# create a repo
12soft repo create repo1 -d 'description' -H -p -n 'repo11'
13stderr 'Created repository repo1.*'
14stdout ssh://localhost:$SSH_PORT/repo1.git
15soft repo hidden repo1
16stdout true
17soft repo private repo1
18stdout true
19! exists $DATA_PATH/repos/repo1.git/git-daemon-export-ok
20soft repo description repo1
21stdout 'description'
22readfile $DATA_PATH/repos/repo1.git/description 'description'
23soft repo project-name repo1
24stdout 'repo1'
25
26# clone repo
27git clone ssh://localhost:$SSH_PORT/repo1 repo1
28
29# create some files, commits, tags...
30mkfile ./repo1/README.md '# Project\nfoo'
31git -C repo1 add -A
32git -C repo1 commit -m 'first'
33git -C repo1 tag v0.1.0
34git -C repo1 push origin HEAD
35git -C repo1 push origin HEAD --tags
36
37# create lfs files, use ssh git-lfs-transfer
38git -C repo1 lfs install --local
39git -C repo1 lfs track '*.png'
40git -C repo1 lfs track '*.mp4'
41mkfile ./repo1/foo.png 'foo'
42mkfile ./repo1/bar.png 'bar'
43git -C repo1 add -A
44git -C repo1 commit -m 'lfs'
45git -C repo1 push origin HEAD
46
47# info
48soft repo info repo1
49cmp stdout info.txt
50
51# list tags
52soft repo tag list repo1
53stdout 'v0.1.0'
54
55# delete tag
56soft repo tag delete repo1 v0.1.0
57soft repo tag list repo1
58! stdout .
59
60# print tree
61soft repo tree repo1
62cp stdout tree.txt
63grep '.gitattributes' tree.txt
64grep 'README.md' tree.txt
65grep 'foo.png' tree.txt
66grep 'bar.png' tree.txt
67
68# cat blob
69soft repo blob repo1 README.md
70cmp stdout readme.md
71
72# cat blob that doesn't exist
73! soft repo blob repo1 README.txt
74! stdout .
75stderr '.*revision does not exist.*'
76
77# check main branch
78soft repo branch default repo1
79stdout master
80
81# create a new branch
82git -C repo1 checkout -b branch1
83git -C repo1 push origin branch1
84soft repo branch list repo1
85cmp stdout branch_list.1.txt
86
87# change default branch
88soft repo branch default repo1 branch1
89soft repo branch default repo1
90stdout branch1
91
92# cannot delete main branch
93! soft repo branch delete repo1 branch1
94
95# delete other branch
96soft repo branch delete repo1 master
97soft repo branch list repo1
98stdout branch1
99
100# create a new user
101soft user create bar --key "$USER1_AUTHORIZED_KEY"
102
103# user create a repo
104usoft repo create repo2 -d 'description' -H -p -n 'repo2'
105stderr 'Created repository repo2.*'
106stdout ssh://localhost:$SSH_PORT/repo2.git
107usoft repo hidden repo2
108stdout true
109usoft repo private repo2
110stdout true
111! exists $DATA_PATH/repos/repo2.git/git-daemon-export-ok
112usoft repo description repo2
113stdout 'description'
114readfile $DATA_PATH/repos/repo2.git/description 'description'
115usoft repo project-name repo2
116stdout 'repo2'
117
118# user delete a repo
119usoft repo delete repo2
120! exists $DATA_PATH/repos/repo2.git
121
122# stop the server
123[windows] stopserver
124[windows] ! stderr .
125
126
127-- readme.md --
128# Project\nfoo
129-- branch_list.1.txt --
130branch1
131master
132-- info.txt --
133Project Name: repo11
134Repository: repo1
135Description: description
136Private: true
137Hidden: true
138Mirror: false
139Owner: admin
140Default Branch: master
141Branches:
142 - master
143Tags:
144 - v0.1.0