git library for Go

前端 未结 6 1919
时光说笑
时光说笑 2021-02-03 23:15

As a pet project, I want to develop a note taking app using git as storage backend. (I suspect this doesn\'t exist yet, given this guy\'s blog post: http://jarofgreen.co.uk/2012

6条回答
  •  清酒与你
    2021-02-03 23:43

    use git as storage backend

    Then the Go library fluxcd/go-git-providers can come in handy.

    go-git-providers is a general-purpose Go client for interacting with Git providers' APIs (e.g. GitHub, GitLab, Bitbucket).

    Example:

    package github_test
    
    import (
        "context"
        "fmt"
    
        "github.com/fluxcd/go-git-providers/github"
        "github.com/fluxcd/go-git-providers/gitprovider"
        gogithub "github.com/google/go-github/v32/github"
    )
    
    func ExampleOrgRepositoriesClient_Get() {
        // Create a new client
        ctx := context.Background()
        c, err := github.NewClient()
        checkErr(err)
    
        // Parse the URL into an OrgRepositoryRef
        ref, err := gitprovider.ParseOrgRepositoryURL("https://github.com/fluxcd/flux")
        checkErr(err)
    
        // Get public information about the flux repository.
        repo, err := c.OrgRepositories().Get(ctx, *ref)
        checkErr(err)
    
        // Use .Get() to aquire a high-level gitprovider.OrganizationInfo struct
        repoInfo := repo.Get()
        // Cast the internal object to a *gogithub.Repository to access custom data
        internalRepo := repo.APIObject().(*gogithub.Repository)
    
        fmt.Printf("Description: %s. Homepage: %s", *repoInfo.Description, internalRepo.GetHomepage())
        // Output: Description: The GitOps Kubernetes operator. Homepage: https://docs.fluxcd.io
    }
    

提交回复
热议问题