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  }