repos / git-pr

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

commit
163f987
parent
3e46541
author
Eric Bower
date
2026-02-24 21:04:36 -0500 EST
fix(ssh): remove last traces of charm/ssh
6 files changed,  +11, -21
M cfg.go
M go.mod
M go.sum
M CHANGELOG.md
+1, -0
1@@ -6,6 +6,7 @@ Use spec: https://common-changelog.org/
2 
3 ### Changed
4 
5+- Upgraded to `go1.25`
6 - Removed charm's `wish` with pico's `pssh`
7 
8 ## v2026-02-24
M backend.go
+8, -4
 1@@ -1,14 +1,14 @@
 2 package git
 3 
 4 import (
 5+	"bytes"
 6 	"encoding/base64"
 7 	"fmt"
 8 	"log/slog"
 9 	"strings"
10 
11-	"github.com/charmbracelet/ssh"
12 	"github.com/jmoiron/sqlx"
13-	gossh "golang.org/x/crypto/ssh"
14+	"golang.org/x/crypto/ssh"
15 )
16 
17 type Backend struct {
18@@ -74,7 +74,7 @@ func (be *Backend) Pubkey(pk ssh.PublicKey) string {
19 }
20 
21 func (be *Backend) KeyForFingerprint(pk ssh.PublicKey) string {
22-	return gossh.FingerprintSHA256(pk)
23+	return ssh.FingerprintSHA256(pk)
24 }
25 
26 func (be *Backend) PubkeyToPublicKey(pubkey string) (ssh.PublicKey, error) {
27@@ -91,9 +91,13 @@ func (be *Backend) KeysEqual(pka, pkb string) bool {
28 	return pka == pkb
29 }
30 
31+func (be *Backend) PublicKeysEqual(a, b ssh.PublicKey) bool {
32+	return bytes.Equal(a.Marshal(), b.Marshal())
33+}
34+
35 func (be *Backend) IsAdmin(pk ssh.PublicKey) bool {
36 	for _, apk := range be.Cfg.Admins {
37-		if ssh.KeysEqual(pk, apk) {
38+		if be.PublicKeysEqual(pk, apk) {
39 			return true
40 		}
41 	}
M cfg.go
+1, -1
 1@@ -7,11 +7,11 @@ import (
 2 	"strings"
 3 	"time"
 4 
 5-	"github.com/charmbracelet/ssh"
 6 	"github.com/knadh/koanf/parsers/toml"
 7 	"github.com/knadh/koanf/providers/env"
 8 	"github.com/knadh/koanf/providers/file"
 9 	"github.com/knadh/koanf/v2"
10+	"golang.org/x/crypto/ssh"
11 )
12 
13 var k = koanf.New(".")
M go.mod
+0, -5
 1@@ -5,7 +5,6 @@ go 1.25
 2 require (
 3 	github.com/alecthomas/chroma/v2 v2.23.1
 4 	github.com/bluekeyes/go-gitdiff v0.8.0
 5-	github.com/charmbracelet/ssh v0.0.0-20240301204039-e79ff702f5b3
 6 	github.com/gkampitakis/go-snaps v0.5.15
 7 	github.com/gorilla/feeds v1.2.0
 8 	github.com/jmoiron/sqlx v1.4.0
 9@@ -22,14 +21,10 @@ require (
10 )
11 
12 require (
13-	github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect
14 	github.com/antoniomika/syncmap v1.0.0 // indirect
15 	github.com/beorn7/perks v1.0.1 // indirect
16 	github.com/cespare/xxhash/v2 v2.3.0 // indirect
17-	github.com/charmbracelet/x/errors v0.0.0-20240117030013-d31dba354651 // indirect
18-	github.com/charmbracelet/x/exp/term v0.0.0-20240229115032-4b79243a3516 // indirect
19 	github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect
20-	github.com/creack/pty v1.1.21 // indirect
21 	github.com/dlclark/regexp2 v1.11.5 // indirect
22 	github.com/dustin/go-humanize v1.0.1 // indirect
23 	github.com/fsnotify/fsnotify v1.7.0 // indirect
M go.sum
+0, -10
 1@@ -12,8 +12,6 @@ github.com/alecthomas/chroma/v2 v2.23.1 h1:nv2AVZdTyClGbVQkIzlDm/rnhk1E9bU9nXwmZ
 2 github.com/alecthomas/chroma/v2 v2.23.1/go.mod h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o=
 3 github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs=
 4 github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
 5-github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
 6-github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
 7 github.com/antoniomika/syncmap v1.0.0 h1:iFSfbQFQOvHZILFZF+hqWosO0no+W9+uF4y2VEyMKWU=
 8 github.com/antoniomika/syncmap v1.0.0/go.mod h1:fK2829foEYnO4riNfyUn0SHQZt4ue3DStYjGU+sJj38=
 9 github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de h1:FxWPpzIjnTlhPwqqXc4/vE0f7GvRjuAsbW+HOIe8KnA=
10@@ -26,12 +24,6 @@ github.com/bluekeyes/go-gitdiff v0.8.0 h1:Nn1wfw3/XeKoc3lWk+2bEXGUHIx36kj80FM1gV
11 github.com/bluekeyes/go-gitdiff v0.8.0/go.mod h1:WWAk1Mc6EgWarCrPFO+xeYlujPu98VuLW3Tu+B/85AE=
12 github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
13 github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
14-github.com/charmbracelet/ssh v0.0.0-20240301204039-e79ff702f5b3 h1:BI6Vno579jK/NKUwrvboHtMfF2On6kh6mU1cguf5+vQ=
15-github.com/charmbracelet/ssh v0.0.0-20240301204039-e79ff702f5b3/go.mod h1:wUZ0VTrLI5ixIbYOSRHrqrZnfj8EXgLZOOvQYAQ2f18=
16-github.com/charmbracelet/x/errors v0.0.0-20240117030013-d31dba354651 h1:3RXpZWGWTOeVXCTv0Dnzxdv/MhNUkBfEcbaTY0zrTQI=
17-github.com/charmbracelet/x/errors v0.0.0-20240117030013-d31dba354651/go.mod h1:2P0UgXMEa6TsToMSuFqKFQR+fZTO9CNGUNokkPatT/0=
18-github.com/charmbracelet/x/exp/term v0.0.0-20240229115032-4b79243a3516 h1:wL/PiybPudKHv/LDgAUqS9eoPQr3pOAmzShMPG99cXA=
19-github.com/charmbracelet/x/exp/term v0.0.0-20240229115032-4b79243a3516/go.mod h1:ntNL6rRIDmBHKUmo6ZKt344wCTcrPsSrfVj72qT8A5U=
20 github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs=
21 github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA=
22 github.com/clipperhouse/uax29/v2 v2.5.0 h1:x7T0T4eTHDONxFJsL94uKNKPHrclyFI0lm7+w94cO8U=
23@@ -41,8 +33,6 @@ github.com/containerd/console v1.0.5/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6
24 github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo=
25 github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
26 github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
27-github.com/creack/pty v1.1.21 h1:1/QdRyBaHHJP61QkWMXlOIBfsgdDeeKfK8SYVUWJKf0=
28-github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
29 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
30 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
31 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
M util.go
+1, -1
1@@ -12,7 +12,7 @@ import (
2 	"strings"
3 
4 	"github.com/bluekeyes/go-gitdiff/gitdiff"
5-	"github.com/charmbracelet/ssh"
6+	"golang.org/x/crypto/ssh"
7 )
8 
9 var (