Developer documentation
If you haven't, please read the Contributing guidelines first.
If you want to make contributions to this package that involves code, then this guide is for you.
First time clone
If this is the first time you work with this repository, follow the instructions below to clone the repository.
Fork this repo
Clone your repo (this will create a
git remote
calledorigin
)Add this repo as a remote:
git remote add upstream https://github.com/unfoldtoolbox/UnfoldMixedModels.jl
This will ensure that you have two remotes in your git: origin
and upstream
. You will create branches and push to origin
, and you will fetch and update your local main
branch from upstream
.
If you have writing rights, you don't have to fork. Instead, simply clone and skip ahead. Whenever upstream is mentioned, use origin instead.
!!! tip "dev
commandYou can also recommend to use
]dev –local UnfoldMixedModels.jlto clone the package to
./dev/UnfoldMixedModelsand add automatically add it to your julia project environment. You could also
]dev –local https://link.com/myFork/UnfoldMixedModels.jl/`
Linting and formatting
Install a plugin on your editor to use EditorConfig. This will ensure that your editor is configured with important formatting settings.
We use https://pre-commit.com to run the linters and formatters. In particular, the Julia code is formatted using JuliaFormatter.jl, so please install it globally first:
julia> # Press ]
pkg> activate
pkg> add JuliaFormatter
To install pre-commit
, we recommend using pipx as follows:
# Install pipx following the link
pipx install pre-commit
With pre-commit
installed, activate it as a pre-commit hook:
pre-commit install
To run the linting and formatting manually, enter the command below:
pre-commit run -a
Now, you can only commit if all the pre-commit tests pass.
Testing
As with most Julia packages, you can just open Julia in the repository folder, activate the environment, and run test
:
julia> # press ]
pkg> activate .
pkg> test
Instead fo running all tests, you can also run the test/setup.jl
to load all required packages, and subsequently run single tests manually either by include("test/test-fit.jl")
or by opening the file and running the specific test/testblock you want to run.
Working on a new issue
We 100% prefer you to commit/submit/share what you have in a state you are comfortable with. If you want to follow (and learn) best-practices read ahead - but we also take your input as it is :)
We try to keep a linear history in this repo, so it is important to keep your branches up-to-date.
Fetch from the remote and fast-forward your local main
git fetch upstream git switch main git merge --ff-only upstream/main
Branch from
main
to address the issue (see below for naming)git switch -c 42-add-answer-universe
Push the new local branch to your personal remote repository
git push -u origin 42-add-answer-universe
Create a pull request to merge your remote branch into the org main.
Branch naming
- If there is an associated issue, add the issue number.
- If there is no associated issue, and the changes are small, add a prefix such as "typo", "hotfix", "small-refactor", according to the type of update.
- If the changes are not small and there is no associated issue, then either create an issue first, or discuss in another channel with the maintainers.
- Use dash separated imperative wording related to the issue (e.g.,
14-add-tests
,15-fix-model
,16-remove-obsolete-files
).
Commit message
- Use imperative or present tense, for instance: Add feature or Fix bug.
- Have informative titles.
- When necessary, add a body with details.
- If there are breaking changes, add the information to the commit message.
Before creating a pull request
Ideally: locally run the tests.
Ideally: Make sure the pre-commit tests pass.
Fetch any
main
updates from upstream and rebase your branch, if necessary:git fetch upstream git rebase upstream/main BRANCH_NAME
Then you can open a pull request and work with the reviewer to address any issues.
Building and viewing the documentation locally
Following the latest suggestions, we recommend using LiveServer
to build the documentation. Here is how you do it:
- Run
julia --project=docs
to open Julia in the environment of the docs. - If this is the first time building the docs
- Press
]
to enterpkg
mode - Run
pkg> dev .
to use the development version of your package - Press backspace to leave
pkg
mode
- Press
- Run
julia> using LiveServer
- Run
julia> servedocs()