The development of a feature for this repository is inspired from the workflow described by Vincent Driessen:
-
Create an issue on the github repository
Discussion about the implementation details should occur within this issue.
-
Checkout
main
and pull the latest changesgit checkout develop
git pull
-
Create a branch from
develop
to work on your issue (see below, the "Branch name convention" section)git checkout -b feature-myfeature
We have agreed to use only branch names that have a - instead of / between words.
-
Push your local branch on the remote server
origin
git push
If your branch does not exist on the remote server yet, git will provide you with instructions, simply follow them
-
Submit a pull request (PR)
- Follow the steps of the github help to create the PR.
- Please note that you PR should be directed from your branch (for example
myfeature
) towards the branchmain
-
Describe briefly (i.e. in one or two lines) what you changed in the
CHANGELOG.md
file. End the description by the number in parenthesis(#<your PR number>)
-
Commit the changes to the
CHANGELOG.md
file -
Write the PR number in the corresponding issue so that they are linked. Write it with one of the special keywords so that the issue will be automatically closed when the PR is merged (example:
Closes #<your issue number>
) -
Ask for review of your PR
-
Check that, after this whole process, you branch does not have conflict with
main
(github prevents you to merge if there are conflicts). In case of conflicts you are responsible to fix them on your branch before your merge (see below "Fixing merge conflicts" section) -
(if approved) Merge the PR into
main
and delete the branch on which you were working. In the merge message on github, you can notify people who are currently working on other branches that you just merged intomain
, so they know they have to check for potential conflicts withmain
Avoid large merge conflict by merging the updated main
versions in your branch.
In case of conflicts between your branch and main
you must solve them locally.
-
Get the latest version of
main
git checkout main
git pull
-
Switch to your branch
git checkout <your branch>
-
Merge
main
into your branchgit merge main
-
The conflicts have to be manually resolved
The convention is to always have feature/
in the branch name. The myfeature
part should describe shortly what the feature is about (separate words with _
).
Try to follow these conventions for commit messages:
- Keep the subject line short (i.e. do not commit more than a few changes at the time)
- Use imperative for commit messages
- Do not end the commit message with a period You can use
git commit --amend
to edit the commit message of your latest commit (provided it is not already pushed on the remote server).
With --amend
you can even add/modify changes to the commit.
As this is a hackathon project, the project structure is not yet fully defined. This will be updated in the future.