gta
Overview
gta
is an application which finds Go packages that have deviated from their upstream
source in git. A typical situation is when a project is using a
monorepo.
At build or continuous integration time, you won't have to build every single package
since you will know which packages (and dependencies) have changed.
Installation
go install github.com/digitalocean/gta/cmd/gta
After installation, you will have a gta
binary in $GOPATH/bin/
Usage
List packages that should be tested since they have deviated from master.
gta -include "$(go list -f '{{ .Module.Path }}')/"
List packages that have deviated from the most recent merge commit.
gta -include "$(go list -f '{{ .Module.Path }}')/"
What gta does
gta
builds a list of "dirty" (changed) packages from master, using git. This is useful for determining which
tests to run in larger monorepo
style repositories.
gta
works by implementing a various set of interfaces, namely the Differ
and Packager
interfaces.
Note: When using this tool, it is common to hit the maximum number of open file descriptors limit set by your OS. On macOS, this may be a measly 256. Consider raising that maximum to something reasonable with:
sudo ulimit -n 4096
License
This application is distributed under the Apache 2 license found in LICENSE