From b433f91bea5928b7337e5c892c085145f204397e Mon Sep 17 00:00:00 2001
From: Michael Hoennig <michael@hoennig.de>
Date: Mon, 29 Apr 2019 14:25:45 +0200
Subject: [PATCH] section about HOWTO- tags

---
 README.md | 47 ++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 40 insertions(+), 7 deletions(-)

diff --git a/README.md b/README.md
index a45feedc..2add5d33 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,16 @@
-= hsadminNg Development
+# hsadminNg Development
 
-== Setting up the Development Environment
+## Setting up the Development Environment
 
 You'll often need to execute `./gradlew`, therefore we suggest to define this alias:
 
     alias gw='./gradlew'
 
-== Building the Application with Test Execution
+## Building the Application with Test Execution
 
 gw build
 
-== Starting the Application
+## Starting the Application
 
 Either simply:
 
@@ -20,16 +20,16 @@ or with a specific port:
 
     SERVER_PORT=8081 ./gradlew bootRun
 
-== Running JUnit tests with branch coverage
+## Running JUnit tests with branch coverage
 
-=== for IntelliJ IDEA
+### for IntelliJ IDEA
 
 see: https://confluence.jetbrains.com/display/IDEADEV/IDEA+Coverage+Runner
 
 Either apply it to specific test configurations or,
 better, delete the previous test configurations and amend the JUnit template.
 
-== Git Workflow
+## Git Workflow
 
 The jhipster-generated git branch tracks the history of the JDL model file
 and the generated source code. The project has to be resetted to a clean state
@@ -63,3 +63,36 @@ and the generated source code. The project has to be resetted to a clean state
 
     git checkout master
     git merge jhipster-generated
+
+## HOWTO do this and that
+
+There are git tags on some commits which show how to add certian features.
+
+Find all of such tags with:
+
+    git tag | grep HOWTO
+
+### creating HOWTO commits
+
+If you want to add such a commit, make sure that it contains no clutter
+(no changes which are not necessary for whatever the commit is about to explain),
+and is complete with all unit tests, code coverage, pitest and other checks.
+Otherwise the next developer would run into the same problems again.
+
+One way to keep the commit clean, is to develop it on a local branch.
+If any other changes (e.g. bugfixes, API extensions etc.) are necessary,
+apply these only to the master or cherry-pick just these to the master,
+then rebase your local branch. Do not forget to run all checks locally:
+
+    gw clean check pitest # might need over an hour
+
+(Check the pitest section for speeding up pitest.)
+
+To create and push a new tag use:
+
+    git tag HOWTO-... master
+    git push origin HOWTO-...
+
+After you've moved an existing the tag to another commit, you can use:
+
+    git push origin HOWTO-... --force