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

https://github.com/faceair/gotit

Help You Got It (golang dependencies)
https://github.com/faceair/gotit

golang package-manager proxy

Last synced: 7 days ago
JSON representation

Help You Got It (golang dependencies)

Awesome Lists containing this project

README

        

Gotit


Help You Got It (golang dependencies)


License
Travis branch
Coverage Status
Go Report Card
GoDoc

[中文文档](README.zh.md)

Gotit is a Golang package cache proxy, proudly powered by [betproxy](https://github.com/faceair/betproxy).

Just change the proxy settings of your package management tool to Gotit, and Gotit will automatically pull, cache and update all dependencies for you.

## Features

- **Faster** Pulling is very fast when hitting the cache.
- **Reliable** Gotit can continue working on the cache after disconnecting or deleting the origin repository.
- **Transparency** In theory, Gotit can work with all Go package management tools. (needs to skip HTTPS certificate verification)

## Deployment

### Requirements

Make sure the `git` and `go` executable is on your `PATH` variable.

### Installation

```
go get github.com/faceair/gotit
```

### Run

Run Gotit on port 8080
```
$GOPATH/bin/gotit -port 8080
```
Run `gotit` directly see help for other commands. Gotit use system `GOPATH` to save dependencies by default.

### CI or individual use direct trust certificate (recommended)

```
# Import environment variables and certificates
export HTTPS_PROXY=http://127.0.0.1:3128
curl -o /usr/local/share/ca-certificates/gotit.crt http://127.0.0.1:3128/ssl && update-ca-certificates

# Normal use
go get -v github.com/golang/dep/cmd/dep
go get -v github.com/axw/gocov/gocov
go get -v github.com/AlekSi/gocov-xml
go get -v golang.org/x/lint/golint
dep ensure -v
go mod download
glide install -v

# Delete the certificate after the build
rm /usr/local/share/ca-certificates/gotit.crt && update-ca-certificates
```

### Configure dependency management tool

If you are concerned about the security of importing certificates, you can try to bypass the HTTPS verification of the package management tool.

#### dep

dep don't support skip HTTPS certificate verification, we need [patch](https://github.com/faceair/dep/commit/43c5e6bf4597bc644a9326d16849b986076b7921) dep. You can build it yourself in this [fork repository](https://github.com/faceair/dep) or [download modified binary files](https://github.com/faceair/dep/releases/latest).

Then set HTTPS_PROXY to Gotit address
```
HTTPS_PROXY=http://127.0.0.1:8080 dep ensure -v
```
or
```
export HTTPS_PROXY=http://127.0.0.1:8080
dep ensure -v
```

#### glide

glide also need a [patch](https://github.com/faceair/glide/commit/54b926f67677ed3a5e1b6354c491907d8e2cfabf), [download binary directly](https://github.com/faceair/glide/releases/latest).

```
HTTPS_PROXY=http://127.0.0.1:8080 glide install
```

#### go get

```
HTTPS_PROXY=http://127.0.0.1:8080 GIT_SSL_NO_VERIFY=true go get -v -insecure github.com/faceair/gotit
```

## FAQ

1. When does Gotit update the repository?

After the client pulls the code, Gotit checks the repository for updates. So if you do not update to the latest version at a time, you can wait and try again.

2. What is the difference between Gotit and the forward proxy with cache?

Pull code in git http protocol is a post request, it cannot be cached.