Diagrams for the hg branching strategy

* Base workflow

#+begin_src ditaa :file hgbranchingoverview.png
                                                           
                               |                                 |      
                   programmers | maintainers         maintainers | users
                               |                                 |
                          +----+----+                        +---+----+
  /--------------\        |         |                        |        |
  |regular commit+----=---+ default |                        | stable |
  \--------------/        |         |                        |        |
                          |         |                        |        |
  /--------------\        |         |                        |        |
  |regular commit+----=---+         |                        |        |
  \--------------/        |         |                        |        |
                          |         +-------release merge--->|        |
   ...                    |         |                        |        |
                          |         |                        |        |
                          |         |        /-----------\   |        |
                          |         |<-merge-+release tag+-=-+        |
                          |         |        \-----------/   |  cBLU  |
                          |         |                        |        |
     +----------------+   |         |                        |        |
     |                |<--+         |                        |        |
     | feature branch |   |  cGRE   |                        |        |
     |            {d} |   |     {d} |                        |    {d} |
     +----+------+----+   |         |        /-----------\   |        |
          :      |        |         |<-merge-+hotfix cRED+-=-+        |
          |      |        |         |        \-----------/   |        |
          |      |        |         |                        |        |
          |      +-merge->|         |                        |        |
          |               |         |                        |        |
          |               +---------+                        +--------+
          |                                                 
  /-------+------\                                          
  |regular commit|                           +--------------------+
  \--------------/                           |  Glossary          |
                                             |                    |
   ...                                       | --- branch change  |
                                             | -=- stay on branch |
                                             +--------------------+
#+end_src

#+RESULTS:
[[file:hgbranchingoverview.png]]

* Maintain several releases side-by-side

#+begin_src ditaa :file hgbranchingmaintain.png
  
                                |                                         |
                    programmers | maintainers                 maintainers | users
                                |                                         |
                           +----+----+                                +---+----+
  /--------------\         |         |                                |        |
  |regular commit+----=----+ default |                                | stable |
  \--------------/         |         |                                |        |
                           |         |                                |        |
  /--------------\         |         |                                |        |
  |regular commit+----=----+         |                                |        |
  \--------------/         |         |                                |        |
                           |         +------------release merge------>|        |
   ...                     |         |                                |        |
                           |         |                                |        |
                           |         |             /-----------\      |        |
                           |         |<-merge------+release tag+-=----|        |
                           |         |             \-----------/      |        |
                           |         |                                |        |
                           |         |                                |        |
                           |         |          /------------------\  |        |
                           |         |          |maintained release|  |        |
                           |         |          \-----+------------/  |  cBLU  |
     +----------------+    |         |                |               |        |
     |                |<---+         |                :               |        |
     | feature branch |    |  cGRE   |                v               |        |
     |            {d} |    |     {d} |        /-----------\           |    {d} |
     +----+------+----+    |         |        |hotfix cRED+-=-merge-->|        |
          :      |         |         |        \-------+---/or         |        |
          |      |         |         |                |or             |        |
          |      |         |         |              merge             |        |
          |      |         |         |                :               |        |
          |      |         |         |                v               |        |
          |      |         |         |  /------------------\          |        |
          |      |         |         |  |maintained release+-=-merge->|        |
          |      |         |         |  \------------------/          |  cBLU  |
          |      |         |         |               ...              |        |
          |      |         |         |                                |        |
          |      +-merge-->|         |<--------merge hotfix-----------+        |
          |                |         |                                |        |
          |                +---------+                                +--------+
          |
  /-------+------\
  |regular commit|                           +--------------------+
  \--------------/                           |  Glossary          |
                                             |                    |
   ...                                       | --- branch change  |
                                             | -=- stay on branch |
                                             +--------------------+
#+end_src

#+RESULTS:
[[file:hgbranchingmaintain.png]]

* Graft releases

#+begin_src ditaa :file hgbranchinggraft.png
                                                           
                               |                                 |      
                   programmers | maintainers         maintainers | users
                               |                                 |
                          +----+----+                        +---+----+
  /--------------\        |         |                        |        |
  |regular commit+----=---+ default |   +----------------+   | stable |
  \--------------/        |         |   |                |   |        |
                          |         +-->+  nextrelease   |   |        |
  /--------------\        |         |   |  c1AB      {d} |   |        |     
  |regular commit+----=---+         |   +---+------+-----+   |        |
  \--------------/        |         |       |      |         |        |
   ...                    |         |       :      |         |        |
                          |         |       |      |         |        |
                          |         |   /---+---\  |         |        | 
                          |         +-->+ graft |  |         |        | 
                          |         |   \-------/  |         |        | 
                          |         |    ...       |         |        |
                          |         |              v         |        |
                          |         |                        |        |
                          |         |        release merge-->|        |
                          |         |                        |        |
                          |         |                        |        |
                          |         |        /-----------\   |        |
                          |         |<-merge-+release tag+-=-+        |
                          |         |        \-----------/   |  cBLU  |
                          |         |                        |        |
     +----------------+   |         |                        |        |
     |                |<--+         |                        |        |
     | feature branch |   |  cGRE   |                        |        |
     |            {d} |   |     {d} |                        |    {d} |
     +----+------+----+   |         |        /-----------\   |        |
          :      |        |         |<-merge-+hotfix cRED+-=-+        |
          |      |        |         |        \-----------/   |        |
          |      |        |         |                        |        |
          |      +-merge->|         |                        |        |
          |               |         |                        |        |
          |               +---------+                        +--------+
          |                                                 
  /-------+------\                                          
  |regular commit|                           +--------------------+
  \--------------/                           |  Glossary          |
                                             |                    |
   ...                                       | --- branch change  |
                                             | -=- stay on branch |
                                             +--------------------+
#+end_src

#+RESULTS:
[[file:hgbranchinggraft.png]]