repos / git-pr

a self-hosted git collaboration server
git clone https://github.com/picosh/git-pr.git

commit
4975e6d
parent
f997e92
author
jolheiser
date
2024-07-15 00:01:16 -0400 EDT
fix: use config url for web pages

This patch uses the config URL in the frontend so that self-hosted users can point contributors to use their SSH server.

Signed-off-by: jolheiser <git@jolheiser.com>
4 files changed,  +33, -16
M web.go
M tmpl/pr-header.html
+8, -8
 1@@ -15,21 +15,21 @@
 2     <summary>Help</summary>
 3     <div class="group">
 4       <pre class="m-0"># add changes to patch request
 5-git format-patch {{.Branch}} --stdout | ssh pr.pico.sh pr add {{.Pr.ID}}</pre>
 6+git format-patch {{.Branch}} --stdout | ssh {{.MetaData.URL}} pr add {{.Pr.ID}}</pre>
 7       <pre class="m-0"># add review to patch request
 8-git format-patch {{.Branch}} --stdout | ssh pr.pico.sh pr add --review {{.Pr.ID}}</pre>
 9+git format-patch {{.Branch}} --stdout | ssh {{.MetaData.URL}} pr add --review {{.Pr.ID}}</pre>
10       <pre class="m-0"># overwrite patches
11-git format-patch {{.Branch}} --stdout | ssh pr.pico.sh pr add --force {{.Pr.ID}}</pre>
12+git format-patch {{.Branch}} --stdout | ssh {{.MetaData.URL}} pr add --force {{.Pr.ID}}</pre>
13       <pre class="m-0"># checkout all patches
14-ssh pr.pico.sh pr print {{.Pr.ID}} | git am -3</pre>
15+ssh {{.MetaData.URL}} pr print {{.Pr.ID}} | git am -3</pre>
16       <pre class="m-0"># checkout specific patch
17-ssh pr.pico.sh pr print {{.Pr.ID}} --filter n | git am -3</pre>
18+ssh {{.MetaData.URL}} pr print {{.Pr.ID}} --filter n | git am -3</pre>
19       <pre class="m-0"># checkout patch range
20-ssh pr.pico.sh pr print {{.Pr.ID}} --filter n:y | git am -3</pre>
21+ssh {{.MetaData.URL}} pr print {{.Pr.ID}} --filter n:y | git am -3</pre>
22       <pre class="m-0"># accept PR
23-ssh pr.pico.sh pr accept {{.Pr.ID}}</pre>
24+ssh {{.MetaData.URL}} pr accept {{.Pr.ID}}</pre>
25       <pre class="m-0"># close PR
26-ssh pr.pico.sh pr close {{.Pr.ID}}</pre>
27+ssh {{.MetaData.URL}} pr close {{.Pr.ID}}</pre>
28     </div>
29   </details>
30 </header>
M tmpl/repo-detail.html
+1, -1
1@@ -19,7 +19,7 @@
2     <details>
3       <summary>Help</summary>
4       <pre class="m-0"># submit a new patch request
5-git format-patch {{.Branch}} --stdout | ssh pr.pico.sh pr create {{.ID}}</pre>
6+git format-patch {{.Branch}} --stdout | ssh {{.MetaData.URL}} pr create {{.ID}}</pre>
7     </details>
8 	</div>
9 </header>
M tmpl/repo-list.html
+7, -7
 1@@ -16,7 +16,7 @@
 2     <a href="https://github.com/picosh/git-pr">github</a> &middot;
 3     <a href="https://youtu.be/d28Dih-BBUw">demo video</a>
 4   </div>
 5-  <pre class="m-0">ssh pr.pico.sh help</pre>
 6+  <pre class="m-0">ssh {{.MetaData.URL}} help</pre>
 7   <details>
 8     <summary>Intro</summary>
 9 
10@@ -185,24 +185,24 @@ git clone git@github.com:picosh/test.git
11 git add -A && git commit -m "fix: some bugs"
12 
13 # Contributor runs:
14-git format-patch origin/main --stdout | ssh pr.pico.sh pr create test
15+git format-patch origin/main --stdout | ssh {{.MetaData.URL}} pr create test
16 # > Patch Request has been created (ID: 1)
17 
18 # Owner can checkout patch:
19-ssh pr.pico.sh pr print 1 | git am -3
20+ssh {{.MetaData.URL}} pr print 1 | git am -3
21 # Owner can comment (IN CODE), commit, then send another format-patch
22 # on top of the PR:
23-git format-patch origin/main --stdout | ssh pr.pico.sh pr add --review 1
24+git format-patch origin/main --stdout | ssh {{.MetaData.URL}} pr add --review 1
25 # UI clearly marks patch as a review
26 
27 # Contributor can checkout reviews
28-ssh pr.pico.sh pr print 1 | git am -3
29+ssh {{.MetaData.URL}} pr print 1 | git am -3
30 
31 # Owner can reject a pr:
32-ssh pr.pico.sh pr close 1
33+ssh {{.MetaData.URL}} pr close 1
34 
35 # Owner can accept a pr:
36-ssh pr.pico.sh pr accept 1
37+ssh {{.MetaData.URL}} pr accept 1
38 
39 # Owner can prep PR for upstream:
40 git rebase -i origin/main
M web.go
+17, -0
 1@@ -40,6 +40,7 @@ func getWebCtx(r *http.Request) (*WebCtx, error) {
 2 	}
 3 	return data, nil
 4 }
 5+
 6 func setWebCtx(ctx context.Context, web *WebCtx) context.Context {
 7 	return context.WithValue(ctx, ctxWeb{}, web)
 8 }
 9@@ -92,6 +93,7 @@ type RepoData struct {
10 
11 type RepoListData struct {
12 	Repos []RepoData
13+	MetaData
14 }
15 
16 func repoListHandler(w http.ResponseWriter, r *http.Request) {
17@@ -148,12 +150,19 @@ func repoListHandler(w http.ResponseWriter, r *http.Request) {
18 	tmpl := getTemplate("repo-list.html")
19 	err = tmpl.Execute(w, RepoListData{
20 		Repos: repoData,
21+		MetaData: MetaData{
22+			URL: web.Backend.Cfg.Url,
23+		},
24 	})
25 	if err != nil {
26 		web.Backend.Logger.Error("cannot execute template", "err", err)
27 	}
28 }
29 
30+type MetaData struct {
31+	URL string
32+}
33+
34 type PrListData struct {
35 	LinkData
36 	ID       int64
37@@ -172,6 +181,7 @@ type RepoDetailData struct {
38 	AcceptedPrs []PrListData
39 	ClosedPrs   []PrListData
40 	ReviewedPrs []PrListData
41+	MetaData
42 }
43 
44 func repoDetailHandler(w http.ResponseWriter, r *http.Request) {
45@@ -246,6 +256,9 @@ func repoDetailHandler(w http.ResponseWriter, r *http.Request) {
46 		AcceptedPrs: acceptedList,
47 		ClosedPrs:   closedList,
48 		ReviewedPrs: reviewedList,
49+		MetaData: MetaData{
50+			URL: web.Backend.Cfg.Url,
51+		},
52 	})
53 	if err != nil {
54 		web.Backend.Logger.Error("cannot execute template", "err", err)
55@@ -282,6 +295,7 @@ type PrDetailData struct {
56 	Patches []PatchData
57 	Branch  string
58 	Logs    []EventLogData
59+	MetaData
60 }
61 
62 func prDetailHandler(w http.ResponseWriter, r *http.Request) {
63@@ -386,6 +400,9 @@ func prDetailHandler(w http.ResponseWriter, r *http.Request) {
64 			Date:     pr.CreatedAt.Format(time.RFC3339),
65 			Status:   pr.Status,
66 		},
67+		MetaData: MetaData{
68+			URL: web.Backend.Cfg.Url,
69+		},
70 	})
71 	if err != nil {
72 		web.Backend.Logger.Error("cannot execute template", "err", err)