summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2018-02-01 18:19:51 +0200
committerLars Wirzenius <liw@liw.fi>2018-02-01 18:19:51 +0200
commitc53df2a151c2b415f48cedf2abefde1b85138c06 (patch)
treecb71b47c122001d57b7a882cd1e1b34d3a7a4662
parent772a41ef38ef678f601d218b584affa0915b9ea7 (diff)
downloadqvisqve-c53df2a151c2b415f48cedf2abefde1b85138c06.tar.gz
Add: merge workflow
-rw-r--r--README58
1 files changed, 58 insertions, 0 deletions
diff --git a/README b/README
index a8a62e1..255a6d9 100644
--- a/README
+++ b/README
@@ -7,6 +7,64 @@ server. Originally developed to help development of Qvarn
credentials** grant. Later on, we hope to develop this into an OpenID
Connect provider.
+Merging workflow
+-----------------------------------------------------------------------------
+
+All development will happen on branches other than master. Changes are
+merged into master, when they're ready to be included into the next
+release. If the feature is not ready to be enabled by default, the
+merge will include a feature flag that disables the feature by
+default. Merging should ideally happen about daily.
+
+Before a merge happens, the changes to be merged will be reviewed and
+OK'd by someone else than the their author. The reviewer does the
+merge.
+
+The branch to be merged MUST be rebased onto the commit in master. The
+actual merge MUST NOT have any conflicts.
+
+The merge MUST be done using --no-ff, i.e., with a merge commit, even
+if only one commit is being merged. The merge commit MUST say who
+reviewed and accepted it, by including a `Signed-off-by` line. If
+there are more than one reviewer, they should all be added to the
+merge commit.
+
+Every commit in the master branch MUST pass `./check`.
+
+The merge process is described below. It starts after the changes have
+been reviewed and are ready to be merged.
+
+* `git checkout feature-branch`
+
+ Check out the changes to be merged.
+
+* `git checkout -b feature-branch-rebase`
+
+ Create a new branch, where it's safe to rebase.
+
+* `git rebase master`
+
+ Rebase onto master. Resolve any conflicts. Hopefully there aren't
+ any.
+
+* `git checkout master`
+
+ Checkout master, which is where the changes will be merged to.
+
+* `git merge --no-ff --no-commit feature-branch-rebase`
+
+ Merge, without committing the changes.
+
+* `./check`
+
+ Run tests. If there are any problem, abort merge process.
+
+* `git commit -s`
+
+ Commit the merge, adding the `Signed-off-by` line to the commit
+ message. The merge commit message should summarise the changes made.
+
+
Legalese
-----------------------------------------------------------------------------