How to contribute to the DQR¶
The DQR uses a fork-and-pull development model. This workflow is described below (adapted from the LALSuite Contribution Guide, written by Duncan Macleod).
All changes to the Data Quality Report code must be proposed via a merge request, which must then be reviewed by both your reviewers and one of the project maintainers. If you with to contribute new code, or changes to existing code, please follow the following development workflow.
Make a fork (copy) of the detchar repository¶
You only need to do this once
Go to the DQR repository home page.
Click on the Fork button, that should lead you here.
If you can’t see the Fork button, make sure that you are logged in by checking for your account profile photo in the top right-hand corner of the screen.
Clone your fork¶
You can do this easily from the command line via:
>> git clone https://git.ligo.org/<your-user-name>/data-quality-report.git
Updating your fork¶
If you already have a fork of the DQR, and are starting work on a new project you can link your clone to the main (upstream) repository and pull in changes that have been merged since the time you created your fork, or last updated:
Link your fork to the main repository.:
>> cd data-quality-report >> git remote add upstream https://git.ligo.org/detchar/data-quality-report.git
Note: If you are using ssh instead of https, the URL should be git:@git.ligo.org:detchar/data-quality-report.git.
Fetch new changes from the upstream repo.:
>> git fetch upstream
Creating a new feature branch¶
All changes should be developed on a feature branch, in order to keep them separate from other work, simplifying review and merge once the work is done.
To create a new feature branch::
>> git checkout -b my-new-feature upstream/master
Hack away¶
Develop the changes you would like to introduce, using git commit to finalise a specific change. Ideally commit small units of change often, rather than creating one large commit at the end, this will simplify review and make modifying any changes easier.
Commit messages should be clear, identifying which code was changed, and why. Common practice is to use a short summary line (<50 characters), followed by a blank line, then more information in longer lines. A tutorial of the changes you’re likely to make is available: How to add a new Data Quality Product.
Push your changes to the remote copy of your fork on git.ligo.org.:
>> git push origin my-new-feature
Note: For the first push of any new feature branch, you will likely have to use the -u/–set-upstream option to push to create a link between your new branch and the origin remote.:
>> git push --set-upstream origin my-new-feature
Please note: if you need to add documentation for, e.g., a new task, you can do this within ~/doc/source/tasks. Simply create a new file, add and commit it to the repo, and then push your changes to your fork.
Open a merge request¶
When you feel that your work is finished, you should create a merge request to propose that your changes be merged into the main (upstream) repository.
After you have pushed your new feature branch to origin, you should find a new button on the DQR repository home page inviting you to create a merge request out of your newly pushed branch. You should click the button, and proceed to fill in the title and description boxes on the merge request page.
Please provide a descriptive title and provide the pertinent details in the description box. This includes
the name of your new product.
the permissions awarded to the product (pass, fail, and/or human_input_needed).
how the product will be managed (within DQR’s DAG or external to it).
if it will be run within the DQR’s DAG, please clearly enumerate all dependencies (e.g.: gwpy >= 0.12.0)
if it will run outside the DQR’s DAG, please specify where it will be run and how it those processes will be monitored
how you’ve tested the new code.
how you’ve tested the new product for efficacy.
If it is possible when you open the merge request, assign it to one of your reviewers. Otherwise, please tag @reed.essick (or one of the other maintainers) and they will assign someone to review the change.