digitalocean/gta

gta: do transitive analysis to find packages whose dependencies have changed

224

stars

211

commits

Go

primary language

Jun 17, 2026

updated

README

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.

GTA in Action

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

Contributors

bhcleek

122 commits

ndombroski

18 commits

anitgandhi

13 commits

zbarahal-do

9 commits

digitalocean/gta

gta: do transitive analysis to find packages whose dependencies have changed

224

stars

211

commits

Go

primary language

Jun 17, 2026

updated

README

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.

GTA in Action

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

Contributors

bhcleek

122 commits

ndombroski

18 commits

anitgandhi

13 commits

zbarahal-do

9 commits

Languages

Go

97.8%

Shell

2.2%