f2b3e4fe5b454e00b694a2b5608ac866d42fa765
- Author
- Ayman Bagabas <ayman.bagabas@gmail.com>
- Committer
- Ayman Bagabas <ayman.bagabas@gmail.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/.github/dependabot.yml b/.github/dependabot.yml
2index cbc9aa410f7d241d584e0628a4efa736089b8e3d..63ed01f2e4df6d7351602088a430cf36e5891a42 100644
3--- a/.github/dependabot.yml
4+++ b/.github/dependabot.yml
5@@ -37,5 +37,5 @@ updates:
6 labels:
7 - "dependencies"
8 commit-message:
9- prefix: "feat"
10+ prefix: "chore"
11 include: "scope"
12diff --git a/.golangci.yml b/.golangci.yml
13index 90c5c08bd06577c7f6b772d28dc92970918d467d..be61d89ba130fbb50371386e01017eab20854930 100644
14--- a/.golangci.yml
15+++ b/.golangci.yml
16@@ -1,17 +1,6 @@
17+version: "2"
18 run:
19 tests: false
20-
21-issues:
22- include:
23- - EXC0001
24- - EXC0005
25- - EXC0011
26- - EXC0012
27- - EXC0013
28-
29- max-issues-per-linter: 0
30- max-same-issues: 0
31-
32 linters:
33 enable:
34 - bodyclose
35@@ -19,8 +8,6 @@ linters:
36 - goconst
37 - godot
38 - godox
39- - gofumpt
40- - goimports
41 - gomoddirectives
42 - goprintffuncname
43 - gosec
44@@ -39,3 +26,16 @@ linters:
45 - unparam
46 - whitespace
47 - wrapcheck
48+ exclusions:
49+ generated: lax
50+ presets:
51+ - common-false-positives
52+issues:
53+ max-issues-per-linter: 0
54+ max-same-issues: 0
55+formatters:
56+ enable:
57+ - gofumpt
58+ - goimports
59+ exclusions:
60+ generated: lax
61diff --git a/README.md b/README.md
62index cbefcd78454a8727921dd3365f298e54026f3724..af2aebe40808cbf0d4c1d530059649907d72ae51 100644
63--- a/README.md
64+++ b/README.md
65@@ -771,6 +771,12 @@ If you’re curious about the inner workings of this problem have a look at:
66 - https://go-review.googlesource.com/c/crypto/+/220037
67 - https://github.com/golang/crypto/pull/197
68
69+## Contributing
70+
71+See [contributing][contribute].
72+
73+[contribute]: https://github.com/charmbracelet/soft-serve/contribute
74+
75 ## Feedback
76
77 We’d love to hear your thoughts on this project. Feel free to drop us a note!
78diff --git a/go.mod b/go.mod
79index ffedb3508bb86d86c867ba2fa1be7c6ec0bdaf05..6e98a1f7f106384c6caf4b01d4abe700fd8c3486 100644
80--- a/go.mod
81+++ b/go.mod
82@@ -4,15 +4,17 @@ go 1.23.0
83
84 require (
85 github.com/dustin/go-humanize v1.0.1
86- github.com/go-git/go-git/v5 v5.14.0
87+ github.com/go-git/go-git/v5 v5.16.2
88 github.com/matryer/is v1.4.1
89 github.com/muesli/reflow v0.3.0
90- github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3
91 )
92
93 require (
94- github.com/alecthomas/chroma/v2 v2.15.0
95+ github.com/alecthomas/chroma/v2 v2.18.0
96 github.com/aymanbagabas/bubblezone/v2 v2.0.0-20250319214444-bb232f16d5e3
97+)
98+
99+require (
100 github.com/aymanbagabas/git-module v1.8.4-0.20231101154130-8d27204ac6d2
101 github.com/caarlos0/duration v0.0.0-20240108180406-5d492514f3c7
102 github.com/caarlos0/env/v11 v11.2.2
103@@ -27,7 +29,7 @@ require (
104 github.com/charmbracelet/ssh v0.0.0-20250128164007-98fd5ae11894
105 github.com/charmbracelet/wish/v2 v2.0.0-20250505151211-5996fc7c1f33
106 github.com/charmbracelet/x/ansi v0.9.3
107- github.com/go-jose/go-jose/v3 v3.0.3
108+ github.com/go-jose/go-jose/v3 v3.0.4
109 github.com/gobwas/glob v0.2.3
110 github.com/golang-jwt/jwt/v5 v5.2.2
111 github.com/google/go-querystring v1.1.0
112@@ -39,15 +41,16 @@ require (
113 github.com/lib/pq v1.10.9
114 github.com/muesli/mango-cobra v1.2.0
115 github.com/muesli/roff v0.1.0
116- github.com/prometheus/client_golang v1.21.1
117+ github.com/prometheus/client_golang v1.22.0
118 github.com/robfig/cron/v3 v3.0.1
119 github.com/rogpeppe/go-internal v1.14.1
120+ github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3
121 github.com/spf13/cobra v1.9.1
122 go.uber.org/automaxprocs v1.6.0
123- golang.org/x/crypto v0.37.0
124- golang.org/x/sync v0.13.0
125+ golang.org/x/crypto v0.39.0
126+ golang.org/x/sync v0.15.0
127 gopkg.in/yaml.v3 v3.0.1
128- modernc.org/sqlite v1.36.1
129+ modernc.org/sqlite v1.38.0
130 )
131
132 require (
133@@ -65,14 +68,13 @@ require (
134 github.com/charmbracelet/x/termios v0.1.0 // indirect
135 github.com/charmbracelet/x/windows v0.2.1 // indirect
136 github.com/creack/pty v1.1.21 // indirect
137- github.com/dlclark/regexp2 v1.11.4 // indirect
138+ github.com/dlclark/regexp2 v1.11.5 // indirect
139 github.com/felixge/httpsnoop v1.0.4 // indirect
140 github.com/git-lfs/pktline v0.0.0-20230103162542-ca444d533ef1 // indirect
141 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
142 github.com/go-logfmt/logfmt v0.6.0 // indirect
143 github.com/gorilla/css v1.0.1 // indirect
144 github.com/inconshreveable/mousetrap v1.1.0 // indirect
145- github.com/klauspost/compress v1.17.11 // indirect
146 github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
147 github.com/mattn/go-isatty v0.0.20 // indirect
148 github.com/mattn/go-runewidth v0.0.16 // indirect
149@@ -93,14 +95,14 @@ require (
150 github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
151 github.com/yuin/goldmark v1.7.8 // indirect
152 github.com/yuin/goldmark-emoji v1.0.5 // indirect
153- golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
154- golang.org/x/net v0.39.0 // indirect
155- golang.org/x/sys v0.32.0 // indirect
156- golang.org/x/text v0.24.0 // indirect
157- golang.org/x/tools v0.26.0 // indirect
158- google.golang.org/protobuf v1.36.1 // indirect
159+ golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 // indirect
160+ golang.org/x/net v0.40.0 // indirect
161+ golang.org/x/sys v0.33.0 // indirect
162+ golang.org/x/text v0.26.0 // indirect
163+ golang.org/x/tools v0.33.0 // indirect
164+ google.golang.org/protobuf v1.36.5 // indirect
165 gopkg.in/warnings.v0 v0.1.2 // indirect
166- modernc.org/libc v1.61.13 // indirect
167+ modernc.org/libc v1.65.10 // indirect
168 modernc.org/mathutil v1.7.1 // indirect
169- modernc.org/memory v1.8.2 // indirect
170+ modernc.org/memory v1.11.0 // indirect
171 )
172diff --git a/go.sum b/go.sum
173index b6edee5c41b38c7976a67ca12114c79883d490db..f72261d99f5445725e5341be44c6be5194f65de7 100644
174--- a/go.sum
175+++ b/go.sum
176@@ -2,8 +2,8 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
177 filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
178 github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
179 github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
180-github.com/alecthomas/chroma/v2 v2.15.0 h1:LxXTQHFoYrstG2nnV9y2X5O94sOBzf0CIUpSTbpxvMc=
181-github.com/alecthomas/chroma/v2 v2.15.0/go.mod h1:gUhVLrPDXPtp/f+L1jo9xepo9gL4eLwRuGAunSZMkio=
182+github.com/alecthomas/chroma/v2 v2.18.0 h1:6h53Q4hW83SuF+jcsp7CVhLsMozzvQvO8HBbKQW+gn4=
183+github.com/alecthomas/chroma/v2 v2.18.0/go.mod h1:RVX6AvYm4VfYe/zsk7mjHueLDZor3aWCNE14TFlepBk=
184 github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
185 github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
186 github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
187@@ -44,8 +44,6 @@ github.com/charmbracelet/log/v2 v2.0.0-20250226163916-c379e29ff706 h1:WkwO6Ks3mS
188 github.com/charmbracelet/log/v2 v2.0.0-20250226163916-c379e29ff706/go.mod h1:mjJGp00cxcfvD5xdCa+bso251Jt4owrQvuimJtVmEmM=
189 github.com/charmbracelet/ssh v0.0.0-20250128164007-98fd5ae11894 h1:Ffon9TbltLGBsT6XE//YvNuu4OAaThXioqalhH11xEw=
190 github.com/charmbracelet/ssh v0.0.0-20250128164007-98fd5ae11894/go.mod h1:hg+I6gvlMl16nS9ZzQNgBIrrCasGwEw0QiLsDcP01Ko=
191-github.com/charmbracelet/wish/v2 v2.0.0-20250328000358-93bac50f7f6a h1:K+X0iNqDhVbjbPsXIh/HFfa5rBbhaH0aQQGzfMhGh8Q=
192-github.com/charmbracelet/wish/v2 v2.0.0-20250328000358-93bac50f7f6a/go.mod h1:sa+xyPJGyNn2g9WTIMGVhwHniS92FWjcfPPYROIq80c=
193 github.com/charmbracelet/wish/v2 v2.0.0-20250505151211-5996fc7c1f33 h1:/TlxP6Lw9Z7NJCQ7TSbuvfO3/AL0UXGDPwH1zO9pV8U=
194 github.com/charmbracelet/wish/v2 v2.0.0-20250505151211-5996fc7c1f33/go.mod h1:Tssk2d4IKqV3tNiPgwrYSvJMQu+nN9J4JlGmYaXpiR4=
195 github.com/charmbracelet/x/ansi v0.9.3 h1:BXt5DHS/MKF+LjuK4huWrC6NCvHtexww7dMayh6GXd0=
196@@ -74,8 +72,8 @@ github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr
197 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
198 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
199 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
200-github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo=
201-github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
202+github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ=
203+github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
204 github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
205 github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
206 github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
207@@ -84,10 +82,10 @@ github.com/git-lfs/pktline v0.0.0-20230103162542-ca444d533ef1 h1:mtDjlmloH7ytdbl
208 github.com/git-lfs/pktline v0.0.0-20230103162542-ca444d533ef1/go.mod h1:fenKRzpXDjNpsIBhuhUzvjCKlDjKam0boRAenTE0Q6A=
209 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
210 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
211-github.com/go-git/go-git/v5 v5.14.0 h1:/MD3lCrGjCen5WfEAzKg00MJJffKhC8gzS80ycmCi60=
212-github.com/go-git/go-git/v5 v5.14.0/go.mod h1:Z5Xhoia5PcWA3NF8vRLURn9E5FRhSl7dGj9ItW3Wk5k=
213-github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k=
214-github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
215+github.com/go-git/go-git/v5 v5.16.2 h1:fT6ZIOjE5iEnkzKyxTHK1W4HGAsPhqEqiSAssSO77hM=
216+github.com/go-git/go-git/v5 v5.16.2/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8=
217+github.com/go-jose/go-jose/v3 v3.0.4 h1:Wp5HA7bLQcKnf6YYao/4kpRpVMp/yf6+pJKV8WFSaNY=
218+github.com/go-jose/go-jose/v3 v3.0.4/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
219 github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
220 github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
221 github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
222@@ -102,8 +100,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
223 github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
224 github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
225 github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
226-github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlGkMFWCjLFlqqEZjEmObmhUy6Vo=
227-github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw=
228+github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs=
229+github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
230 github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
231 github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
232 github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8=
233@@ -120,8 +118,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2
234 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
235 github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o=
236 github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY=
237-github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
238-github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
239+github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
240+github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
241 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
242 github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
243 github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
244@@ -171,8 +169,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
245 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
246 github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
247 github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
248-github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk=
249-github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg=
250+github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
251+github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
252 github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
253 github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
254 github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io=
255@@ -222,27 +220,27 @@ go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwE
256 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
257 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
258 golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
259-golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
260-golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
261-golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
262-golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
263+golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM=
264+golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U=
265+golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM=
266+golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8=
267 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
268 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
269-golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
270-golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
271+golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w=
272+golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
273 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
274 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
275 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
276diff --git a/pkg/daemon/daemon.go b/pkg/daemon/daemon.go
277index 6be386fff58b431ab27bd69a2701475af2d16c79..d202b335d16bfdbd2c9e2241e3ba8d490a3c5dea 100644
278--- a/pkg/daemon/daemon.go
279+++ b/pkg/daemon/daemon.go
280@@ -3,6 +3,7 @@ package daemon
281 import (
282 "bytes"
283 "context"
284+ "errors"
285 "fmt"
286 "net"
287 "path/filepath"
288@@ -43,16 +44,17 @@ var ErrServerClosed = fmt.Errorf("git: %w", net.ErrClosed)
289
290 // GitDaemon represents a Git daemon.
291 type GitDaemon struct {
292- ctx context.Context
293- addr string
294- finished chan struct{}
295- conns connections
296- cfg *config.Config
297- be *backend.Backend
298- wg sync.WaitGroup
299- once sync.Once
300- logger *log.Logger
301- done atomic.Bool // indicates if the server has been closed
302+ ctx context.Context
303+ addr string
304+ finished chan struct{}
305+ conns connections
306+ cfg *config.Config
307+ be *backend.Backend
308+ wg sync.WaitGroup
309+ once sync.Once
310+ logger *log.Logger
311+ done atomic.Bool // indicates if the server has been closed
312+ listeners []net.Listener
313 }
314
315 // NewDaemon returns a new Git daemon.
316@@ -91,7 +93,7 @@ func (d *GitDaemon) Serve(listener net.Listener) error {
317
318 d.wg.Add(1)
319 defer d.wg.Done()
320- defer listener.Close() //nolint:errcheck
321+ d.listeners = append(d.listeners, listener)
322
323 var tempDelay time.Duration
324 for {
325diff --git a/pkg/web/git.go b/pkg/web/git.go
326index df307d41f0d5e5b367362549ff8608efd6f54b55..b01f3aa519efc87d0081aac6e417832f58cd388a 100644
327--- a/pkg/web/git.go
328+++ b/pkg/web/git.go
329@@ -124,7 +124,7 @@ var gitRoutes = []GitRoute{
330 {
331 method: []string{http.MethodPost},
332 handler: serviceRpc,
333- path: "/{service:(?:git-upload-pack|git-receive-pack)$}",
334+ path: "/{service:(?:git-upload-archive|git-upload-pack|git-receive-pack)$}",
335 },
336 {
337 method: []string{http.MethodGet},
338@@ -274,7 +274,7 @@ func withAccess(next http.Handler) http.HandlerFunc {
339 }
340
341 fallthrough
342- case service == git.UploadPackService:
343+ case service == git.UploadPackService || service == git.UploadArchiveService:
344 if repo == nil {
345 // If the repo doesn't exist, return 404
346 renderNotFound(w, r)
347@@ -394,7 +394,11 @@ func serviceRpc(w http.ResponseWriter, r *http.Request) {
348 cmd := git.ServiceCommand{
349 Stdout: &stdout,
350 Dir: dir,
351- Args: []string{"--stateless-rpc"},
352+ }
353+
354+ switch service {
355+ case git.UploadPackService, git.ReceivePackService:
356+ cmd.Args = append(cmd.Args, "--stateless-rpc")
357 }
358
359 user := proto.UserFromContext(ctx)