gawkworkflow: Push Pull
2.1 The "Push/Pull" Model of Software Development
=================================================
Git is a powerful, distributed source code management system. However,
the way it's used for 'gawk' development purposely does not take
advantage of all its features.
Instead, the model is rather simple, and in many ways much like more
traditional distributed systems such as the Concurrent Versions System
(http://www.nongnu.org/cvs) (CVS) or Subversion
(http://subversion.apache.org) (SVN).
The central idea can be termed "push/pull." You _pull_ updates down
from the central repository to your local copy, and if you have commit
rights, you _push_ your changes or updates up to the central repository.
Where Git does stand out is in its management of multiple branches of
development. Git makes it very easy to set up a separate branch for use
in fixing a bug or developing a feature. You can then easily keep that
branch up to date with respect to the main development branch(es), and
eventually merge the changes from your branch into the main branch.
Almost always Git does these merges for you without problem. When
there is a problem (a "merge conflict"), usually it is very easy for you
to "resolve" them and then complete the merge. We talk about this in
more detail later (Merge Conflicts).