BEAST Development¶
Basic Workflow¶
You are encouraged to help maintain and improve the beast. Before doing so,
please familiarize yourself with basic version control and Git workflow
concepts. A good description of the standard fork-branch-pull workflow can be
found here:
Some other useful guides are:
In short, the fork-branch-pull workflow for contributing to the beast
project is:
Create your own ‘fork’ of the official
beastrepositoryCreate purpose-specific ‘branches’ off your ‘fork’
Make changes or additions within the branches
Contribute your modified codes to the
beastproject or share them with your collaborators via ‘pull requests’Keep your fork updated to benefit from continued development of the official version and to minimize version conflicts
Resolve version conflicts as much as possible before sending pull requests
beast follows the same workflow and coding guidelines as
Astropy. The following pages will help you get started with contributing
fixes, code, or documentation (no git or GitHub experience necessary):
Installation¶
If you plan on modifying the beast in addition to running the code, it may
be useful to create a development installation by following the Installation for Developers instructions.
Adding Branches¶
Make sure you are in the directory for your fork of the beast. You will be on branch
masterby default.Create and switch to a branch (here named
beast-dev1):$ git checkout -b beast-dev1To see a list of all branches of the fork, with ‘*’ indicating which branch you are currently working on:
$ git branchTo ‘upload’ this branch to your fork:
$ git push origin beast-dev1To revert back to your fork’s
masterbranch:$ git checkout master
Making Changes¶
It is recommended that branches have a single purpose; for example, if you are working
on adding a test suite, improving the fitting algorithm, and speeding up some task,
those should be in separate branches (e.g. add-test-suite, improve-fitting-algorithm
and beast-dev1).
Switch to the branch you wish to work off of:
$ git checkout beast-dev1Make changes to the existing files as you wish and/or create new files.
To see what changes have been made at any time:
$ git statusTo stage any new or edited file (e.g., ‘newfile.py’) in preparation for committing:
$ git add newfile.pyTo add all edited files (not recommended unless you are sure of all your changes):
$ git add -ATo ‘commit’ all changes after adding desired files:
$ git commit -m 'brief comments describing changes'
Commit messages should be short but descriptive.
To see the status of your changed files:
$ git statusTo view any differences between a file and the last committed version:
$ git diff PathToFile/filenameTo undo all changes made to a specific file since the last commit:
$ git checkout PathToFile/filenameTo sync changes made to the branch locally with your GitHub repository:
$ git push origin beast-dev1
Test Changes¶
It is a good idea to test that your changes have not caused problems. In the
base beast directory the following commands may be run to do this.
Run existing tests, including a regression test against a full beast model
run. Once the command below has finished, the coverage of the tests can
be viewed in a web browser by pointing to files in the htmlconv subdirectory
(which gets produced when the tests are run).
$ tox -e test -- --remote-data --coverage
Make sure the documentation can be created.
$ tox -e build_docs
The resulting HTML files are placed in the docs/_build/html subdirectory, and
can be viewed in a web browser.
Submitting a Pull Request¶
Once you have changes that you’d like to contribute back to the upstream branch,
you can open a pull request for review. Pull requests can be submitted at
https://github.com/BEAST-Fitting/beast/pulls. If you push any commits to your
origin repository in a development branch (beast-dev1), then a “Compare &
pull request” button should appear at the top of this site. Briefly describe the
changes/additions you made in the comments section and submit the pull request.
Staying up-to-date¶
The beast project’s official repository will be updated from time to time
to accommodate bug fixes, improvements and new features. You can keep your
fork’s master repository up-to-date with the following steps:
Switch to your fork’s
masterbranch:$ git checkout masterFetch the project’s up-to-date distribution:
$ git fetch upstreamMerge the official (upstream)
masterbranch with your fork’smasterbranch:$ git merge upstream/masterSync this change with your origin repository:
$ git push origin master
BEAST on Slack¶
There is a beast space on Slack. Email kgordon@stsci.edu for an invite.
Visualizing Repository Commits¶
The commits to the beast repository can be visualized using gource. This
creates a movie showing the time evolution of the code and who made the
changes.
Version created 22 Jan 2018: <http://stsci.edu/~kgordon/beast/beast_repo.mp4>
Command to create it:
$ gource -s .06 -1280x720 --auto-skip-seconds .1 --multi-sampling --stop-at-end --key --highlight-users --hide mouse,progress --file-idle-time 0 --max-files 0 --background-colour 000000 --font-size 22 --title "This is beast" --output-ppm-stream - --output-framerate 30 | avconv -y -r 30 -f image2pipe -vcodec ppm -i - -b 65536K beast_repo.mp4