mirror of
https://github.com/CartoDB/crankshaft.git
synced 2024-11-01 10:20:48 +08:00
58 lines
1.8 KiB
Markdown
58 lines
1.8 KiB
Markdown
# Development process
|
|
|
|
For any modification of crankshaft, such as adding new features,
|
|
refactoring or bugfixing, a topic branch must be created out of the `develop`.
|
|
|
|
Modifications are done inside `src/pg/sql` and `src/py/crankshaft`.
|
|
|
|
Take into account:
|
|
|
|
* Tests must be added for any new functionality
|
|
(inside `src/pg/test`, `src/py/crankshaft/test`) as well as to
|
|
detect any bugs that are being fixed.
|
|
* Add or modify the corresponding documentation files in the `doc` folder.
|
|
* Naming conventions for function names:
|
|
- use `CamelCase`
|
|
- prefix "public" functions with `CDB_`. E.g: `CDB_SpatialMarkovTrend`
|
|
- prefix "private" functions with an underscore. E.g: `_CDB_MyObscureInternalImplementationDetail`
|
|
|
|
Once the code is ready to be tested, update the local development installation
|
|
with `sudo make install`.
|
|
This will update the 'dev' version of the extension in `src/pg/` and
|
|
make it available to PostgreSQL.
|
|
|
|
Run the tests with `make test`.
|
|
|
|
Update extension in a working database with:
|
|
|
|
```sql
|
|
ALTER EXTENSION crankshaft UPDATE TO 'current';
|
|
ALTER EXTENSION crankshaft UPDATE TO 'dev';
|
|
```
|
|
|
|
If the extension has not previously been installed in a database,
|
|
it can be installed directly with:
|
|
```sql
|
|
CREATE EXTENSION IF NOT EXISTS plpythonu;
|
|
CREATE EXTENSION IF NOT EXISTS postgis;
|
|
CREATE EXTENSION crankshaft WITH VERSION 'dev';
|
|
```
|
|
|
|
Once the feature or bugfix is completed and all the tests are passing
|
|
a pull request shall be created, reviewed by a peer
|
|
and then merged back into the `develop` branch once all the CI tests pass.
|
|
|
|
|
|
## Relevant development targets in the Makefile
|
|
|
|
```shell
|
|
# Show a short description of the available targets
|
|
make help
|
|
|
|
# Generate the extension scripts and install the python package.
|
|
sudo make install
|
|
|
|
# Run the tests against the installed extension.
|
|
make test
|
|
```
|