code.gitea.io/gitea@v1.19.3/modules/git/remote.go (about) 1 // Copyright 2021 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package git 5 6 import ( 7 "context" 8 9 giturl "code.gitea.io/gitea/modules/git/url" 10 ) 11 12 // GetRemoteAddress returns remote url of git repository in the repoPath with special remote name 13 func GetRemoteAddress(ctx context.Context, repoPath, remoteName string) (string, error) { 14 var cmd *Command 15 if CheckGitVersionAtLeast("2.7") == nil { 16 cmd = NewCommand(ctx, "remote", "get-url").AddDynamicArguments(remoteName) 17 } else { 18 cmd = NewCommand(ctx, "config", "--get").AddDynamicArguments("remote." + remoteName + ".url") 19 } 20 21 result, _, err := cmd.RunStdString(&RunOpts{Dir: repoPath}) 22 if err != nil { 23 return "", err 24 } 25 26 if len(result) > 0 { 27 result = result[:len(result)-1] 28 } 29 return result, nil 30 } 31 32 // GetRemoteURL returns the url of a specific remote of the repository. 33 func GetRemoteURL(ctx context.Context, repoPath, remoteName string) (*giturl.GitURL, error) { 34 addr, err := GetRemoteAddress(ctx, repoPath, remoteName) 35 if err != nil { 36 return nil, err 37 } 38 return giturl.Parse(addr) 39 }