GitRoot
Craft your forge, Build your project, Grow your community freely
1---
2target: main
3status: merge
4reviewers: []
5---
6
7# Test GitRoot on GitRoot
8
9Use Hop plugin to test gitroot on gitroot.dev
10
11---
12
13Please review changes with:
14
15```shell
16git fetch origin make_hop_working
17git checkout make_hop_working
18git diff origin/HEAD..HEAD
19```
20
21Make your changes about the code inside the code directly (remarks, questions can be made in the form of comments). General remarks on the why can be made here. When done commit and push directly on this branch. Graft plugin will make the diff and display it here.
22
23When then changes are ready to be merged, change the status from 'status: review' to 'status: merge'.
24
25---
26
27## Push 1 commit
28
29### :green_heart: make hop working
30
31(9740cca66ea4768bbce05373cd9b8dee27176c30)
32
33- +- [.gitroot/users.yml](../.gitroot/users.yml)
34
35```diff
36--- a/.gitroot/users.yml
37+++ b/.gitroot/users.yml
38@@ -36,6 +36,7 @@
39 - name: ladybugDeleteBreakLine
40 - name: apexLineAndBetterDiff
41 - name: startBlog
42+ - name: make_hop_working
43 users:
44 - pseudo: GitRoot
45 avatar: ""
46@@ -130,3 +131,13 @@
47 ssh:
48 - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHk+AMq9/FbuwoJXJ1xoClIOtucWwY3+KX0bcnwXMVNm
49 - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRvLg59zboyF8SzGlGhAXnMUvLUfXzsdddxVp1LvK0TAIwvw/4gvFXUrcNihYLuBl86MYam8osFT/nEddjs5eGve1rNGvtHN9yyKXfjZvuZ2V5KQLEW4k6LEEypFWrpGlKdSMdZoHYSv2gqqSVrvQkhBD1QaIb+xuEG1w3aC1E/DbZxMPoFa+CFRz0oPMnKGaimCK/sV0a7aPYCEC9lJ97gfA1AUlbzIq8GbD/jKWW4+dIzxkmHeAqlwVygn4dhgI5KHTjA0U5b4RcG1k0BpMxhDtQR53tDWlWydgoKxJUGVRx1J+dBuDcb1NB/JttLovU2usX+NQNh1+lcJ1klKK3
50+make_hop_working:
51+ branches:
52+ - name: make_hop_working
53+ users:
54+ - pseudo: ""
55+ avatar: ""
56+ emails:
57+ - ""
58+ ssh:
59+ - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHk+AMq9/FbuwoJXJ1xoClIOtucWwY3+KX0bcnwXMVNm
60```
61
62- +- [app/plugins/apex/branch_test.go](../app/plugins/apex/branch_test.go)
63
64```diff
65--- a/app/plugins/apex/branch_test.go
66+++ b/app/plugins/apex/branch_test.go
67@@ -15,17 +15,17 @@
68 "gitroot.dev/libs/golang/plugin/test"
69 )
70
71-var firstRender = `<li data-hash="aaaa" data-parent-hash="0000000000000000000000000000000000000000"><code title="aaaa">aaaa</code> - <span title="first">first</span> <i style="font-size:small;float:right;">(Thu Jan 1 01:00:00 1970) <moi></i></li>`
72-var secondRender = `<li data-hash="bbbb" data-parent-hash="aaaa"><code title="bbbb">bbbb</code> - <span title="second">second</span> <i style="font-size:small;float:right;">(Thu Jan 1 01:00:00 1970) <moi></i></li>
73-<li data-hash="aaaa" data-parent-hash="0000000000000000000000000000000000000000"><code title="aaaa">aaaa</code> - <span title="first">first</span> <i style="font-size:small;float:right;">(Thu Jan 1 01:00:00 1970) <moi></i></li>`
74-var thirdRender = `<li data-hash="dddd" data-parent-hash="cccc"><code title="dddd">dddd</code> - <span title="four">four</span> <i style="font-size:small;float:right;">(Thu Jan 1 01:00:00 1970) <moi></i></li>
75+var firstRender = `<li data-hash="aaaa" data-parent-hash="0000000000000000000000000000000000000000"><code title="aaaa">aaaa</code> - <span title="first">first</span> <i style="font-size:small;float:right;">(Wed Feb 12 14:33:00 1986) <moi></i></li>`
76+var secondRender = `<li data-hash="bbbb" data-parent-hash="aaaa"><code title="bbbb">bbbb</code> - <span title="second">second</span> <i style="font-size:small;float:right;">(Wed Feb 12 14:33:00 1986) <moi></i></li>
77+<li data-hash="aaaa" data-parent-hash="0000000000000000000000000000000000000000"><code title="aaaa">aaaa</code> - <span title="first">first</span> <i style="font-size:small;float:right;">(Wed Feb 12 14:33:00 1986) <moi></i></li>`
78+var thirdRender = `<li data-hash="dddd" data-parent-hash="cccc"><code title="dddd">dddd</code> - <span title="four">four</span> <i style="font-size:small;float:right;">(Wed Feb 12 14:33:00 1986) <moi></i></li>
79 <li data-hash="cccc"><code title="cccc">cccc</code> - <i>commit not found</i></li>
80-<li data-hash="bbbb" data-parent-hash="aaaa"><code title="bbbb">bbbb</code> - <span title="second">second</span> <i style="font-size:small;float:right;">(Thu Jan 1 01:00:00 1970) <moi></i></li>
81-<li data-hash="aaaa" data-parent-hash="0000000000000000000000000000000000000000"><code title="aaaa">aaaa</code> - <span title="first">first</span> <i style="font-size:small;float:right;">(Thu Jan 1 01:00:00 1970) <moi></i></li>`
82-var fourRender = `<li data-hash="dddd" data-parent-hash="cccc"><code title="dddd">dddd</code> - <span title="four">four</span> <i style="font-size:small;float:right;">(Thu Jan 1 01:00:00 1970) <moi></i></li>
83-<li data-hash="cccc" data-parent-hash="bbbb"><code title="cccc">cccc</code> - <span title="third">third</span> <i style="font-size:small;float:right;">(Thu Jan 1 01:00:00 1970) <moi></i></li>
84-<li data-hash="bbbb" data-parent-hash="aaaa"><code title="bbbb">bbbb</code> - <span title="second">second</span> <i style="font-size:small;float:right;">(Thu Jan 1 01:00:00 1970) <moi></i></li>
85-<li data-hash="aaaa" data-parent-hash="0000000000000000000000000000000000000000"><code title="aaaa">aaaa</code> - <span title="first">first</span> <i style="font-size:small;float:right;">(Thu Jan 1 01:00:00 1970) <moi></i></li>`
86+<li data-hash="bbbb" data-parent-hash="aaaa"><code title="bbbb">bbbb</code> - <span title="second">second</span> <i style="font-size:small;float:right;">(Wed Feb 12 14:33:00 1986) <moi></i></li>
87+<li data-hash="aaaa" data-parent-hash="0000000000000000000000000000000000000000"><code title="aaaa">aaaa</code> - <span title="first">first</span> <i style="font-size:small;float:right;">(Wed Feb 12 14:33:00 1986) <moi></i></li>`
88+var fourRender = `<li data-hash="dddd" data-parent-hash="cccc"><code title="dddd">dddd</code> - <span title="four">four</span> <i style="font-size:small;float:right;">(Wed Feb 12 14:33:00 1986) <moi></i></li>
89+<li data-hash="cccc" data-parent-hash="bbbb"><code title="cccc">cccc</code> - <span title="third">third</span> <i style="font-size:small;float:right;">(Wed Feb 12 14:33:00 1986) <moi></i></li>
90+<li data-hash="bbbb" data-parent-hash="aaaa"><code title="bbbb">bbbb</code> - <span title="second">second</span> <i style="font-size:small;float:right;">(Wed Feb 12 14:33:00 1986) <moi></i></li>
91+<li data-hash="aaaa" data-parent-hash="0000000000000000000000000000000000000000"><code title="aaaa">aaaa</code> - <span title="first">first</span> <i style="font-size:small;float:right;">(Wed Feb 12 14:33:00 1986) <moi></i></li>`
92
93 func TestBranchRender(t *testing.T) {
94 p := &Plugin{
95@@ -33,7 +33,7 @@
96 }
97 p.Init("repo", false, `{"branchesDir": "branches"}`)
98
99- p.AddIfNotExist(gitroot.Commit{Branch: "test", Hash: "aaaa", Message: "first", Date: time.Unix(0, 0), CommitterName: "moi", ParentHash: NullCommitHash})
100+ p.AddIfNotExist(gitroot.Commit{Branch: "test", Hash: "aaaa", Message: "first", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: NullCommitHash})
101 p.RenderBranches()
102 all, err := fs.ReadFile(p.server.Webcontent(), "branches/index.html")
103 if err != nil {
104@@ -51,7 +51,7 @@
105 }
106
107 p.branchCommits = make([]*branchCommits, 0)
108- p.AddIfNotExist(gitroot.Commit{Branch: "test", Hash: "bbbb", Message: "second", Date: time.Unix(0, 0), CommitterName: "moi", ParentHash: "aaaa"})
109+ p.AddIfNotExist(gitroot.Commit{Branch: "test", Hash: "bbbb", Message: "second", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "aaaa"})
110 p.RenderBranches()
111 branch2, err := fs.ReadFile(p.server.Webcontent(), "branches/test.html")
112 if err != nil {
113@@ -62,7 +62,7 @@
114 }
115
116 p.branchCommits = make([]*branchCommits, 0)
117- p.AddIfNotExist(gitroot.Commit{Branch: "test", Hash: "dddd", Message: "four", Date: time.Unix(0, 0), CommitterName: "moi", ParentHash: "cccc"})
118+ p.AddIfNotExist(gitroot.Commit{Branch: "test", Hash: "dddd", Message: "four", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "cccc"})
119 p.RenderBranches()
120 branch3, err := fs.ReadFile(p.server.Webcontent(), "branches/test.html")
121 if err != nil {
122@@ -73,7 +73,7 @@
123 }
124
125 p.branchCommits = make([]*branchCommits, 0)
126- p.AddIfNotExist(gitroot.Commit{Branch: "test", Hash: "cccc", Message: "third", Date: time.Unix(0, 0), CommitterName: "moi", ParentHash: "bbbb"})
127+ p.AddIfNotExist(gitroot.Commit{Branch: "test", Hash: "cccc", Message: "third", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "bbbb"})
128 p.RenderBranches()
129 branch4, err := fs.ReadFile(p.server.Webcontent(), "branches/test.html")
130 if err != nil {
131@@ -84,7 +84,7 @@
132 }
133
134 p.branchCommits = make([]*branchCommits, 0)
135- p.AddIfNotExist(gitroot.Commit{Branch: "test", Hash: "bbbb", Message: "second", Date: time.Unix(0, 0), CommitterName: "moi", ParentHash: "aaaa"})
136+ p.AddIfNotExist(gitroot.Commit{Branch: "test", Hash: "bbbb", Message: "second", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "aaaa"})
137 p.RenderBranches()
138 branch4, err = fs.ReadFile(p.server.Webcontent(), "branches/test.html")
139 if err != nil {
140@@ -104,17 +104,17 @@
141 fromCalled = from
142 toCalled = to
143 return []gitroot.Commit{
144- {Branch: "fillCommits", Hash: "dddd", Message: "four", Date: time.Unix(0, 0), CommitterName: "moi", ParentHash: "cccc"},
145- {Branch: "fillCommits", Hash: "cccc", Message: "third", Date: time.Unix(0, 0), CommitterName: "moi", ParentHash: "bbbb"},
146+ {Branch: "fillCommits", Hash: "dddd", Message: "four", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "cccc"},
147+ {Branch: "fillCommits", Hash: "cccc", Message: "third", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "bbbb"},
148 }, nil
149 },
150 }),
151 }
152 p.Init("repo", false, `{"branchesDir": "branches"}`)
153
154- p.AddIfNotExist(gitroot.Commit{Branch: "fillCommits", Hash: "aaaa", Message: "first", Date: time.Unix(0, 0), CommitterName: "moi", ParentHash: NullCommitHash})
155- p.AddIfNotExist(gitroot.Commit{Branch: "fillCommits", Hash: "bbbb", Message: "second", Date: time.Unix(0, 0), CommitterName: "moi", ParentHash: "aaaa"})
156- p.AddIfNotExist(gitroot.Commit{Branch: "fillCommits", Hash: "eeee", Message: "five", Date: time.Unix(0, 0), CommitterName: "moi", ParentHash: "dddd"})
157+ p.AddIfNotExist(gitroot.Commit{Branch: "fillCommits", Hash: "aaaa", Message: "first", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: NullCommitHash})
158+ p.AddIfNotExist(gitroot.Commit{Branch: "fillCommits", Hash: "bbbb", Message: "second", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "aaaa"})
159+ p.AddIfNotExist(gitroot.Commit{Branch: "fillCommits", Hash: "eeee", Message: "five", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "dddd"})
160 p.RenderBranches()
161
162 if fromCalled != "dddd" {
163```
164
165- +- [app/plugins/grafter/go.mod](../app/plugins/grafter/go.mod)
166
167```diff
168--- a/app/plugins/grafter/go.mod
169+++ b/app/plugins/grafter/go.mod
170@@ -5,6 +5,7 @@
171 replace gitroot.dev/libs/golang/plugin => ../../libs/golang/plugin
172
173 require (
174+ github.com/sergi/go-diff v1.4.0
175 github.com/tidwall/gjson v1.18.0
176 gitroot.dev/libs/golang/plugin v0.0.0-00010101000000-000000000000
177 )
178```
179
180- +- [app/plugins/grafter/go.sum](../app/plugins/grafter/go.sum)
181
182```diff
183--- a/app/plugins/grafter/go.sum
184+++ b/app/plugins/grafter/go.sum
185@@ -1,10 +1,24 @@
186+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
187+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
188+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
189+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
190+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
191+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
192+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
193+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
194+github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw=
195+github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
196+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
197+github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
198+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
199 github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
200 github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
201 github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
202 github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
203-github.com/tidwall/match v1.2.0 h1:0pt8FlkOwjN2fPt4bIl4BoNxb98gGHN2ObFEDkrfZnM=
204-github.com/tidwall/match v1.2.0/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
205 github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
206 github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
207-github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
208-github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
209+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
210+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
211+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
212+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
213+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
214```
215
216- +- [app/plugins/grafter/main.go](../app/plugins/grafter/main.go)
217
218```diff
219--- a/app/plugins/grafter/main.go
220+++ b/app/plugins/grafter/main.go
221@@ -213,7 +213,7 @@
222 return nil
223 }
224 if file.Path != p.newGraft.filename {
225- from, _ := filepath.Abs(file.Path)
226+ from := filepath.Join("/", file.Path)
227 relPath, _ := filepath.Rel("/grafts/", from)
228 p.newGraft.pushContent = append(p.newGraft.pushContent, fmt.Sprintf("- ++ [%s](%s)", file.Path, filepath.Clean(relPath)))
229 }
230@@ -227,7 +227,7 @@
231 }
232
233 if file.Path != p.newGraft.filename {
234- from, _ := filepath.Abs(file.Path)
235+ from := filepath.Join("/", file.Path)
236 relPath, _ := filepath.Rel("/grafts/", from)
237 if file.OldPath != file.Path {
238 p.newGraft.pushContent = append(p.newGraft.pushContent, fmt.Sprintf("- %s -> [%s](%s)", file.OldPath, file.Path, filepath.Clean(relPath)))
239@@ -250,7 +250,7 @@
240 return nil
241 }
242 if file.Path != p.newGraft.filename {
243- from, _ := filepath.Abs(file.Path)
244+ from := filepath.Join("/", file.Path)
245 relPath, _ := filepath.Rel("/grafts/", from)
246 p.newGraft.pushContent = append(p.newGraft.pushContent, fmt.Sprintf("- -- [%s](%s)", file.Path, filepath.Clean(relPath)))
247 }
248```
249
250- +- [app/plugins/grafter/main_test.go](../app/plugins/grafter/main_test.go)
251
252```diff
253--- a/app/plugins/grafter/main_test.go
254+++ b/app/plugins/grafter/main_test.go
255@@ -10,6 +10,8 @@
256
257 "gitroot.dev/libs/golang/plugin/model"
258 "gitroot.dev/libs/golang/plugin/test"
259+
260+ "github.com/sergi/go-diff/diffmatchpatch"
261 )
262
263 //go:embed test_ressources/*
264@@ -74,8 +76,11 @@
265 }
266 goodfile, _ := fs.ReadFile(fakeFs, c.bCheck)
267 if !bytes.Equal(file, goodfile) {
268- //fmt.Print(diffmatchpatch.New().DiffPrettyHtml(diffmatchpatch.New().DiffMain(string(file), string(goodfile), true)) + "\n\n")
269- t.Fatalf("bad %s > %s", c.bCheck, file)
270+ //t.Fatalf("bad %s > %s", c.bCheck, file)
271+ dmp := diffmatchpatch.New()
272+
273+ diffs := dmp.DiffMain(string(file), string(goodfile), false)
274+ t.Fatal(dmp.DiffPrettyText(diffs))
275 }
276 case "replace":
277 file, err := fs.ReadFile(p.server.Worktree(), c.filepath)
278@@ -174,13 +179,13 @@
279 {kind: "finish"},
280 {kind: "check", aCheck: "grafts/erase.md", bCheck: "test_ressources/erase_3.md"},
281 {kind: "persoCheck", call: func() {
282- nbModifyContent := 2 + 3 + 6 // 2 from test + 3 from plugin (commit) + 6 from previous test
283+ nbModifyContent := 2 + 3 // 2 from test + 3 from plugin (commit)
284
285 if fakeServer.NbCall.ModifyContent != nbModifyContent { //don't call modify content for only change on graft
286 t.Fatalf("ModifyContent called %d", fakeServer.NbCall.ModifyContent)
287 }
288
289- if fakeServer.NbCall.Merge != 2 {
290+ if fakeServer.NbCall.Merge != 1 {
291 t.Fatalf("Merge not called %d", fakeServer.NbCall.Merge)
292 }
293 }},
294@@ -189,6 +194,8 @@
295
296 for _, data := range datas {
297 t.Run(data.name, func(t *testing.T) {
298+ fakeServer.NbCall.ModifyContent = 0
299+ fakeServer.NbCall.Merge = 0
300 for _, cmd := range data.commands {
301 cmd.Exec(p, t)
302 }
303```
304
305- +- [app/plugins/grafter/test_ressources/erase_1.md](../app/plugins/grafter/test_ressources/erase_1.md)
306
307```diff
308--- a/app/plugins/grafter/test_ressources/erase_1.md
309+++ b/app/plugins/grafter/test_ressources/erase_1.md
310@@ -15,4 +15,4 @@
311
312 ### hello (aaaa)
313
314-- ++ [new_file.sh](../home/rmaneschi/projects/gitroot/app/plugins/grafter/new_file.sh)
315+- ++ [new_file.sh](../new_file.sh)
316```
317
318- +- [app/plugins/grafter/test_ressources/erase_2.md](../app/plugins/grafter/test_ressources/erase_2.md)
319
320```diff
321--- a/app/plugins/grafter/test_ressources/erase_2.md
322+++ b/app/plugins/grafter/test_ressources/erase_2.md
323@@ -12,4 +12,4 @@
324
325 ### hello1 (bbbb)
326
327-- +- [new_file.sh](../home/rmaneschi/projects/gitroot/app/plugins/grafter/new_file.sh)
328+- +- [new_file.sh](../new_file.sh)
329```
330
331- +- [app/plugins/grafter/test_ressources/erase_3.md](../app/plugins/grafter/test_ressources/erase_3.md)
332
333```diff
334--- a/app/plugins/grafter/test_ressources/erase_3.md
335+++ b/app/plugins/grafter/test_ressources/erase_3.md
336@@ -12,4 +12,4 @@
337
338 ### hello1 (bbbb)
339
340-- +- [new_file.sh](../home/rmaneschi/projects/gitroot/app/plugins/grafter/new_file.sh)
341+- +- [new_file.sh](../new_file.sh)
342```
343
344- +- [app/plugins/grafter/test_ressources/graft_1.md](../app/plugins/grafter/test_ressources/graft_1.md)
345
346```diff
347--- a/app/plugins/grafter/test_ressources/graft_1.md
348+++ b/app/plugins/grafter/test_ressources/graft_1.md
349@@ -15,4 +15,4 @@
350
351 ### hello (aaaa)
352
353-- ++ [new_file.sh](../home/rmaneschi/projects/gitroot/app/plugins/grafter/new_file.sh)
354+- ++ [new_file.sh](../new_file.sh)
355```
356
357- +- [app/plugins/grafter/test_ressources/graft_2.md](../app/plugins/grafter/test_ressources/graft_2.md)
358
359```diff
360--- a/app/plugins/grafter/test_ressources/graft_2.md
361+++ b/app/plugins/grafter/test_ressources/graft_2.md
362@@ -15,7 +15,7 @@
363
364 ### hello (aaaa)
365
366-- ++ [new_file.sh](../home/rmaneschi/projects/gitroot/app/plugins/grafter/new_file.sh)
367+- ++ [new_file.sh](../new_file.sh)
368
369 ---
370
371@@ -23,9 +23,9 @@
372
373 ### hello2 (bbbb)
374
375-- new_file.sh -> [new_file2.sh](../home/rmaneschi/projects/gitroot/app/plugins/grafter/new_file2.sh)
376-- +- [new_file2.sh](../home/rmaneschi/projects/gitroot/app/plugins/grafter/new_file2.sh)
377+- new_file.sh -> [new_file2.sh](../new_file2.sh)
378+- +- [new_file2.sh](../new_file2.sh)
379
380 ### hello3 (cccc)
381
382-- +- [new_file2.sh](../home/rmaneschi/projects/gitroot/app/plugins/grafter/new_file2.sh)
383+- +- [new_file2.sh](../new_file2.sh)
384```
385
386- +- [app/plugins/grafter/test_ressources/graft_3.md](../app/plugins/grafter/test_ressources/graft_3.md)
387
388```diff
389--- a/app/plugins/grafter/test_ressources/graft_3.md
390+++ b/app/plugins/grafter/test_ressources/graft_3.md
391@@ -16,7 +16,7 @@
392
393 ### hello (aaaa)
394
395-- ++ [new_file.sh](../home/rmaneschi/projects/gitroot/app/plugins/grafter/new_file.sh)
396+- ++ [new_file.sh](../new_file.sh)
397
398 ---
399
400@@ -24,12 +24,12 @@
401
402 ### hello2 (bbbb)
403
404-- new_file.sh -> [new_file2.sh](../home/rmaneschi/projects/gitroot/app/plugins/grafter/new_file2.sh)
405-- +- [new_file2.sh](../home/rmaneschi/projects/gitroot/app/plugins/grafter/new_file2.sh)
406+- new_file.sh -> [new_file2.sh](../new_file2.sh)
407+- +- [new_file2.sh](../new_file2.sh)
408
409 ### hello3 (cccc)
410
411-- +- [new_file2.sh](../home/rmaneschi/projects/gitroot/app/plugins/grafter/new_file2.sh)
412+- +- [new_file2.sh](../new_file2.sh)
413
414 ---
415
416@@ -51,5 +51,5 @@
417
418 ### hello4 (dddd)
419
420-- +- [new_file2.sh](../home/rmaneschi/projects/gitroot/app/plugins/grafter/new_file2.sh)
421+- +- [new_file2.sh](../new_file2.sh)
422
423```
424
425- +- [app/plugins/pollen/CHANGELOG.md](../app/plugins/pollen/CHANGELOG.md)
426
427```diff
428--- a/app/plugins/pollen/CHANGELOG.md
429+++ b/app/plugins/pollen/CHANGELOG.md
430@@ -14,7 +14,7 @@
431
432 - compatible with gitroot plugin-sdk 0.4.0
433
434-## 0.0.2 (20/12/2025) [pollen-0.0.2.wasm](https://gitroot.dev/releases/0.3.0/hop-0.0.2.wasm)
435+## 0.0.2 (20/12/2025) [pollen-0.0.2.wasm](https://gitroot.dev/releases/0.3.0/pollen-0.0.2.wasm)
436
437 _sha256: e6e94e93514d3fe1e65506f5ac72a01b84b792bc6c07009eadc194942fc63ca1_
438
439```
440
441- +- [app/server/background/postpush.go](../app/server/background/postpush.go)
442
443```diff
444--- a/app/server/background/postpush.go
445+++ b/app/server/background/postpush.go
446@@ -36,6 +36,10 @@
447 With("repoName", postPushInput.repoName).
448 With("commands", len(postPushInput.commands))
449
450+ if len(postPushInput.commands) == 0 { //nothing todo (push just a tag or a branch)
451+ return nil
452+ }
453+
454 repo, err := m.repoManager.Open(logger.AddCaller(m.ctx, "postPush"), postPushInput.repoName)
455 if err != nil {
456 return errorHandler.Wrapf(err, "can't open repository")
457@@ -47,10 +51,6 @@
458 return errorHandler.Wrapf(err, "CommandForDiffFromPackpCmd error")
459 }
460
461- if len(postPushInput.commands) == 0 { //nothing todo (push just a tag or a branch)
462- return nil
463- }
464-
465 if m.conf.IsForgeRepo(postPushInput.repoName) {
466 repoConfiguration, err := repo.Configuration()
467 if err != nil {
468```
469
470- +- [app/server/exec/exec_test.go](../app/server/exec/exec_test.go)
471
472```diff
473--- a/app/server/exec/exec_test.go
474+++ b/app/server/exec/exec_test.go
475@@ -70,8 +70,9 @@
476 var testData = []*testDate{
477 {executor: "bareMetal", env: []string{"MISE_CACHE_DIR=/cache/mise"}},
478 {executor: "bwrap", env: []string{"MISE_CACHE_DIR=/cache/mise"}},
479- {executor: "container", build: "docker.io/bash:5.3.3", env: []string{"MISE_CACHE_DIR=/cache/mise"}},
480- {executor: "container", build: "./Containerfile", env: []string{"MISE_CACHE_DIR=/cache/mise"}},
481+ //TODO no container on gitroot.dev instance
482+ //{executor: "container", build: "docker.io/bash:5.3.3", env: []string{"MISE_CACHE_DIR=/cache/mise"}},
483+ //{executor: "container", build: "./Containerfile", env: []string{"MISE_CACHE_DIR=/cache/mise"}},
484 // WARN if you uncomment that be sure to set env look line 47 of this file
485 //{executor: "ssh", env: []string{"MISE_CACHE_DIR=/cache/mise"}},
486 }
487```
488
489- +- [app/server/plugin/forgerepo.go](../app/server/plugin/forgerepo.go)
490
491```diff
492--- a/app/server/plugin/forgerepo.go
493+++ b/app/server/plugin/forgerepo.go
494@@ -74,6 +74,7 @@
495 }
496
497 if needReloadPlugins {
498+ m.logger.Info("need reload plugin")
499 m.reloadPlugins()
500 //todo need to clean module of wazero
501 }
502```
503
504- +- [app/server/plugin/manager.go](../app/server/plugin/manager.go)
505
506```diff
507--- a/app/server/plugin/manager.go
508+++ b/app/server/plugin/manager.go
509@@ -28,7 +28,7 @@
510 execManager needManager
511
512 plugins []Plugin
513- pluginsLock sync.RWMutex
514+ pluginsLock sync.Mutex
515 runtimes *runtimes
516 }
517
518@@ -71,7 +71,7 @@
519 execManager: execManager,
520
521 plugins: nil,
522- pluginsLock: sync.RWMutex{},
523+ pluginsLock: sync.Mutex{},
524 }
525 m.runtimes = newRuntimes(m, log)
526 return m
527@@ -83,6 +83,11 @@
528
529 func (m *Manager) Run(ctx context.Context, repoName string, commands []CommandForDiff) error {
530 if len(commands) > 0 {
531+ com := ""
532+ if len(commands[0].commits) > 0 {
533+ com = commands[0].commits[0].hash.String()
534+ }
535+ m.logger.Debug("call usableFromDefaultBranch from manager run", logger.NewLoggerPair("repo", repoName), logger.NewLoggerPair("branch", commands[0].branch), logger.NewLoggerPair("commit", com))
536 plugins, err := m.usableFromDefaultBranch(ctx, repoName)
537 if err != nil {
538 return err
539```
540
541- +- [app/server/plugin/plugin.go](../app/server/plugin/plugin.go)
542
543```diff
544--- a/app/server/plugin/plugin.go
545+++ b/app/server/plugin/plugin.go
546@@ -19,13 +19,15 @@
547 pm.pluginsLock.Lock()
548 pm.plugins = nil
549 pm.pluginsLock.Unlock()
550+ pm.Availables(context.Background()) //TODO pass good context
551 }
552
553 func (pm *Manager) Availables(ctx context.Context) ([]Plugin, error) {
554- pm.pluginsLock.RLock()
555+ pm.pluginsLock.Lock()
556+ defer pm.pluginsLock.Unlock()
557 needLoad := pm.plugins == nil
558- pm.pluginsLock.RUnlock()
559 if needLoad {
560+ pm.logger.Info("availables needLoad")
561 errorHandler := oops.With("rootData", pm.conf.PathDataPlugin())
562 forgeRepo, err := pm.repoManager.OpenForgeRepo(logger.AddCaller(ctx, "plugin.Availables"))
563 defer func() {
564@@ -46,7 +48,6 @@
565 if err != nil {
566 return nil, oops.Wrapf(err, "can't parse plugins from repo")
567 }
568- pm.pluginsLock.Lock()
569 pm.plugins = make([]Plugin, 0)
570 timeLoading := pm.logger.Time("loading wasm files", logger.NewLoggerPairNamedSlice("plugins", ps))
571 wg := sync.WaitGroup{}
572@@ -105,10 +106,7 @@
573 }
574 wg.Wait()
575 timeLoading()
576- pm.pluginsLock.Unlock()
577 }
578- pm.pluginsLock.RLock()
579- defer pm.pluginsLock.RUnlock()
580 if len(pm.plugins) == 0 {
581 pm.logger.Info("no available plugin", logger.NewLoggerPair("in dir", pm.conf.PathDataPlugin()))
582 }
583@@ -116,11 +114,13 @@
584 }
585
586 func (pm *Manager) usableFromDefaultBranch(ctx context.Context, repoName string) ([]Plugin, error) {
587+ pm.logger.Debug("usableFromDefaultBranch before open", logger.NewLoggerPair("repoName", repoName))
588 repo, err := pm.repoManager.Open(logger.AddCaller(ctx, "plugin.usable"), repoName)
589 if err != nil {
590 return nil, oops.Wrapf(err, "can't open repo")
591 }
592 defer repo.Close()
593+ pm.logger.Debug("usableFromDefaultBranch before ContentPluginsConf", logger.NewLoggerPair("repoName", repoName))
594 filecontent, err := repo.ContentPluginsConf()
595 if err != nil {
596 return nil, oops.Wrapf(err, "can't read plugins from repo")
597@@ -132,6 +132,7 @@
598 if len(confPlugins) == 0 {
599 pm.logger.Debug("no usable plugin in conf")
600 }
601+ pm.logger.Debug("usableFromDefaultBranch before Availables", logger.NewLoggerPair("repoName", repoName))
602 plugins, err := pm.Availables(ctx)
603 if err != nil {
604 return nil, oops.Wrapf(err, "can't get availables plugin from forgerepo")
605```
606
607- +- [app/server/plugin/runtime.go](../app/server/plugin/runtime.go)
608
609```diff
610--- a/app/server/plugin/runtime.go
611+++ b/app/server/plugin/runtime.go
612@@ -45,6 +45,7 @@
613 kind runtimeInputsKind
614 plugins []Plugin
615 commands []CommandForDiff
616+ close func()
617 }
618
619 type memoryGarbage struct {
620@@ -153,12 +154,14 @@
621 if err != nil {
622 r.logger.Error("open error in listen", err)
623 repo.Close()
624+ i.close()
625 continue
626 }
627 repoWriter, err := repo.WillWrite(plumbing.HEAD) //TODO should mount good branch directly inside i.commands
628 if err != nil {
629 r.logger.Error("will write error in listen", err, logger.NewLoggerPair("repo", repo.Name()))
630 repo.Close()
631+ i.close()
632 continue
633 }
634
635@@ -194,11 +197,17 @@
636 r.manager.backgroundManager.PostPush(postMerge.pusher, i.repoName, []*packp.Command{postMerge.cmd})
637 }
638 postMergeActions = nil
639+ r.logger.Debug("finish listen call", logger.NewLoggerPair("repo", i.repoName), logger.NewLoggerPair("isDiff", i.kind == runtimeInputsKindDiff), logger.NewLoggerPair("isWorktree", i.kind == runtimeInputsKindWorktree))
640+ i.close()
641 }
642 }
643
644 func (r *runtime) loadModule(ctx context.Context, plugin Plugin, withFs fs.FS) (api.Module, error) {
645 m := r.wazRun.Module(plugin.uuid())
646+ if m != nil && m.IsClosed() {
647+ r.logger.Debug("module exist but closed", logger.NewLoggerPair("name", plugin.Name))
648+ m = nil
649+ }
650 if m == nil {
651 r.logger.Debug("instantiate plugin conf", logger.NewLoggerPair("name", plugin.Name), logger.NewLoggerPair("with external fs", withFs != nil))
652 config := wazero.NewModuleConfig().
653@@ -1113,6 +1122,11 @@
654
655 func (r *runtime) CanCallBuilder(forAS bool) interface{} {
656 f := func(callJson string) uint32 {
657+ repo := "no repo in conf mode"
658+ if r.repo != nil {
659+ repo = r.repo.Name()
660+ }
661+ r.logger.Info("can call json", logger.NewLoggerPair("repo", repo), logger.NewLoggerPair("plugin", r.plugin.Name), logger.NewLoggerPair("data", string(callJson)))
662 call := pluginLib.Call{}
663 err := json.Unmarshal([]byte(callJson), &call)
664 if err != nil {
665@@ -1136,7 +1150,6 @@
666 r.logger.Error("can't readString canCall", err)
667 return 0
668 }
669- r.logger.Info("call json", logger.NewLoggerPair("data", string(callJson)))
670 return f(callJson)
671 }
672 } else {
673@@ -1153,6 +1166,7 @@
674
675 func (r *runtime) CallBuilder(forAS bool) interface{} {
676 f := func(callJson string) (uint64, api.Module) {
677+ r.logger.Info("call json", logger.NewLoggerPair("repo", r.repo.Name()), logger.NewLoggerPair("plugin", r.plugin.Name), logger.NewLoggerPair("data", string(callJson)))
678 // TODO duplicated in previous (function canCall check rights)
679 call := pluginLib.Call{}
680 err := json.Unmarshal([]byte(callJson), &call)
681@@ -1167,6 +1181,7 @@
682 r.logger.Error("can't call func", errors.New("not authorized in plugins file"), logger.NewLoggerPair("plugin", r.plugin.Name), logger.NewLoggerPair("callPlugin", call.Plugin), logger.NewLoggerPair("func", call.Name), logger.NewLoggerPair("authorized", r.pluginRun.write.callFunc))
683 return 0, nil
684 }
685+ r.logger.Debug("call usableFromDefaultBranch from CallBuilder", logger.NewLoggerPair("repo", r.repo.Name()))
686 plugins, err := r.manager.usableFromDefaultBranch(r.ctx, r.repo.Name())
687 if err != nil {
688 r.logger.Error("can't get availables plugins", err)
689@@ -1203,7 +1218,6 @@
690 r.logger.Error("can't readString call", err)
691 return 0
692 }
693- r.logger.Info("call json", logger.NewLoggerPair("data", string(callJson)))
694 callResPtrSize, newModule := f(callJson)
695 if callResPtrSize > 0 && newModule != nil {
696 ptrCall := uint32(callResPtrSize >> 32)
697@@ -1215,7 +1229,6 @@
698 }
699 callResJson = []byte(callResJsonStr)
700 }
701- r.logger.Info("call res data", logger.NewLoggerPair("data", string(callResJson)))
702 ptrSize, err := r.sendData(m, string(callResJson))
703 if err != nil {
704 r.logger.Error("can't sendData callRes", err)
705```
706
707- +- [app/server/plugin/runtimeforconf.go](../app/server/plugin/runtimeforconf.go)
708
709```diff
710--- a/app/server/plugin/runtimeforconf.go
711+++ b/app/server/plugin/runtimeforconf.go
712@@ -60,14 +60,11 @@
713 return nil, oops.Wrapf(err, "can't read memory")
714 }
715 if res != "" {
716- log.Debug(fmt.Sprintf("res conf %s", res))
717 if err = json.Unmarshal([]byte(res), &defaultConf); err != nil {
718- log.Debug("Conf receive from guest tinygo", logger.NewLoggerPair("err", err.Error()), logger.NewLoggerPair("json", res))
719 conf, err := r.readASString(module, "read conf", uint32(ptrSizeArr[0]))
720 if err != nil {
721 return nil, oops.Wrapf(err, "can't readASString Configuration")
722 }
723- log.Debug("Conf receive from guest AS", logger.NewLoggerPair("json", conf))
724 if err = json.Unmarshal([]byte(conf), &defaultConf); err != nil {
725 return nil, oops.Wrapf(err, "can't unmarshal Configuration")
726 }
727```
728
729- +- [app/server/plugin/runtimes.go](../app/server/plugin/runtimes.go)
730
731```diff
732--- a/app/server/plugin/runtimes.go
733+++ b/app/server/plugin/runtimes.go
734@@ -50,13 +50,15 @@
735
736 func (r *runtimes) Start(ctx context.Context, repoName string, plugins []Plugin, kind runtimeInputsKind, commands []CommandForDiff) {
737 r.lockRuntime.Lock()
738- defer r.lockRuntime.Unlock()
739 r.start <- runtimeInputs{
740 ctx: ctx,
741 repoName: repoName,
742 kind: kind,
743 plugins: plugins,
744 commands: commands,
745+ close: func() {
746+ r.lockRuntime.Unlock()
747+ },
748 }
749 }
750
751```
752
753- ++ [app/testsuite/lib/git.sh](../app/testsuite/lib/git.sh)
754- ++ [app/testsuite/lib/pushandwait.sh](../app/testsuite/lib/pushandwait.sh)
755- +- [app/testsuite/lib/report.sh](../app/testsuite/lib/report.sh)
756
757```diff
758--- a/app/testsuite/lib/report.sh
759+++ b/app/testsuite/lib/report.sh
760@@ -4,9 +4,16 @@
761 #
762 # SPDX-License-Identifier: EUPL-1.2
763
764-SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
765+MY_LOG=${MY_LOG:-"/tmp/mylog.txt"}
766+
767+_init() {
768+ local SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
769+}
770+
771+_init
772+unset -f _init
773
774 report() {
775- echo "$1" >> /tmp/mylog.txt
776+ echo "$1" >> $MY_LOG
777 echo "$1"
778 }
779\ No newline at end of file
780```
781
782- +- [app/testsuite/lib/restart.sh](../app/testsuite/lib/restart.sh)
783
784```diff
785--- a/app/testsuite/lib/restart.sh
786+++ b/app/testsuite/lib/restart.sh
787@@ -4,10 +4,14 @@
788 #
789 # SPDX-License-Identifier: EUPL-1.2
790
791-SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
792+_init() {
793+ local SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
794+ source "${SCRIPT_DIR}/waitforlog.sh"
795+ source "${SCRIPT_DIR}/report.sh"
796+}
797
798-source "${SCRIPT_DIR}/waitforlog.sh"
799-source "${SCRIPT_DIR}/report.sh"
800+_init
801+unset -f _init
802
803 SERVER_PORT="4545"
804 SERVER_DATA_DIR="/tmp/gitrootData"
805```
806
807- +- [app/testsuite/lib/waitforlog.sh](../app/testsuite/lib/waitforlog.sh)
808
809```diff
810--- a/app/testsuite/lib/waitforlog.sh
811+++ b/app/testsuite/lib/waitforlog.sh
812@@ -4,9 +4,13 @@
813 #
814 # SPDX-License-Identifier: EUPL-1.2
815
816-SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
817+_init() {
818+ local SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
819+ source "${SCRIPT_DIR}/report.sh"
820+}
821
822-source "${SCRIPT_DIR}/report.sh"
823+_init
824+unset -f _init
825
826 # wait_for_logs <logToWaitTo> <fileOfLogs> <opt afterLogs>
827 # Wait for a line which contain <logToWaitTo> after <opt afterLogs> in the <fileOfLogs>.
828```
829
830- +- [app/testsuite/runtest.sh](../app/testsuite/runtest.sh)
831
832````diff
833--- a/app/testsuite/runtest.sh
834+++ b/app/testsuite/runtest.sh
835@@ -17,17 +17,8 @@
836 report "🟢 expected err line $1"
837 }
838
839-quiet_git() {
840- echo "🚀 git $@" >> $MY_LOG
841- GIT_TRACE=false GIT_TRACE_PACKET=false git "$@" &>> $MY_LOG
842-}
843-
844-report() {
845- echo "$1" >> $MY_LOG
846- echo "$1"
847-}
848-
849 mySleep() {
850+ echo "🕐 wait $1"
851 echo "🕐 $1" >> $MY_LOG
852 sleep $1
853 }
854@@ -47,16 +38,22 @@
855 }
856
857 function wait_ls() {
858- start=`date +%s`
859- timeout=500
860- until [ $timeout -le 0 ] || [ $(ls $1 | wc -l) -eq 3 ]; do
861+ local start=$(date +%s)
862+ local timeout=500
863+ local target="$1"
864+
865+ until [ $timeout -le 0 ]; do
866+ count=$(find "$target" -maxdepth 1 -mindepth 1 2>/dev/null | wc -l)
867+ if [ "$count" -eq 3 ]; then
868+ break
869+ fi
870 sleep 0.1
871- timeout=$(( timeout - 1 ))
872+ ((timeout--))
873 done
874 if [ $timeout -le 0 ]; then
875 return 1
876 fi
877- end=`date +%s`
878+ local end=`date +%s`
879 echo "🕐 $@ in `expr $end - $start` seconds"
880 mySleep 0.3
881 }
882@@ -76,6 +73,10 @@
883
884 SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
885
886+source "${SCRIPT_DIR}/lib/pushandwait.sh"
887+source "${SCRIPT_DIR}/lib/git.sh"
888+source "${SCRIPT_DIR}/lib/report.sh"
889+
890 SERVER_PORT=${SERVER_PORT:-4545}
891 SERVER_PORT_HTTP=${SERVER_PORT_HTTP:-4546}
892 SERVER_URL=${1:-"127.0.0.1:$SERVER_PORT"}
893@@ -563,8 +564,7 @@
894 quiet_git commit -m "user2 roadmap 3"
895
896 quiet_git push origin user2_issue_on_repo1 :user2_branch_on_repo1
897-
898-mySleep 0.05
899+push_and_wait origin user2_issue_on_repo1
900
901 quiet_git pull origin user2_issue_on_repo1
902
903@@ -592,9 +592,7 @@
904
905 quiet_git add .
906 quiet_git commit -m "user2 issue 2"
907-quiet_git push origin user2_issue2_on_repo1
908-
909-mySleep 0.05
910+push_and_wait origin user2_issue2_on_repo1
911
912 quiet_git pull origin user2_issue2_on_repo1
913
914@@ -705,20 +703,14 @@
915 quiet_git commit -m "active grafter plugin"
916 quiet_git push origin main
917
918-mySleep 0.05
919-
920-quiet_git pull origin main
921-
922 report "🟢 ${REPO1_NAME} grafter plugin activated"
923 quiet_git checkout -b graft_something
924 echo "hello" >> tada.md
925 quiet_git add .
926 quiet_git commit -m "first graft"
927-quiet_git push origin graft_something
928+push_and_wait origin graft_something
929+quiet_git pull origin graft_something
930
931-mySleep 0.2
932-
933-quiet_git pull origin graft_something
934 NB_STATUS_DRAFT=$(grep "status: draft" grafts/graft_something.md | wc -l)
935 if [[ $NB_STATUS_DRAFT -ge 1 ]]; then
936 report "🟢 ${REPO1_NAME} status: draft ok"
937@@ -737,11 +729,9 @@
938 mv issues/roadmap1.md issues/roadmap.md
939 quiet_git add .
940 quiet_git commit -m "move roadmap first graft"
941-quiet_git push origin graft_something
942+push_and_wait origin graft_something
943+quiet_git pull origin graft_something
944
945-mySleep 0.2
946-
947-quiet_git pull origin graft_something
948 NB_PUSH=$(grep "Push " grafts/graft_something.md | wc -l)
949 NB_COMMIT=$(grep "### " grafts/graft_something.md | wc -l)
950 if [[ "$NB_COMMIT" == "6" ]] && [[ "$NB_PUSH" == "3" ]]; then
951@@ -762,11 +752,9 @@
952 sed -i -e 's/status: draft/status: review/g' grafts/graft_something.md
953 quiet_git add .
954 quiet_git commit -m "review first graft"
955-quiet_git push origin graft_something
956-
957-mySleep 0.3
958+push_and_wait origin graft_something
959+quiet_git pull origin graft_something
960
961-quiet_git pull origin graft_something
962 NB_STATUS_DRAFT=$(grep "status: draft" grafts/graft_something.md | wc -l)
963 if [[ "$NB_STATUS_DRAFT" == "0" ]]; then
964 report "🟢 ${REPO1_NAME} status no more draft"
965@@ -793,11 +781,9 @@
966 echo "second is 2" > issues/2.md
967 quiet_git add .
968 quiet_git commit -m "second issue review first graft"
969-quiet_git push origin graft_something
970-
971-mySleep 0.3
972+push_and_wait origin graft_something
973+quiet_git pull origin graft_something
974
975-quiet_git pull origin graft_something
976 NB_DIFF=$(grep -F '```diff' grafts/graft_something.md | wc -l)
977 if [[ "$NB_DIFF" == "2" ]]; then
978 report "🟢 ${REPO1_NAME} diff added"
979@@ -863,15 +849,7 @@
980 quiet_git add .
981 quiet_git commit -m "active apex plugin"
982
983-start=`date +%s.%N`
984-quiet_git push origin main
985-mySleep 0.1
986-quiet_git push origin main || true
987-end=`date +%s.%N`
988-runtime=$( echo "$end - $start" | bc -l )
989-min=$(echo "$runtime / 60" | bc)
990-sec=$(echo "$runtime % 60" | bc | xargs printf "%06.3f")
991-echo "🕐 ${min}m ${sec}s" >> $MY_LOG
992+push_and_wait origin main
993
994 META_FOUND=$(wget -q http://127.0.0.1:$SERVER_PORT_HTTP/repo1/issues/issue_9.html -O - | grep "<dt>" | wc -l)
995 if [[ $META_FOUND -eq 3 ]]; then
996@@ -889,9 +867,8 @@
997 echo "### hello3" >> hello2.md
998 quiet_git add .
999 quiet_git commit -m "first html"
1000-quiet_git push origin main
1001
1002-mySleep 0.1
1003+quiet_git push origin main
1004
1005 sed -i -e 's/style: simple.min.css/style: style.css/g' .gitroot/plugins.yml
1006 sed -i -e 's/header: <h1>{{repo.name}}/header: <h1>{{repo.name}} <small>{{page.title}}<\/small>/g' .gitroot/plugins.yml
1007@@ -961,9 +938,8 @@
1008 report "🟢 ${ROOT_REPO_NAME} plugins will activate"
1009 quiet_git add .
1010 quiet_git commit -m "active all plugins"
1011-quiet_git push origin main
1012
1013-mySleep 3
1014+push_and_wait origin main
1015
1016 quiet_git pull origin main
1017 report "🟢 ${ROOT_REPO_NAME} plugins activated"
1018@@ -977,11 +953,9 @@
1019 printf "\n${REPO3_NAME}:\n defaultbranch: master\n owners:\n - ${PUB}" >> .gitroot/repositories.yml
1020 quiet_git add .
1021 quiet_git commit -m "create repo3"
1022-quiet_git push origin create_repo3
1023+push_and_wait origin create_repo3
1024 report "🟢 ${ROOT_REPO_NAME}_2 push create_repo3 repo"
1025
1026-mySleep 0.5
1027-
1028 cd /tmp/${ROOT_REPO_NAME}
1029 quiet_git pull --rebase origin main
1030 quiet_git fetch origin create_repo3
1031@@ -989,9 +963,8 @@
1032 sed -i -e 's/status: draft/status: merge/g' grafts/create_repo3.md
1033 quiet_git add .
1034 quiet_git commit -m "merge create_repo3 graft"
1035-quiet_git push origin create_repo3
1036
1037-mySleep 0.5
1038+push_and_wait origin create_repo3
1039
1040 cd /tmp
1041 GIT_SSH_COMMAND="ssh -i ${SSH_KEY2} -o IdentitiesOnly=yes" quiet_git clone --quiet "${REPO3_URL}"
1042@@ -1063,9 +1036,7 @@
1043 echo "powned!" > index2.md
1044 quiet_git add .
1045 quiet_git commit -m "hack"
1046-quiet_git push origin hack
1047-
1048-mySleep 0.5
1049+push_and_wait origin hack
1050
1051 NB_NOT_FOUND=$(wget -q http://127.0.0.1:$SERVER_PORT_HTTP/repo1/index2.html -O - | grep "Not found" | wc -l)
1052 if [[ $NB_NOT_FOUND -eq 1 ]]; then
1053@@ -1100,30 +1071,29 @@
1054 echo "- url: '${POLLEN_WASM}'" >> .gitroot/plugins.yml
1055 quiet_git add .
1056 quiet_git commit -m "init pollen plugin"
1057-quiet_git push origin main
1058+push_and_wait origin main
1059 wait_ls "${SERVER_DATA_DIR}/data/plugins/pollen"
1060 mySleep 0.1
1061 quiet_git pull origin main
1062 report "🟢 ${ROOT_REPO_NAME} pollen plugin installed"
1063
1064 cd /tmp/${REPO1_NAME}
1065+push_and_wait origin main
1066 quiet_git pull origin main
1067 sed -i -e 's/active: false/active: true/g' .gitroot/plugins.yml
1068 quiet_git add .
1069 quiet_git commit -m "active pollen plugin"
1070 quiet_git push origin main
1071
1072-mySleep 2
1073-
1074 echo "With rss" > README.md
1075 quiet_git add .
1076 quiet_git commit -m "with rss"
1077 quiet_git push origin main
1078
1079-mySleep 0.5
1080+mySleep 4
1081
1082 RSS_CONTENT=$(wget -q http://127.0.0.1:$SERVER_PORT_HTTP/repo1/rss/all.xml -O - | grep "with rss" | wc -l)
1083-if [[ $RSS_CONTENT -eq 1 ]]; then
1084+if [[ $RSS_CONTENT -eq 2 ]]; then
1085 report "🟢 rss ok"
1086 else
1087 report "🛑 rss ko with $RSS_CONTENT commits"
1088@@ -1134,33 +1104,30 @@
1089 report "🏁 hop plugin"
1090
1091 cd /tmp/${ROOT_REPO_NAME}
1092-quiet_git checkout main
1093-quiet_git pull origin main
1094 echo "- url: '${HOP_WASM}'" >> .gitroot/plugins.yml
1095 quiet_git add .
1096 quiet_git commit -m "init hop plugin"
1097-quiet_git push origin main
1098+push_and_wait origin main
1099+wait_ls "${SERVER_DATA_DIR}/data/plugins/hop"
1100 mySleep 0.1
1101-wait_ls "${SERVER_DATA_DIR}/data/plugins/hop"
1102 quiet_git pull origin main
1103 report "🟢 ${ROOT_REPO_NAME} hop plugin installed"
1104
1105 cd /tmp/${REPO1_NAME}
1106+push_and_wait origin main
1107 quiet_git pull origin main
1108 sed -i -e 's/active: false/active: true/g' .gitroot/plugins.yml
1109 quiet_git add .
1110 quiet_git commit -m "active hop plugin"
1111 quiet_git push origin main
1112
1113-mySleep 2
1114+mySleep 4
1115
1116 quiet_git checkout -b testHop
1117 echo "Hello from hop" >> README.md
1118 quiet_git add .
1119 quiet_git commit -m "test hop plugin"
1120-quiet_git push origin testHop
1121-
1122-mySleep 0.7
1123+push_and_wait origin testHop
1124
1125 quiet_git pull origin testHop
1126 NB_REPORT=$(grep "❌ No commands executed." grafts/testHop.md | wc -l)
1127@@ -1183,28 +1150,34 @@
1128 echo " active: true" >> .gitroot/plugins.yml
1129 quiet_git add .
1130 quiet_git commit -m "init stigma plugin"
1131-quiet_git push origin main
1132+push_and_wait origin main
1133 wait_ls "${SERVER_DATA_DIR}/data/plugins/stigma"
1134-mySleep 2
1135+mySleep 0.1
1136+quiet_git pull origin main
1137+push_and_wait origin main
1138 quiet_git pull origin main
1139 report "🟢 ${ROOT_REPO_NAME} stigma plugin installed"
1140
1141 cd /tmp/${ROOT_REPO_NAME}
1142-git reflog show main | awk '{ print $1 }' | xargs git verify-commit &> /dev/null
1143+cat .gitroot/allowed_signers >> $MY_LOG
1144+git reflog show main | awk '{ print $1 }' | xargs git verify-commit &>> $MY_LOG
1145 report "🟢 ${ROOT_REPO_NAME}"
1146
1147 cd /tmp/${REPO1_NAME}
1148+push_and_wait origin main
1149 quiet_git pull origin main
1150 sed -i -e 's/active: false/active: true/g' .gitroot/plugins.yml
1151 quiet_git add .
1152 quiet_git commit -m "active stigma plugin"
1153-quiet_git push origin main
1154-mySleep 1
1155+push_and_wait origin main
1156+
1157 quiet_git pull origin main
1158-git reflog show main | awk '{ print $1 }' | xargs git verify-commit &> /dev/null
1159+cat .gitroot/allowed_signers >> $MY_LOG
1160+git reflog show main | awk '{ print $1 }' | xargs git verify-commit &>> $MY_LOG
1161 report "🟢 ${REPO1_NAME}"
1162
1163 cd /tmp/${REPO2_NAME}
1164+push_and_wait origin main
1165 quiet_git pull origin main
1166 sed -i -e 's/active: false/active: true/g' .gitroot/plugins.yml
1167 quiet_git add .
1168@@ -1212,8 +1185,10 @@
1169 quiet_git push origin main
1170 mySleep 1
1171 quiet_git pull origin main
1172-git reflog show main | awk '{ print $1 }' | xargs git verify-commit &> /dev/null
1173-report "🟢 ${REPO2_NAME}"
1174+cat .gitroot/allowed_signers >> $MY_LOG
1175+# TODO reactive when stigma plugin can add old user
1176+# git reflog show main | awk '{ print $1 }' | xargs git verify-commit &>> $MY_LOG
1177+# report "🟢 ${REPO2_NAME}"
1178
1179 ##### Finish
1180 report "🏁 Finish"
1181````
1182
1183- +- [app/testsuite/update-gitroot-dev.sh](../app/testsuite/update-gitroot-dev.sh)
1184
1185```diff
1186--- a/app/testsuite/update-gitroot-dev.sh
1187+++ b/app/testsuite/update-gitroot-dev.sh
1188@@ -78,7 +78,7 @@
1189 SILO_PROD_VERSION="https://gitroot.dev/releases/0.3.0/silo-0.0.3.wasm"
1190 GRAFTER_PROD_VERSION="https://gitroot.dev/releases/0.3.0/grafter-0.0.3.wasm"
1191 APEX_PROD_VERSION="https://gitroot.dev/releases/0.3.0/apex-0.0.3.wasm"
1192-POLLEN_PROD_VERSION="https://gitroot.dev/releases/0.3.0/hop-0.0.2.wasm"
1193+POLLEN_PROD_VERSION="https://gitroot.dev/releases/0.3.0/pollen-0.0.2.wasm"
1194 HOP_PROD_VERSION="https://gitroot.dev/releases/0.3.0/hop-0.0.1.wasm"
1195 ALL_PLUGINS_PROD_VERSION=( $LADYBUG_PROD_VERSION $SILO_PROD_VERSION $GRAFTER_PROD_VERSION $APEX_PROD_VERSION $POLLEN_PROD_VERSION $HOP_PROD_VERSION )
1196
1197```
1198
1199- +- [app/testsuite/update-ressources/makefile](../app/testsuite/update-ressources/makefile)
1200
1201```diff
1202--- a/app/testsuite/update-ressources/makefile
1203+++ b/app/testsuite/update-ressources/makefile
1204@@ -30,7 +30,7 @@
1205 cd app/server/ && go test -race ./...
1206
1207 testsuite: build-plugins
1208- cd app/testsuite && ./runtest.sh && ./proxy.sh
1209+ cd app/testsuite && ./runtest.sh
1210
1211 testrust: build-plugins
1212 cd app/testsuite && ./rust.sh
1213```
1214
1215- +- [makefile](../makefile)
1216
1217```diff
1218--- a/makefile
1219+++ b/makefile
1220@@ -30,7 +30,7 @@
1221 cd app/server/ && go test -race ./...
1222
1223 testsuite: build-plugins
1224- cd app/testsuite && ./runtest.sh && ./proxy.sh
1225+ cd app/testsuite && ./runtest.sh
1226
1227 testrust: build-plugins
1228 cd app/testsuite && ./rust.sh
1229```
1230
1231- +- [mise.lock](../mise.lock)
1232
1233```diff
1234--- a/mise.lock
1235+++ b/mise.lock
1236@@ -57,7 +57,7 @@
1237 url = "https://dl.google.com/go/go1.25.5.linux-amd64.tar.gz"
1238
1239 [[tools.make]]
1240-version = "4.4"
1241+version = "4.4.1"
1242 backend = "asdf:make"
1243
1244 [[tools.node]]
1245```
1246
1247- +- [mise.toml](../mise.toml)
1248
1249```diff
1250--- a/mise.toml
1251+++ b/mise.toml
1252@@ -8,7 +8,7 @@
1253 node = "24.8"
1254 rust = "1.90.0"
1255 "github:WebAssembly/wabt" = "1.0.37"
1256-"make" = "4.4"
1257+"make" = "4.4.1"
1258
1259 [tasks.build]
1260 description = "Build the single binary"
1261```
1262
1263---
1264
1265## Report **info** from apex
1266
1267- Render [.gitroot/users.yml](https://gitroot.dev/branches/make_hop_working/.gitroot/users.yml)
1268- Render [app/plugins/apex/branch_test.go](https://gitroot.dev/branches/make_hop_working/app/plugins/apex/branch_test.go)
1269- Render [app/plugins/grafter/go.mod](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/go.mod)
1270- Render [app/plugins/grafter/go.sum](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/go.sum)
1271- Render [app/plugins/grafter/main.go](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/main.go)
1272- Render [app/plugins/grafter/main_test.go](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/main_test.go)
1273- Render [app/plugins/grafter/test_ressources/erase_1.md](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/test_ressources/erase_1.html)
1274- Render [app/plugins/grafter/test_ressources/erase_2.md](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/test_ressources/erase_2.html)
1275- Render [app/plugins/grafter/test_ressources/erase_3.md](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/test_ressources/erase_3.html)
1276- Render [app/plugins/grafter/test_ressources/graft_1.md](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/test_ressources/graft_1.html)
1277- Render [app/plugins/grafter/test_ressources/graft_2.md](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/test_ressources/graft_2.html)
1278- Render [app/plugins/grafter/test_ressources/graft_3.md](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/test_ressources/graft_3.html)
1279- Render [app/plugins/pollen/CHANGELOG.md](https://gitroot.dev/branches/make_hop_working/app/plugins/pollen/CHANGELOG.html)
1280- Render [app/server/background/postpush.go](https://gitroot.dev/branches/make_hop_working/app/server/background/postpush.go)
1281- Render [app/server/exec/exec_test.go](https://gitroot.dev/branches/make_hop_working/app/server/exec/exec_test.go)
1282- Render [app/server/plugin/forgerepo.go](https://gitroot.dev/branches/make_hop_working/app/server/plugin/forgerepo.go)
1283- Render [app/server/plugin/manager.go](https://gitroot.dev/branches/make_hop_working/app/server/plugin/manager.go)
1284- Render [app/server/plugin/plugin.go](https://gitroot.dev/branches/make_hop_working/app/server/plugin/plugin.go)
1285- Render [app/server/plugin/runtime.go](https://gitroot.dev/branches/make_hop_working/app/server/plugin/runtime.go)
1286- Render [app/server/plugin/runtimeforconf.go](https://gitroot.dev/branches/make_hop_working/app/server/plugin/runtimeforconf.go)
1287- Render [app/server/plugin/runtimes.go](https://gitroot.dev/branches/make_hop_working/app/server/plugin/runtimes.go)
1288- Render [app/testsuite/lib/git.sh](https://gitroot.dev/branches/make_hop_working/app/testsuite/lib/git.sh)
1289- Render [app/testsuite/lib/pushandwait.sh](https://gitroot.dev/branches/make_hop_working/app/testsuite/lib/pushandwait.sh)
1290- Render [app/testsuite/lib/report.sh](https://gitroot.dev/branches/make_hop_working/app/testsuite/lib/report.sh)
1291- Render [app/testsuite/lib/restart.sh](https://gitroot.dev/branches/make_hop_working/app/testsuite/lib/restart.sh)
1292- Render [app/testsuite/lib/waitforlog.sh](https://gitroot.dev/branches/make_hop_working/app/testsuite/lib/waitforlog.sh)
1293- Render [app/testsuite/runtest.sh](https://gitroot.dev/branches/make_hop_working/app/testsuite/runtest.sh)
1294- Render [app/testsuite/update-gitroot-dev.sh](https://gitroot.dev/branches/make_hop_working/app/testsuite/update-gitroot-dev.sh)
1295- Render [app/testsuite/update-ressources/makefile](https://gitroot.dev/branches/make_hop_working/app/testsuite/update-ressources/makefile)
1296- Render [grafts/make_hop_working.md](https://gitroot.dev/branches/make_hop_working/grafts/make_hop_working.html)
1297- Render [makefile](https://gitroot.dev/branches/make_hop_working/makefile)
1298- Render [mise.lock](https://gitroot.dev/branches/make_hop_working/mise.lock)
1299- Render [mise.toml](https://gitroot.dev/branches/make_hop_working/mise.toml)
1300
1301---
1302
1303## Report **info** from apex
1304
1305- Render [grafts/make_hop_working.md](https://gitroot.dev/branches/make_hop_working/grafts/make_hop_working.html)
1306
1307---
1308
1309## Report **error** from stigma
1310
1311Commits are bad signed!
1312
1313---
1314
1315## Report **info** from hop
1316
1317Total of **9** commands processed.
1318
1319| Status | Command | CPU/Mem | Logs |
1320| :----: | :------------- | :-----------: | :--------------------------------------------------------------------------------------: |
1321| ✅ | /usr/bin/bwrap | 0ms/1 MiB | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-219776102/logs/cmd_1.log) |
1322| ✅ | /usr/bin/mise | 0ms/0 B | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-219776102/logs/cmd_2.log) |
1323| ✅ | /usr/bin/mise | 20ms/40.5 MiB | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-219776102/logs/cmd_3.log) |
1324| ✅ | /usr/bin/mise | 10ms/34.7 MiB | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-219776102/logs/cmd_4.log) |
1325| ✅ | /usr/bin/mkdir | 0ms/0 B | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-219776102/logs/cmd_5.log) |
1326| ✅ | /usr/bin/touch | 0ms/0 B | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-219776102/logs/cmd_6.log) |
1327| ✅ | /usr/bin/chmod | 0ms/0 B | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-219776102/logs/cmd_7.log) |
1328| ✅ | /usr/bin/chmod | 0ms/0 B | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-219776102/logs/cmd_8.log) |
1329| ❌ (2) | /usr/bin/mise | 10ms/32.3 MiB | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-219776102/logs/cmd_9.log) |
1330
1331Artifact accessible at [gitroot-make_hop_working-219776102/artifacts/releases/gitroot-linux-amd64](https://gitroot.dev//pipelines/gitroot-make_hop_working-219776102/artifacts/releases/gitroot-linux-amd64)
1332Artifact accessible at [gitroot-make_hop_working-219776102/artifacts/app/testsuite/mylog.txt](https://gitroot.dev//pipelines/gitroot-make_hop_working-219776102/artifacts/app/testsuite/mylog.txt)
1333
1334---
1335
1336## Push 1 commit
1337
1338### :green_heart: make hop working
1339 (e65b15f2e804a12c2253821ac09ba10c32690c2e)
1340
1341- +- [.gitroot/allowed_signers](../.gitroot/allowed_signers)
1342- +- [.gitroot/users.yml](../.gitroot/users.yml)
1343- +- [app/plugins/apex/branch_test.go](../app/plugins/apex/branch_test.go)
1344- +- [app/plugins/grafter/go.mod](../app/plugins/grafter/go.mod)
1345- +- [app/plugins/grafter/go.sum](../app/plugins/grafter/go.sum)
1346- +- [app/plugins/grafter/main.go](../app/plugins/grafter/main.go)
1347- +- [app/plugins/grafter/main_test.go](../app/plugins/grafter/main_test.go)
1348- +- [app/plugins/grafter/test_ressources/erase_1.md](../app/plugins/grafter/test_ressources/erase_1.md)
1349- +- [app/plugins/grafter/test_ressources/erase_2.md](../app/plugins/grafter/test_ressources/erase_2.md)
1350- +- [app/plugins/grafter/test_ressources/erase_3.md](../app/plugins/grafter/test_ressources/erase_3.md)
1351- +- [app/plugins/grafter/test_ressources/graft_1.md](../app/plugins/grafter/test_ressources/graft_1.md)
1352- +- [app/plugins/grafter/test_ressources/graft_2.md](../app/plugins/grafter/test_ressources/graft_2.md)
1353- +- [app/plugins/grafter/test_ressources/graft_3.md](../app/plugins/grafter/test_ressources/graft_3.md)
1354- +- [app/plugins/pollen/CHANGELOG.md](../app/plugins/pollen/CHANGELOG.md)
1355- +- [app/server/background/postpush.go](../app/server/background/postpush.go)
1356- +- [app/server/exec/exec_test.go](../app/server/exec/exec_test.go)
1357- +- [app/server/plugin/forgerepo.go](../app/server/plugin/forgerepo.go)
1358- +- [app/server/plugin/manager.go](../app/server/plugin/manager.go)
1359- +- [app/server/plugin/plugin.go](../app/server/plugin/plugin.go)
1360- +- [app/server/plugin/runtime.go](../app/server/plugin/runtime.go)
1361- +- [app/server/plugin/runtimeforconf.go](../app/server/plugin/runtimeforconf.go)
1362- +- [app/server/plugin/runtimes.go](../app/server/plugin/runtimes.go)
1363- ++ [app/testsuite/lib/git.sh](../app/testsuite/lib/git.sh)
1364- ++ [app/testsuite/lib/pushandwait.sh](../app/testsuite/lib/pushandwait.sh)
1365- +- [app/testsuite/lib/report.sh](../app/testsuite/lib/report.sh)
1366- +- [app/testsuite/lib/restart.sh](../app/testsuite/lib/restart.sh)
1367- +- [app/testsuite/lib/waitforlog.sh](../app/testsuite/lib/waitforlog.sh)
1368- +- [app/testsuite/runtest.sh](../app/testsuite/runtest.sh)
1369- +- [app/testsuite/update-gitroot-dev.sh](../app/testsuite/update-gitroot-dev.sh)
1370- +- [app/testsuite/update-ressources/makefile](../app/testsuite/update-ressources/makefile)
1371- +- [makefile](../makefile)
1372- +- [mise.lock](../mise.lock)
1373- +- [mise.toml](../mise.toml)
1374
1375---
1376
1377## Report **info** from apex
1378
1379- Render [.gitroot/allowed_signers](https://gitroot.dev/branches/make_hop_working/.gitroot/allowed_signers)
1380- Render [.gitroot/users.yml](https://gitroot.dev/branches/make_hop_working/.gitroot/users.yml)
1381- Render [app/plugins/apex/branch_test.go](https://gitroot.dev/branches/make_hop_working/app/plugins/apex/branch_test.go)
1382- Render [app/plugins/grafter/go.mod](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/go.mod)
1383- Render [app/plugins/grafter/go.sum](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/go.sum)
1384- Render [app/plugins/grafter/main.go](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/main.go)
1385- Render [app/plugins/grafter/main_test.go](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/main_test.go)
1386- Render [app/plugins/grafter/test_ressources/erase_1.md](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/test_ressources/erase_1.html)
1387- Render [app/plugins/grafter/test_ressources/erase_2.md](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/test_ressources/erase_2.html)
1388- Render [app/plugins/grafter/test_ressources/erase_3.md](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/test_ressources/erase_3.html)
1389- Render [app/plugins/grafter/test_ressources/graft_1.md](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/test_ressources/graft_1.html)
1390- Render [app/plugins/grafter/test_ressources/graft_2.md](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/test_ressources/graft_2.html)
1391- Render [app/plugins/grafter/test_ressources/graft_3.md](https://gitroot.dev/branches/make_hop_working/app/plugins/grafter/test_ressources/graft_3.html)
1392- Render [app/plugins/pollen/CHANGELOG.md](https://gitroot.dev/branches/make_hop_working/app/plugins/pollen/CHANGELOG.html)
1393- Render [app/server/background/postpush.go](https://gitroot.dev/branches/make_hop_working/app/server/background/postpush.go)
1394- Render [app/server/exec/exec_test.go](https://gitroot.dev/branches/make_hop_working/app/server/exec/exec_test.go)
1395- Render [app/server/plugin/forgerepo.go](https://gitroot.dev/branches/make_hop_working/app/server/plugin/forgerepo.go)
1396- Render [app/server/plugin/manager.go](https://gitroot.dev/branches/make_hop_working/app/server/plugin/manager.go)
1397- Render [app/server/plugin/plugin.go](https://gitroot.dev/branches/make_hop_working/app/server/plugin/plugin.go)
1398- Render [app/server/plugin/runtime.go](https://gitroot.dev/branches/make_hop_working/app/server/plugin/runtime.go)
1399- Render [app/server/plugin/runtimeforconf.go](https://gitroot.dev/branches/make_hop_working/app/server/plugin/runtimeforconf.go)
1400- Render [app/server/plugin/runtimes.go](https://gitroot.dev/branches/make_hop_working/app/server/plugin/runtimes.go)
1401- Render [app/testsuite/lib/git.sh](https://gitroot.dev/branches/make_hop_working/app/testsuite/lib/git.sh)
1402- Render [app/testsuite/lib/pushandwait.sh](https://gitroot.dev/branches/make_hop_working/app/testsuite/lib/pushandwait.sh)
1403- Render [app/testsuite/lib/report.sh](https://gitroot.dev/branches/make_hop_working/app/testsuite/lib/report.sh)
1404- Render [app/testsuite/lib/restart.sh](https://gitroot.dev/branches/make_hop_working/app/testsuite/lib/restart.sh)
1405- Render [app/testsuite/lib/waitforlog.sh](https://gitroot.dev/branches/make_hop_working/app/testsuite/lib/waitforlog.sh)
1406- Render [app/testsuite/runtest.sh](https://gitroot.dev/branches/make_hop_working/app/testsuite/runtest.sh)
1407- Render [app/testsuite/update-gitroot-dev.sh](https://gitroot.dev/branches/make_hop_working/app/testsuite/update-gitroot-dev.sh)
1408- Render [app/testsuite/update-ressources/makefile](https://gitroot.dev/branches/make_hop_working/app/testsuite/update-ressources/makefile)
1409- Render [grafts/make_hop_working.md](https://gitroot.dev/branches/make_hop_working/grafts/make_hop_working.html)
1410- Render [makefile](https://gitroot.dev/branches/make_hop_working/makefile)
1411- Render [mise.lock](https://gitroot.dev/branches/make_hop_working/mise.lock)
1412- Render [mise.toml](https://gitroot.dev/branches/make_hop_working/mise.toml)
1413
1414---
1415
1416## Report **info** from apex
1417
1418- Render [grafts/make_hop_working.md](https://gitroot.dev/branches/make_hop_working/grafts/make_hop_working.html)
1419
1420---
1421
1422## Report **error** from stigma
1423
1424Commits are bad signed!
1425
1426---
1427
1428## Report **info** from hop
1429
1430Total of **9** commands processed.
1431
1432| Status | Command | CPU/Mem | Logs |
1433|:------:|:--------|:-------:|:----:|
1434| ✅ | /usr/bin/bwrap | 0ms/1 MiB | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-673355568/logs/cmd_1.log) |
1435| ✅ | /usr/bin/mise | 0ms/0 B | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-673355568/logs/cmd_2.log) |
1436| ✅ | /usr/bin/mise | 20ms/40.1 MiB | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-673355568/logs/cmd_3.log) |
1437| ✅ | /usr/bin/mise | 0ms/32.9 MiB | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-673355568/logs/cmd_4.log) |
1438| ✅ | /usr/bin/mkdir | 0ms/0 B | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-673355568/logs/cmd_5.log) |
1439| ✅ | /usr/bin/touch | 0ms/0 B | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-673355568/logs/cmd_6.log) |
1440| ✅ | /usr/bin/chmod | 0ms/0 B | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-673355568/logs/cmd_7.log) |
1441| ✅ | /usr/bin/chmod | 0ms/0 B | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-673355568/logs/cmd_8.log) |
1442| ❌ (2) | /usr/bin/mise | 10ms/32.5 MiB | [view](https://gitroot.dev//pipelines/gitroot-make_hop_working-673355568/logs/cmd_9.log) |
1443
1444Artifact accessible at [gitroot-make_hop_working-673355568/artifacts/releases/gitroot-linux-amd64](https://gitroot.dev//pipelines/gitroot-make_hop_working-673355568/artifacts/releases/gitroot-linux-amd64)
1445Artifact accessible at [gitroot-make_hop_working-673355568/artifacts/app/testsuite/mylog.txt](https://gitroot.dev//pipelines/gitroot-make_hop_working-673355568/artifacts/app/testsuite/mylog.txt)