I read the gitworkflows documentation at https://git-scm.com/docs/gitworkflows (also read in man gitworkflows), but determining the up / down directions between branches feel illogical to me. I did not understand the meaning, so I wonder if there is something that I do not see.
In particular, the "Branch Management> Ending" section in the above documentation contains
Release
Since this feature goes from experimental to sustainable, it is also a "graduate" between the respective software branches. git.git uses the following integration branches:
maint keeps track of commits that should go to the next "maintenance" release, that is, updating the latest released stable version;
the wizard tracks the commits that should go to the next version;
next is intended as a testing branch for topics tested for stability for the wizard.
There is a fourth official branch that is used somewhat differently:
- pu (proposed updates) is an integration branch for things that are not completely ready for inclusion (see the section "Integration branches" below).
Each of the four branches is usually a direct descendant above it.
The last sentence seems to imply that maint> master> next> pu is a downstream direction (because master is a descendant of maint, etc.).
However, the documentation further states
Conceptually, this function enters an unstable branch (usually the next or pu), and "graduates" to master the next version when it is considered stable enough.
Merge up
"graduation down", considered above [...]
Thus, in the last sentence, the documentation actually defines the distribution of new functions in the direction of the next> master as "grading down." This is the opposite of my previous impression that the master> next is a downward direction.
For me, the definition of maint> master> next> pu as a downward direction feels not only more natural, but also more consistent with the definition of upstream / downstream repositories. Usually we clone the remote upstream repository into the local repository, implement new features, and push up to the remote repository. (Note that the last step here is called “push up.”) This general procedure is parallel to branching next to the master, implements new functions in the next, and combines them into a master. Therefore, I think that the distribution of new features next to the wizard should be called "upward gradation" (in parallel with the "push up" from the local to the remote repository). However, it is called "down grading" in the documentation.
Why does Git use this inconsistent definition of up / down directions between branches? How can I understand that? Or, is there something important that I am missing to understand this definition?