Permalink
Newer
100644
176 lines (136 sloc)
7.45 KB
3
## Prerequisites
4
5
Before you start contributing, review these [basic guidelines](https://www.cockroachlabs.com/docs/stable/contribute-to-cockroachdb.html) on finding a project, determining its complexity, and learning what to expect in your collaboration with the Cockroach Labs team.
6
9
1. Install the following prerequisites, as necessary:
10
- A C++ compiler that supports C++11. Note that GCC prior to 6.0 doesn't
13
the Makefile enforces the specific version required, as it is updated
14
frequently.
15
- Git 1.8+
16
- Bash (4+ is preferred)
17
- GNU Make (3.81+ is known to work)
18
- CMake 3.1+
19
- Autoconf 2.68+
20
- Optional: NodeJS 6.x and Yarn 0.22.0+. Required when compiling protocol
27
```shell
28
go get -d github.com/cockroachdb/cockroach
29
cd $GOPATH/src/github.com/cockroachdb/cockroach
30
```
33
that the first time you run `make`, it can take some time to download and
34
install various dependencies. After running `make build`, the `cockroach`
35
executable will be in your current directory and can be run as shown in the
40
- The default binary contains core open-source functionally covered by the
41
Apache License 2 (APL2) and enterprise functionality covered by the
42
CockroachDB Community License (CCL). To build a pure open-source (APL2)
43
version excluding enterprise functionality, use `make buildoss`. See this
44
[blog post] for more details.
45
46
[blog post]: https://www.cockroachlabs.com/blog/how-were-building-a-business-to-last/
53
can run `build/builder.sh make generate` from the repository root to get the
54
intended result.
58
- To add or update a Go dependency:
59
- See [`build/README.md`](build/README.md) for details on adding or updating
60
dependencies.
70
- All contributors need to sign the [Contributor License Agreement](https://cla-assistant.io/cockroachdb/cockroach).
73
If you are working on your own fork, see [this tip](http://blog.campoy.cat/2014/03/github-and-go-forking-pull-requests-and.html)
92
# Run a specific sql logic subtest
93
make test PKG=./pkg/sql TESTS='TestLogic$$/select$$'
98
Logs are disabled during tests by default. To enable them, include
99
`TESTFLAGS="-v -show-logs"` as an argument the test command:
100
101
```shell
102
make test ... TESTFLAGS="-v -show-logs"
103
```
104
105
When you're ready to commit, be sure to write a Good Commit Message™. Consult
106
https://github.com/erlang/otp/wiki/Writing-good-commit-messages if you're
107
not sure what constitutes a Good Commit Message™.
108
In addition to the general rules referenced above, please also prefix your
109
commit subject line with the affected package, if one can easily be chosen.
110
For example, the subject line of a commit mostly affecting the
111
`server/serverpb` package might read: "server/serverpb: made great again".
112
Commits which affect many packages as a result of a shared dependency change
113
should probably begin their subjects with the name of the shared dependency.
114
Finally, some commits may need to affect many packages in a way which does
115
not point to a specific package; those commits may begin with "*:" or "all:"
116
to indicate their reach.
127
and contain a substantial (but not overwhelming) unit of work. You may also
128
want to `git fetch origin` and run
135
- Then [create a pull request using GitHub’s UI](https://help.github.com/articles/creating-a-pull-request). If you know of
136
another GitHub user particularly suited to reviewing your pull request, be
137
sure to mention them in the pull request body. If you possess the necessary
138
GitHub privileges, please also [assign them to the pull request using
139
GitHub's UI](https://help.github.com/articles/assigning-issues-and-pull-requests-to-other-github-users/).
143
contains multiple commits, address each piece of feedback by amending that
144
commit to which the particular feedback is aimed. Wait (or ask) for new
145
feedback on those commits if they are not straightforward. An `LGTM` ("looks
146
good to me") by someone qualified is usually posted when you're free to go
147
ahead and merge. Most new contributors aren't allowed to merge themselves;
148
in that case, we'll do it for you.
155
`/debug/requests`. It has a breakdown of the recent traced requests, in
156
particularly slow ones. Two families are traced: `node` and `coord`, the
157
former (and likely more interesting one) containing what happens inside of
158
`Node`/`Store`/`Replica` and the other inside of the coordinator
161
heap and cpu profiles; [this golang blog post](http://blog.golang.org/profiling-go-programs) explains it extremely well and
162
[this one by Dmitry Vuykov](https://software.intel.com/en-us/blogs/2014/05/10/debugging-performance-issues-in-go-programs)
169
make acceptance TESTS='TestPut$$' TESTFLAGS='-v -d 1200s -l .' TESTTIMEOUT=1210s
170
```
171