You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2018/11/14 16:40:25 UTC

[incubator-plc4x] branch develop updated: - Added some documentation on the branching model

This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git


The following commit(s) were added to refs/heads/develop by this push:
     new 77ffb14  - Added some documentation on the branching model
77ffb14 is described below

commit 77ffb14f2be58f2bdc3fe9fd67c983ef9ac8a3d1
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Wed Nov 14 17:40:21 2018 +0100

    - Added some documentation on the branching model
---
 src/site/asciidoc/developers/contributing.adoc | 79 ++++++++++++++++++++++++++
 src/site/asciidoc/developers/release.adoc      | 17 +++---
 2 files changed, 88 insertions(+), 8 deletions(-)

diff --git a/src/site/asciidoc/developers/contributing.adoc b/src/site/asciidoc/developers/contributing.adoc
index 520bb35..4a05e0e 100644
--- a/src/site/asciidoc/developers/contributing.adoc
+++ b/src/site/asciidoc/developers/contributing.adoc
@@ -17,3 +17,82 @@
 
 == Contributing
 
+=== Branching model
+
+The PLC4X project uses the following branching model.
+
+The same model is used for a wide variety of other projects, so it should be pretty straight forward.
+
+- `master` contains the latest released state.
+- Development is performed on the `develop` branch.
+- Features are developed in Feature-Branches with a prefix `feature/`
+- Each minor release has a corresponding release branch `rel/{major-version}.{minor-version}`
+- A release branch is spawned from `develop` only
+- Bugfix releases don't have a dedicated release branch, they are just performed on the corresponding minor versions release branch
+
+// Use http://www.webgraphviz.com/ for checking this ...
+[graphviz, plc4x-branching-model, png]
+----
+digraph g{
+    rankdir="LR";
+    pad=0.5;
+    nodesep=0.6;
+    ranksep=0.5;
+    forcelabels=true;
+
+    node [fixedsize=true,
+        shape=circle, style=empty, color="#909090", height=0.5
+        fontcolor="deepskyblue", font="Arial bold", fontsize="14pt" ];
+    edge [color="#909090", penwidth=3];
+
+    node  [group="master"];
+    m1    [label="master", width=0.9];
+    m2   [label="0.2.0", width=0.9];
+    m3   [label="0.2.1", width=0.9];
+    m4   [label="", shape=circle, color="#b0b0b0"];
+    m1 -> m2 -> m3
+    m3 -> m4 [color="#b0b0b0", style=dashed];
+
+    node  [group="rel/0.1", Ylabel="hurz"];
+    r11   [label="rel/0.1", width=2, shape=box];
+    r12   [label="0.1.0-SNAPSHOT", width=2, shape=box];
+    r13   [label="0.1.0", width=0.9];
+    r14   [label="0.1.1-SNAPSHOT", width=2, shape=box];
+    r15   [label="", shape=circle, color="#b0b0b0"];
+    r11 -> r12 -> r13 -> r14;
+    r14 -> r15 [color="#b0b0b0", style=dashed];
+    r13 -> m1
+
+    node  [group="rel/0.2", Ylabel="hurz"];
+    r21   [label="rel/0.2", width=2, shape=box];
+    r22   [label="0.2.0-SNAPSHOT", width=2, shape=box];
+    r23   [label="0.2.0", width=0.9];
+    r24   [label="0.2.1-SNAPSHOT", width=2, shape=box];
+    r25   [label="0.2.1", width=0.9];
+    r26   [label="0.2.2-SNAPSHOT", width=2, shape=box];
+    r27   [label="", shape=circle, color="#b0b0b0"];
+    r21 -> r22 -> r23 -> r24 -> r25 -> r26;
+    r26 -> r27 [color="#b0b0b0", style=dashed];
+    r23 -> m2
+    r25 -> m3
+
+    node  [group="develop"];
+    d1    [label="develop", width=2, shape=box];
+    d2    [label="0.1.0-SNAPSHOT", width=2, shape=box];
+    d3    [label="0.1.0-SNAPSHOT", width=2, shape=box];
+    d4    [label="0.2.0-SNAPSHOT", width=2, shape=box];
+    d5    [label="0.2.0-SNAPSHOT", width=2, shape=box];
+    d6    [label="0.2.0-SNAPSHOT", width=2, shape=box];
+    d7    [label="0.3.0-SNAPSHOT", width=2, shape=box];
+    d8    [label="0.3.0-SNAPSHOT", width=2, shape=box];
+    d9    [label="0.3.0-SNAPSHOT", width=2, shape=box];
+    d10    [label="", shape=circle, color="#b0b0b0"];
+    d1 -> d2 -> d3 -> d4 -> d5 -> d6 -> d7 -> d8 -> d9;
+    d9 -> d10 [color="#b0b0b0", style=dashed];
+
+    d3 -> r11
+    d6 -> r21
+}
+----
+
+
diff --git a/src/site/asciidoc/developers/release.adoc b/src/site/asciidoc/developers/release.adoc
index 26851f4..53aabb3 100644
--- a/src/site/asciidoc/developers/release.adoc
+++ b/src/site/asciidoc/developers/release.adoc
@@ -65,12 +65,11 @@ There's a detailed description https://github.com/apache/incubator-pulsar/wiki/C
 
 === Preparing a release
 
-In order to prepare a release-candidate, the following command will prepare the repository:
+In order to prepare a release-candidate, the first step is switching to the corresponding release-branch.
 
-   mvn release:prepare -DautoVersionSubmodules=true
+After that, the following command will to all preparation steps for the release:
 
-The parameter `autoVersionSubmodules` flag will tell the release plugin to release all modules with the same version.
-Otherwise we would have to define the release and development version for each module.
+   mvn release:prepare -DautoVersionSubmodules=true
 
 In general the plugin will now ask you 3 questions:
 
@@ -78,19 +77,21 @@ In general the plugin will now ask you 3 questions:
 2. The name of the tag the release commit will be tagged with in the SCM (Name it `rel/{release-version}`
 3. The next development version (The version present in the pom after the release)
 
-That the plugin does, is:
+Usually for 1 and 3 the defaults are just fine, make sure the tag name is correct as this usually is different.
+
+What the plugin now does, is automatically execute the following operations:
 
 1. Check we aren't referencing any `SNAPSHOT` dependencies.
 2. Update all pom versions to the release version.
 3. Run a build with all tests
-4. Commit the changes (labeled `[maven-release-plugin] prepare release {tagname}`)
+4. Commit the changes (commit message: `[maven-release-plugin] prepare release {tagname}`)
 5. Push the commit
 6. Tag the commit
 7. Update all poms to the next development version.
-8. Commit the changes (labeled `[maven-release-plugin] prepare for next development iteration`)
+8. Commit the changes (commit message: `[maven-release-plugin] prepare for next development iteration`)
 9. Push the commit
 
-However this just prepared the repository for the release, we have to perform the release to get the release artifacts.
+However this just prepared the git repository for the release, we have to perform the release to produce and stage the release artifacts.
 
 == What if something goes wrong?