Sometimes compiling the master branch isn't enough. Let's say you just heard the new `develop` branch of tendermint has an awesome new feature and you want to try it out before it makes it into master (in a few weeks). That is pretty simple. Simply go into the `tendermint`, `basecoin`, etc. repo and compile as above. (Note in tendermint and basecoin, make install automatically gets the newest vendor deps, so you can skip that step)
Great! Now when I run `tendermint` I have the newest of the new, the develop branch! But please note that this branch is not considered production ready and may have issues. This should only be done if you want to develop code for the future and run locally.
But wait, I want to mix and match. There is a bugfix in `go-p2p:persistent_peer` that I want to use with tendermint. How to compile this. I will show with a simple example, please update the repo and commit numbers for your usecase. Also, make sure these branches are compatible, so if `persistent_peer` is close to `master` it should work. But if it is 15 commits ahead, you will probably need the `develop` branch of tendermint to compile with it. But I assume you know your way around git and can figure that out.
In the dependent repo:
```
cd $GOPATH/src/github.com/tendermint/go-p2p
git checkout persistent_peer
git pull
# double-check this makes sense or if it is too far off
git log --oneline --decorate --graph
# get the full commit number here
git log | head -1
```
In the main repo (tendermint, basecoin, ...) where the binary will be built:
```
cd $GOPATH/src/github.com/tendermint/tendermin
git checkout master
git pull
# -> edit glide.lock, set the version of go-p2p (for example)
# to the commit number you got above (the 40 char version)
make get_vendor_deps
make install
make test
```
Great, now you just compiled the master branch of tendermint along with the bugfix for one of the dependencies! Maybe you don't have to wait until the next bugfix release after all.