An open API service indexing awesome lists of open source software.

https://github.com/digitalocean/gta

gta: do transitive analysis to find packages whose dependencies have changed
https://github.com/digitalocean/gta

Last synced: about 1 year ago
JSON representation

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

Awesome Lists containing this project

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](https://www.digitalocean.com/blog/taming-your-go-dependencies/).
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](gta.gif)

## Installation

```sh
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.

```sh
gta -include "$(go list -f '{{ .Module.Path }}')/"
```

List packages that have deviated from the most recent merge commit.

```sh
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](LICENSE)