[VOL-5297] Install pypi module:pre-commit

howto/code/lint/pre-commit.rst
------------------------------
  o Document makefile convenience target pre-commit.

Signed-off-by: Joey Armstrong <jarmstrong@linuxfoundation.org>
Change-Id: I1dd9cb3894fb0947a85195d07378eaf36e0d7d32
diff --git a/howto/code/lint/pre-commit.rst b/howto/code/lint/pre-commit.rst
index bf52b5c..29d4915 100644
--- a/howto/code/lint/pre-commit.rst
+++ b/howto/code/lint/pre-commit.rst
@@ -12,7 +12,8 @@
   - re-indent files
   - etc
 
-## Install
+Install
+-------
 
 .. code:: bash
 
@@ -30,18 +31,68 @@
 
     % make clean
 
-## Configuration
+repo:onf-make convenience target
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+VOLTHA repositories that have
+`repo:onf-make <https://gerrit.opencord.org/plugins/gitiles/onf-make/+/refs/heads/master>`_
+installed as a git submodule can use the makefile target `pre-commit` to
+create a virtualenv and invoke pre-commit with a single command.
+
+.. code-block:: shell-session
+   :caption: Convenience Target
+
+   % git clone bbsim
+   % cd bbsim
+
+   % Is the repo:onf-make submodule available ?
+   % git config --file .gitmodules --name-only --get-regexp path
+
+   # yes
+   submodule.lf/onf-make.path
+
+   % make pre-commit
+
+Configuration
+-------------
 
 - Each repository contains a yaml config file that controls hooks and linting behavior:
 
   - repo:bbsim/`.pre-commit-config.yaml <https://gerrit.opencord.org/plugins/gitiles/bbsim/+/refs/heads/master/.pre-commit-config.yaml>`__
 
 - A skeleton config is currently being used.
+
+  - Directory exclusions are supported (regex pattern at the end).
+  - Commit hooks can be enabled/disabled as needed per-repository.
+  - Open tickets to track repository cleanup needed.
+
+- Config changes can be made as needed but if new hooks are added or configs
+  change be sure to update the common config file in repo:onf-make and
+  propogate hook edits out to all VOLTHA repositories for consistency.
 - Make changes as needed but be sure to propogate them out to all voltha repositories.
 - Long term a central repository can be maintained for pre-commit hooks that can be
   included as a git submodule to remove duplication and potential for linting variations.
 
+Source & Dependencies
+---------------------
+
+| Source | Description |
+| ------ | ----------- |
+| `repo:onf-make <https://gerrit.opencord.org/plugins/gitiles/onf-make/+/refs/heads/master>`_ | Repository containing makefile targets and common pre-commit config. |
+| `pre-commit <https://gerrit.opencord.org/plugins/gitiles/onf-make/+/refs/heads/master/makefiles/commands/pre-commit/>`_ | Makfile targets used to install the pre-commit tool. |
+| `virtualenv <https://gerrit.opencord.org/plugins/gitiles/onf-make/+/refs/heads/master/makefiles/virtualenv/>`_ | These makefiles will install a python virtulenv into sandbox/.venv/. |
+
+.. todo:
+
+- Move .pre-copmmit-config.yaml setup into a standalone repository.
+- Include the repo as a new git submodule.
+- pre-commit config file can then be maintained as a file on disk
+  (per-repository checking for early cleanup) or be replaced with
+  a symlink that references the shared config file.  Added benefit
+  -- the submodule also acts as a breadcrumb trail for locating
+  the config for pre-commit edits that span all repositories.
+
 .. seealso:
 
 | URL | Description |
-| pre-commit | A framework for managing and maintaining multi-language pre-commit hooks |
+| `pre-commit <https://pre-commit.com/>` | A framework for managing and maintaining multi-language pre-commit hooks |