build: golang.org/x/build/maintner/godata Index | Examples | Files

package godata

import "golang.org/x/build/maintner/godata"

Package godata loads the Go project's corpus of Git, Github, and Gerrit activity into memory to allow easy analysis without worrying about APIs and their pagination, quotas, and other nuisances and limitations.

Index

Examples

Package Files

godata.go

func Dir Uses

func Dir() string

Dir returns the directory containing the cached mutation logs.

func Get Uses

func Get(ctx context.Context) (*maintner.Corpus, error)

Get returns the Go project's corpus, containing all Git commits, Github activity, and Gerrit activity and metadata since the beginning of the project.

The initial call to Get will download approximately 350-400 MB of data into a directory "golang-maintner" under your operating system's user cache directory. Subsequent calls will only download what's changed since the previous call.

Even with all the data already cached on local disk, a call to Get takes approximately 5 seconds to read the mutation log into memory. For daemons, use Corpus.Update to incrementally update an already-loaded Corpus.

The in-memory representation is about 25% larger than its on-disk size. It's currently under 500 MB.

See https://godoc.org/golang.org/x/build/maintner#Corpus for how to walk the data structure. Enjoy.

Code:

corpus, err := godata.Get(context.Background())
if err != nil {
    log.Fatal(err)
}
num := 0
corpus.GitHub().ForeachRepo(func(gr *maintner.GitHubRepo) error {
    return gr.ForeachIssue(func(gi *maintner.GitHubIssue) error {
        return gi.ForeachComment(func(*maintner.GitHubComment) error {
            num++
            return nil
        })
    })
})
fmt.Printf("%d GitHub comments on Go repos.\n", num)

Package godata imports 7 packages (graph) and is imported by 11 packages. Updated 2017-08-22. Refresh now. Tools for package owners.