File: hotfix.rst

package info (click to toggle)
buskill 0.7.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 30,984 kB
  • sloc: python: 3,187; sh: 85; makefile: 22; javascript: 9
file content (96 lines) | stat: -rw-r--r-- 2,864 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
.. _hotfix:

Hotfix Workflow
===============

This section will describe how to create a hotfix to a previous release.

Determine Version Number
------------------------

The first thing you must do before creating a hotfix to a previous release is determine the new (`semantic <https://semver.org/>`_) version number.

In this example, we'll be using ``v3.2.1``. That's

 * a ``MAJOR`` version ``3``,
 * a ``MINOR`` version ``2``, and 
 * a ``PATCH`` version ``1``

For this workflow, we assume that the previous release that we need to patch was ``v3.2.0``, and we'll be creating a hotfix ``v3.2.1``. The ``PATCH`` version must always be one higher than the previous release that we're patching.

::

	    v 3 . 2 . 1 ⭠ PATCH
	MAJOR ⮥   ⮤ MINOR

Create Hotfix Branch
---------------------

In our project, we only put production-ready stable code in the ``master`` branch. No commits should occur in ``master``.

The ``dev`` branch and feature-specific branches are branched-off from the ``dev`` branch or ``master`` directly.

Since your hotfix applies to an old release and there may have since been changes to ``dev`` or ``master`` that we don't want to backport just for the hotfix, we should create a hotfix-specific branch from the previous release branch.

::

	user@host:~/buskill-app$ git checkout -b v3.2.1 refs/heads/v3.2.0
	Switched to a new branch 'v3.2.1'
	userhost:~/buskill-app$ 

	user@host:~/buskill-app$ git push origin v3.2.1
	Total 0 (delta 0), reused 0 (delta 0)
	remote: 
	remote: Create a pull request for 'v3.2.1' on GitHub by visiting:
	remote:      https://github.com/BusKill/buskill-app/pull/new/v3.2.0
	remote: 
	To github.com:BusKill/buskill-app.git
 	* [new branch]      v3.2.1 -> v3.2.1
	user@host:~/buskill-app$ 

Finalize Release
----------------

After applying your patch to the new ``v3.2.1`` branch, make sure to also

#. Update CHANGELOG
#. Test
#. Update documentation

Then commit the changes and push to github. Do *not* merge the hotfix branch with any other branch.

::

	user@host:~/buskill-app/$ vim CHANGELOG
	user@host:~/buskill-app/$ git commit -am 'updated changelog for new release'
	user@host:~/buskill-app/$ git push
	...

Tag
---

Create a tag for the new hotfix release, and push that to github.com

::

	user@host:~/buskill-app$ git branch -l
	  dev
	  master
	  v3.2.0
	* v3.2.1
	user@host:~/buskill-app$

	user@host:~/buskill-app$ git tag v3.2.1

	user@host:~/buskill-app$ git push origin refs/tags/v3.2.1
	Total 0 (delta 0), reused 0 (delta 0)
	To github.com:BusKill/buskill-app.git
	 * [new tag]         v3.2.1 -> v3.2.1
	user@host:~/buskill-app$ 

Build, Sign, and Upload
-----------------------

To build, sign, and upload the hotfix release, follow the same steps in the :ref:`Release Workflow <release_build>` documentation.

.. _reproducible: https://github.com/BusKill/buskill-app/issues/3