Skip to content

Latest commit

 

History

History
87 lines (64 loc) · 3.19 KB

CONTRIBUTING.md

File metadata and controls

87 lines (64 loc) · 3.19 KB

How to contribute

Issue Submission Guidlines

  • If you have a problem with your code, please ask your question on stackoverflow.com or the user group
  • It will be far, far easier for others to understand your problem or bug if you demonstrate it with a short example on http://jsfiddle.net/ or on http://bl.ocks.org/
  • For bugs and feature requests submit a github issue
    • Please include the version of DC you are using
    • If you can, please try the latest version of DC on the master branch to see if your issue has already been addressed or is otherwise affected by recent changes.

Pull Request Guidelines

  • Fork the repository
  • Make changes to the files in src/ not dc.js
  • Add tests to spec/. Feel free to create a new file if needed.
  • Run grunt server and go to http://localhost:8888/spec to develop your tests.
  • Run grunt lint to fix any final linting issues via jshint.
  • Run grunt test to confirm that all tests will pass on phantomjs.
  • Run grunt jshint and grunt jscs to confirm that your code meets the dc.js style guidelines
  • Commit your changes to src/* and spec/* but not any build artifacts. (Build artifacts include dc.*js*, web/docs/*, web/js/*)
  • Submit a pull request
  • If you merge master or another branch into your patchset, please rebase against master.
  • The DC maintainer team will review and build the artifacts when merging
  • If you continue making changes to your fork of dc.js, create a branch for each pull request

Coding Conventions

  • Avoid tabs and trailing whitespace
  • Please try to follow the existing code formatting
  • We use jshint and jscs to verify most of our coding conventions

It helps keep on top of the conventions if you create a git pre-commit hook .git/hooks/pre-commit:

#!/usr/bin/env sh

grunt jshint
grunt jscs

(You also need to make it executable with chmod u+x .git/hooks/pre-commit)

Or you can just run the commands manually before committing.

Testing Notes

Running grunt server will host the jasmine specs at http://localhost:8888/spec. Please use .transitionDuration(0) for all chart tests.

Merging Pull Requests

for maintainers

Ensure origin looks like this in .git/config. The key element here is the second fetch statement

[remote "origin"]
  url = git@github.com:dc-js/dc.js.git
  fetch = +refs/heads/*:refs/remotes/origin/*
  fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

Run these commands (or their approximation):

# clean master branch
git stash

# update node modules that may be pulled into `web/`
npm update

# double check your aren't going to blow away local commits
git fetch origin
git checkout master
git diff origin/master

# Merge - subsitute the PR number for $PR. Warning this runs git reset --hard, ensure you are ready
grunt merge:$PR

# manually verify the changes and review the demos/examples

# deploy
git push origin master

# review changes before site deployment
git diff origin/gh-pages master:web
grunt web

If needed, the baseline test for the demos can be rebuilt by running grunt update-stock-regression.