# Use local go modules

When dealing with go modules, sometimes it’s handy to test some changes from a local repository instead of using the upstream one.

Now, go programs are typically relying only on the upstream packages. Take the module file of openqa-mon as example:

module github.com/grisu48/openqa-mon

go 1.11

require (
github.com/BurntSushi/toml v0.3.1
github.com/grisu48/gopenqa v0.3.3
)


When working on openqa-mon, I have to often also work on gopenqa, my underlying go library for accessing openQA - with an intentional horrible name ;-) Now, before pushing some testing changes online, I’d like to see if they are compatible with my current state in openqa-mon. This is where the replace keyword comes in handy.

Instead of relying on the upstream version, you can redirect go to look in a local directory for a certain module. See the syntax of the replace keyword

replace github.com/somedude/someproject => /path/to/local/repository


And here is a concrete example of how I use it

module github.com/grisu48/openqa-mon

go 1.11

require (
github.com/BurntSushi/toml v0.3.1
github.com/grisu48/gopenqa v0.4.1