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?