Skip to content

Commit 3a74184

Browse files
committed
Merge branch 'main' into lunny/adjust_object_format
2 parents 7f3410c + 3849fd2 commit 3a74184

File tree

3 files changed

+42
-14
lines changed

3 files changed

+42
-14
lines changed

models/repo/repo.go

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -608,25 +608,23 @@ func ComposeHTTPSCloneURL(owner, repo string) string {
608608

609609
func ComposeSSHCloneURL(ownerName, repoName string) string {
610610
sshUser := setting.SSH.User
611-
612-
// if we have a ipv6 literal we need to put brackets around it
613-
// for the git cloning to work.
614611
sshDomain := setting.SSH.Domain
615-
ip := net.ParseIP(setting.SSH.Domain)
616-
if ip != nil && ip.To4() == nil {
617-
sshDomain = "[" + setting.SSH.Domain + "]"
618-
}
619612

613+
// non-standard port, it must use full URI
620614
if setting.SSH.Port != 22 {
621-
return fmt.Sprintf("ssh://%s@%s/%s/%s.git", sshUser,
622-
net.JoinHostPort(setting.SSH.Domain, strconv.Itoa(setting.SSH.Port)),
623-
url.PathEscape(ownerName),
624-
url.PathEscape(repoName))
615+
sshHost := net.JoinHostPort(sshDomain, strconv.Itoa(setting.SSH.Port))
616+
return fmt.Sprintf("ssh://%s@%s/%s/%s.git", sshUser, sshHost, url.PathEscape(ownerName), url.PathEscape(repoName))
617+
}
618+
619+
// for standard port, it can use a shorter URI (without the port)
620+
sshHost := sshDomain
621+
if ip := net.ParseIP(sshHost); ip != nil && ip.To4() == nil {
622+
sshHost = "[" + sshHost + "]" // for IPv6 address, wrap it with brackets
625623
}
626624
if setting.Repository.UseCompatSSHURI {
627-
return fmt.Sprintf("ssh://%s@%s/%s/%s.git", sshUser, sshDomain, url.PathEscape(ownerName), url.PathEscape(repoName))
625+
return fmt.Sprintf("ssh://%s@%s/%s/%s.git", sshUser, sshHost, url.PathEscape(ownerName), url.PathEscape(repoName))
628626
}
629-
return fmt.Sprintf("%s@%s:%s/%s.git", sshUser, sshDomain, url.PathEscape(ownerName), url.PathEscape(repoName))
627+
return fmt.Sprintf("%s@%s:%s/%s.git", sshUser, sshHost, url.PathEscape(ownerName), url.PathEscape(repoName))
630628
}
631629

632630
func (repo *Repository) cloneLink(isUncyclo bool) *CloneLink {

models/repo/repo_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import (
1212
"code.gitea.io/gitea/models/unittest"
1313
user_model "code.gitea.io/gitea/models/user"
1414
"code.gitea.io/gitea/modules/markup"
15+
"code.gitea.io/gitea/modules/setting"
16+
"code.gitea.io/gitea/modules/test"
1517
"code.gitea.io/gitea/modules/util"
1618

1719
"github.com/stretchr/testify/assert"
@@ -186,3 +188,32 @@ func TestGetRepositoryByURL(t *testing.T) {
186188
test(t, "try.gitea.io:user2/repo2.git")
187189
})
188190
}
191+
192+
func TestComposeSSHCloneURL(t *testing.T) {
193+
defer test.MockVariableValue(&setting.SSH, setting.SSH)()
194+
defer test.MockVariableValue(&setting.Repository, setting.Repository)()
195+
196+
setting.SSH.User = "git"
197+
198+
// test SSH_DOMAIN
199+
setting.SSH.Domain = "domain"
200+
setting.SSH.Port = 22
201+
setting.Repository.UseCompatSSHURI = false
202+
assert.Equal(t, "git@domain:user/repo.git", repo_model.ComposeSSHCloneURL("user", "repo"))
203+
setting.Repository.UseCompatSSHURI = true
204+
assert.Equal(t, "ssh://git@domain/user/repo.git", repo_model.ComposeSSHCloneURL("user", "repo"))
205+
// test SSH_DOMAIN while use non-standard SSH port
206+
setting.SSH.Port = 123
207+
setting.Repository.UseCompatSSHURI = false
208+
assert.Equal(t, "ssh://git@domain:123/user/repo.git", repo_model.ComposeSSHCloneURL("user", "repo"))
209+
setting.Repository.UseCompatSSHURI = true
210+
assert.Equal(t, "ssh://git@domain:123/user/repo.git", repo_model.ComposeSSHCloneURL("user", "repo"))
211+
212+
// test IPv6 SSH_DOMAIN
213+
setting.Repository.UseCompatSSHURI = false
214+
setting.SSH.Domain = "::1"
215+
setting.SSH.Port = 22
216+
assert.Equal(t, "git@[::1]:user/repo.git", repo_model.ComposeSSHCloneURL("user", "repo"))
217+
setting.SSH.Port = 123
218+
assert.Equal(t, "ssh://git@[::1]:123/user/repo.git", repo_model.ComposeSSHCloneURL("user", "repo"))
219+
}

templates/user/settings/account.tmpl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,6 @@
149149
<button class="ui red button delete-button" data-modal-id="delete-account" data-type="form" data-form="#delete-form">
150150
{{ctx.Locale.Tr "settings.confirm_delete_account"}}
151151
</button>
152-
<a href="{{AppSubUrl}}/user/forgot_password?email={{.Email}}">{{ctx.Locale.Tr "auth.forgot_password"}}</a>
153152
</div>
154153
</form>
155154
</div>

0 commit comments

Comments
 (0)