blob: 498c9ab60b7b724b28e79a979d7350902eee0ed5 [file] [log] [blame]
.. _coding-release-bugfix:
Create a patch on a release branch
==================================
.. code-block:: shell-session
:caption: Clone repository
# ------------------------------------------------
# Clone a repostiory of interest (ex: votlha-lib-go)
# Checkout release branch voltha-2.12 for patching
# ------------------------------------------------
% git clone "ssh://gerrit.opencord.org:29418/voltha-lib-go.git"
% cd voltha-lib-go
# Pull in all remote tags/branches
% git fetch --all
.. code-block:: shell-session
:caption: Create a dev branch for the patch
# -------------------------
# Display available options
# -------------------------
% git branch -a
master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/voltha-2.11
remotes/origin/voltha-2.12
# ----------------------------------------------------------
# Create a dev branch anchored to release branch voltha-2.12
# ----------------------------------------------------------
% git checkout -b dev-joey voltha-2.12
.. code-block:: shell-session
:caption: Sanity check tag & branch
# ----------------------------------------------------------------------
# Verify tag & branch for your checkout are correct:
# Your developer branch will be attached to branch=voltha-2.12
# initial branch checkouts will also mention the 'v2.12.x' tag.
# (HEAD -> dev-joey, tag: v2.12.0, origin/voltha-2.12)
# ----------------------------------------------------------------------
# When --graph shows your dev branch is attached to 'origin/master' as
# the ancestor, consider this to be a red flag that something is amiss.
# ----------------------------------------------------------------------
::
% git log --graph --decorate --oneline $@
* 653504fa (HEAD -> dev-joey, tag: v2.12.0, origin/voltha-2.12*) [VOL-5247] repo:voltha-go release patching prep
::
% git branch -vv
* dev-joey 253fa01b [origin/voltha-2.12: ahead 1] repo:voltha-go Post tag & branch activity
help 253fa01b repo:voltha-go Post tag & branch activity
master 4e0e0347 [origin/master] [VOL-5247] repo:voltha-go release patching prep
HEAD will be attached to origin/voltha-2.12 and the latest release tag v7.5.3
::
git log --graph --decorate --oneline {relpath}
* aeb3c4f (HEAD -> voltha-2.12, tag: v7.5.3, origin/voltha-2.12) [VOL-5245] -- release patch
* ad265dd (tag: v7.5.2) [VOL-5245] - branch and release repo:voltha-lib-go
* 9cdee9f (tag: v7.5.1, tag: v2.12.0) [VOL-5245] branch and release repo:voltha-lib-go
.. code-block:: shell-session
:caption: Sanity check dev sandbox attributes
# ------------------------------------------------------
# Sanity check your sanbox
# ------------------------------------------------------
# 1) VERSION file: no conflicts (master > release)
# master=x.y.0 > release=x.{y-1}.z
# ------------------------------------------------------
% cat VERSION
# ------------------------------------------------------
# .gitreview - commit, rebase, merge will be applied to the release branch
# ------------------------------------------------------
% grep -i branch .gitreview
defaultbranch=voltha-2.12
# -------------------------------------------------------
# On branch=master, defaultbranch=master or will be unset
# -------------------------------------------------------
% git checkout master
% grep -i branch .gitreview
defaultbranch=master
% git checkout dev-joey
.. code-block:: shell-session
:caption: Tag debugging
# ---------------------------------------------------------
# If something is amiss checkout by named tag for diagnosis
# ---------------------------------------------------------
% cat VERSION
% git checkout tags/v{VERSION-FILE-STRING}
Command output
::
% git checkout voltha-2.12
Branch 'voltha-2.12' set up to track remote branch 'voltha-2.12' from 'origin'.
Switched to a new branch 'voltha-2.12'
Edit and commit
---------------
- :ref:`pull-request--commit-message`
- :ref:`code--makefile-lint-targets`
.. code-block:: shell-session
:caption: Edit, commit, rebase and review
# ----------------------------------------------------------------
# Edit sources to taste
# ----------------------------------------------------------------
{emacs,vi,$EDITOR} ...
# ----------------------------------------------------------------
# Sanity check for problems
# ----------------------------------------------------------------
% make help | grep lint
% make lint LOCAL_FIX_PERMS=1
% make build
% make test
# ----------------------------------------------------------------
# Create a patch for upload
# ----------------------------------------------------------------
% git commit -F ./commit-message
[Rebase|merge] against the release branch
-----------------------------------------
.. code-block:: shell-session
:caption: Rebase against release branch ``NOT branch=master``
% git checkout "voltha-2.12"
% git pull --ff-only origin "voltha-2.12"
% git checkout dev-joey
% git rebase -i "origin/voltha-2.12"
Code Review
-----------
.. code-block:: shell-session
:caption: Push to gerrit, code review
% git review --reviewers "foo@bar.org"
Verify Patch Creation
---------------------
.. code-block:: shell-session
:caption: Verify patch creation
% git review --reviewers "foo@bar.org" "bar@tans.org"
::
As a cross check visit gerrit and verify your release bugfix is correctly
decorated. In gerrit, review the 'Repo|Branch' item in the top left corner.
'votlha-2.12' or the release tag will be visible. If branch 'master' is
listed abandon the patch, it will not be applied to the proper branch.