Development workflow - couchbase/sync_gateway GitHub Wiki
This document is geared towards developers, and there is a bias towards an approach that plays as nicely as possible with editors, IDEs, and other tooling at the expense of a bit of extra effort to verify that builds are stable.
Install go and setup $GOPATH
- Install Go
- Set your
$GOPATHenvironment to wherever you want, for example~/Development/gocode
Get the code via go get
go get -u -t github.com/couchbase/sync_gateway/...
Now you have the code and all dependencies in your $GOPATH
Open the code in your editor
Using your favorite editor, open the main.go file in $GOPATH/src/github.com/couchbase/sync_gateway and the code in the sub-packages in $GOPATH/src/github.com/couchbase/sync_gateway/base, etc..
Add/update code and run newly added unit tests
After you've changed the code, run your newly added unit tests:
$ cd $GOPATH/src/github.com/couchbase/sync_gateway
$ go test -v -run YourShinyNewUnitTest
As long as you are adding code and unit tests, repeat this step. Once you're ready to submit a PR, move on.
note: lazy developers can skip the rest of this document and submit a PR based on their changes so far, and depend on the CI system to catch any regressions they've introduced when it runs the full test suite
Get the code via repo and modify $GOPATH
Create a new directory that is outside of your $GOPATH, for example ~/Development/sync_gateway
Follow these README instructions
Copy your changes from your default system $GOPATH
You will need to manually sync your changes from your default system $GOPATH to your $GOPATH under your ~/Development/sync_gateway
Update the manifest/default.xml (optional)
If you updated or added any dependencies, you'll need to:
- Add/update dependencies in your current
$GOPATH - Update the
manifest/default.xmlfile to reflect your changes
Run full unit test suite
$ cd $GOPATH/src/github.com/couchbase/sync_gateway
$ go test ./...
There shouldn't be any test failures at this point
Issue a Pull Request
At this point, you can commit to the git repository under ~/Development/sync_gateway and push to a branch or a personal fork and issue a PR against it.
Testing manifest changes that are on a branch
Instructions for testing that this change didn't break anything by running with the manifest from this PR:
- Follow README instructions for doing a repo based build
pushd godeps/src/github.com/couchbase/sync_gateway/git checkout -t remotes/couchbase/feature/YOUR_FEATURE_BRANCHcp manifest/default.xml ~/Development/sync_gateway/.repo/manifest.xml(may need to change path based on where you did repo init)git checkout masterpopdrepo syncGOPATH=pwd/godeps go test github.com/couchbase/sync_gateway/...