Blame Manual/Filesystem/branches.texi

b130a0
@subsection Goals
b130a0
9bfd15
This directory implements the Subversion's branches concept in a
9bfd15
trunk, branches, tags repository structure.
b130a0
b130a0
@subsection Description
b130a0
9bfd15
The @file{branches/} directory structure is an intermediate space
9bfd15
between @file{trunk/} directory structure and @file{tags/} directory
9bfd15
structure.
b130a0
b130a0
@subsection Usage
b130a0
9bfd15
If changes committed to the main develpment line are all predictable
9bfd15
(e.g., there is just one person committing changes), there is no a big
9bfd15
need of using @file{branches/} directory structure, in this case we
9bfd15
can go straight from @file{trunk/} to @file{tags/}.  However, when
9bfd15
there is no way to predict changes in the main development directory
9bfd15
structure (e.g., there are many people working at it at the same time)
9bfd15
it is required to find out a space when changes can occur in
9bfd15
predictable ways. 
9bfd15
9bfd15
At this point several options may arise to work with branches. Let's
9bfd15
see a few ones:
9bfd15
9bfd15
@subsubsection Temporal Branch
9bfd15
9bfd15
The branched directory is created temporaly to fix a problem and when
9bfd15
it is done, it is merged back into @file{trunk/} directory structure
9bfd15
and removed from the repository.
9bfd15
9bfd15
@subsubsection Major Release Branch
9bfd15
9bfd15
The branched directory is created to implement the concept of major
9bfd15
release. In this configuration we frequently take a functional
9bfd15
instance of @file{trunk/} directory structure and create branch for
9bfd15
it. While @file{trunk/} directory structure can receive new
9bfd15
functionalities or remove old ones, the branched instance of it does
9bfd15
not. The branched instance can receive updates for available files
9bfd15
only but not introduce new ones or remove old ones as it is done in
9bfd15
@file{trunk/} directory structure.
9bfd15
9bfd15
The frequency each branched directory is created depends on how long
9bfd15
can the branched directory could be on its state before consider it as
9bfd15
dated and also the time we want to provide it as stable for everyone
9bfd15
to use as expected. The exact time depends on the sort of information
9bfd15
such branched directory structure contains.
9bfd15
9bfd15
To illustrate this concept consider the @file{trunk/Scripts/Bash/Cli}
9bfd15
directory structure. This directory contains the main development line
9bfd15
of @command{centos-art} command-line internface. If there are several
9bfd15
people working on it and you find a problem in it, it could be very
9bfd15
frustrating for you try to solve it in an environment when other
9bfd15
changes could be introduced unexpectedly, specially if such change you
9bfd15
need to do is considerable long. For that reasing it is much better to
9bfd15
commit small changes frequently to fix small things, but if you
9bfd15
absolutly need to make a long change (e.g., you want to implement a
9bfd15
new functionality) it is necessary you create branch of @file{trunk/}
9bfd15
directory structure (or any other branch or tag already created) to be
9bfd15
on the safe side while you implement your functionality.
9bfd15
9bfd15
In order to keep branch creation organized, we use the @file{trunk}
9bfd15
directory structure as reference and add a numerical identifier to the
9bfd15
end of the path that increments one unit for each branch created.
b130a0
b130a0
@subsection See also
b130a0
b130a0
@menu
9bfd15
* Filesystem trunk::
9bfd15
* Filesystem tags::
b130a0
@end menu