X-MimeOLE: Produced By Microsoft Exchange V6.5
Received: by onstor-exch02.onstor.net 
	id <01C7B51D.7A01016A@onstor-exch02.onstor.net>; Fri, 22 Jun 2007 14:34:20 -0800
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----_=_NextPart_001_01C7B51D.7A01016A"
Content-class: urn:content-classes:message
Subject:  Branch Strategy
Date: Fri, 22 Jun 2007 14:34:20 -0800
Message-ID: <BB375AF679D4A34E9CA8DFA650E2B04E0221588B@onstor-exch02.onstor.net>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic:  Branch Strategy
Thread-Index: Ace0flY1X2fnXdFOQXyt1SzziCpH/wAdrLKQ
From: "Larry Scheer" <larry.scheer@onstor.com>
To: "Jay Michlin" <jay.michlin@onstor.com>,
	"Tim Gardner" <tim.gardner@onstor.com>
Cc: "Andy Sharp" <andy.sharp@onstor.com>,
	"Ken Renshaw" <ken.renshaw@onstor.com>,
	"Larry Scheer" <larry@tarot.xs.com>

This is a multi-part message in MIME format.

------_=_NextPart_001_01C7B51D.7A01016A
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Here is the Branch plan you asked for earlier this week. I met with Ken
a couple of times to go over the gritty details.=20

Please review and give me any thoughts and changes. I am working on
putting this into a functional specification. This email was
easier/faster for me to create than working with MS-Word through Citrix.

Thanks,

Larry

 ONStor Branch Plan
This is a plan to implement a simpler more efficient branching strategy
at ONStor. This plan will provide a common work flow for the software
engineering process at ONStor. It will eliminate the indirect merges
that we have had to deal with in the past. It provides a code base with
common ancestry that is easy to follow and understand.=20

Branch types and their function
*	Main
-	Only one exists; the unique branch name is "main"
-	Provide stable revisions, points in time, to create a branch and
to synchronize other branches
-	Provides the baseline history for all files and projects
-	Used as the genesis for all new feature branches and release
branches
-	Used as the synchronization point for other branches as needed
-	Never ending branch

*	Dev
-	Only one exists; the unique name branch name is "dev"
-	A branch that contains all software projects and features
targeted for a release
-	All software development work for projects not needing a feature
branch done here
-	All bug fixes, with a few unique exceptions, done here
-	Projects are integrated here
-	Never ending branch

*	Bridge=20
-	Created as needed from a QA sanctioned submittal that was merged
into main from the dev branch
-	Created from main the branch name matches the project (i. e.
Zonda)
-	Removes the need to ever lock the dev branch and stall current
development
-	Created just prior to a project's release, this branch will
allow work on to continue on the dev branch
-	QA and bug fixes continue on the bridge until project is
declared ready to release
-	When the code is release worthy it is pushed to the main branch
-	A release branch is created from the main branch at this time
-	At the same point the release is pulled from main into the dev
branch
-	Short lived branch, with a life span of a handful of submittals
to QA.

*	Release
-	Many can exist; the name of the branch will reflect the release
number
-	Area that holds software released to manufacturing
-	Source for patch and maintenance releases as well as main
release
-	Branched from main
-	Updated with fixes from the dev branch
-	In some cases fixes can be made directly in the release branch
-	Provides the stable point for "one-off" branches
-	Branch ends when no more maintenance is needed

*	One-Off
-	Many can exist; name of branch reflects patch number
-	Branched from the parent release branch
-	Modifications to code made directly in the branch
-	Holds unique special case software for one or few customers=20
-	Not generally available to a broad audience
-	Short lived branch

*	Feature Branch
-	Many can exist, name of branch reflects project name
-	Branched from main only on an as needed basis
-	Isolate development or whenever it is uncertain when the feature
will be incorporated into a release
-	Updated from main=20
-	No indirect integrations are allowed in a feature branch
-	Pushed back into main before being pulled into dev
-	Has an end of life when feature is pushed into main and pulled
into dev

Branch Policies

Main branch policy
*	Branch manager is Source Code Manager, Ken Renshaw
*	Holds tested code, "pushes" into main come from some checkpoint
such as a submittal
*	Source for nearly all branches (only one-offs and maybe bridge
the exception?)
*	No development done in main
*	Code that doesn't compile is never checked into main
*	No zero diffs checked into main?
*	Labels applied to help with identifying key events?

Dev branch policy
*	Development and bug fixing done here
*	Branch manager is the development release coordinator and will
change from time to time
*	No pulls from other branches
*	No indirect merges
*	No checking in zero diffs
*	Pulls/synchronization from other branches, all integrations come
through main

Bridge branch policy
*	Short life span
*	Branch manager is the development release coordinator
*	Branched sometime after feature complete (not too soon)
*	Tightly controlled updates to code
*	Locked when finished; becomes a dead branch
*	Merged back into main only
*	Dev branch is updated with this release through main

Release branch policy
*	Branch manager is Maintenance/Escalation manager (Ed Kwan)
*	Branched from main
*	All components needed for a build are branched (i. e.
boot-tools, openbsd, linux, nfx-tree, etc)
*	Developers can build releases to verify fix if needed
*	Fixes come from the dev branch via integration and merge done by
the developer
*	Fixes may be done directly in the release branch in cases where
code/feature are incompatible with the dev branch. Example: send-agile
replaced with rmc in dev and a fix is needed for send-agile in release
*	Code is never pushed back to main or dev
*	Release branch is always locked and opened only for specific
fixes

One-Off branch policy
*	Branch manager is Maintenance/Escalation manager (Ed Kwan)
*	Branched from release branch
*	Developers can modify code and build a release to test (create
fixes) as needed
*	Only done for specific reasons and customers
*	Fixes made directly in one-off branch
*	Never pulled from main, dev, etc. Never pushed to main, dev,
etc.
*	Can be pushed back to release branch if needed
*	Branch is locked after fix=20
*	Very short lived branch

Feature branch policy
*	Branch manager is team leader, project manager, developer as
needed
*	Always branched from main
*	Always pushed to main
*	Updated from main as needed
*	Developers responsible for integrations and merge
*	Must be updated from main and tested before pushed back into
main
*	Feature branch is at end of life and locked when integrated into
dev from main

How do we get there from here?
Today we have the main branch, a number of feature branches, a zonda
branch for the 3.1 release work, a cougar branch for the linux port and
new hardware support, and several active release branches where
maintenance and new development are occurring. This section out lines
the steps we will take to get engineering using the branch model
proposed in this document.

1.	The current "pre 3.0 release" branches remain as they are
nothing additional needs to be done there
2.	The main branch will be updated one last time with the current
release from the FB-DELOREAN branch
3.	FB- DELOREAN will be locked and is done.
4.	R3_0_X_rel branch will be updated from main with the FB-
DELOREAN code
5.	The ZONDA branch will be update from main with the FB- DELOREAN
code
6.	ZONDA submittal one will be tested by QA,
7.	If all goes well the ZONDA branch will be pushed to main
8.	The ZONDA branch will be locked and it is at end  of life
9.	The cougar branch will be updated with the ZONDA + final FB-
DELOREAN release from the main branch
10.	Any needed ZONDA development (expected to be brief) will/can
happen in the cougar branch
11.	ZONDA submittal 2 will come out of the cougar branch
12.	If all goes well the cougar branch will be pushed to main
13.	The cougar branch is at its end of life and it is locked
14.	The dev branch is created from main
15.	All future zonda submittals come from the dev branch until the
zonda bridge branch is needed.

From this point on all development for releases and release maintenance
will take place in the dev branch.

Work Flows
Each branch will have a branch manager. The branch manager is the
gate-keeper for what goes into and out of a branch.  Depending on the
branch the branch manager may change over time depending upon project
and release status or as the needs of the company change.

Each branch will also have an integration/merge manager whose job it
will be to integrate and merge changes into the branch using the
perforce tools provided for the job. With the exception of the main and
possibly bridge branches the integration/merge manager will not always
be the same person for a given branch depending upon the need.

Main branch work flow
This branch is reserved for code that has passed some check-point and is
used as a stable place for branch creation and to store a stable
baseline of ONStor software. No development work occurs in the branch.
Its purpose is to provide a common base for new projects and branches
for those projects. Using main in this manner should allow all code to
have a common ancestry and when used properly eliminates indirect
merges. The branch manager is the release manager, Ken Renshaw. He will
be responsible for controlling what goes into and out of the main
branch. The release manager will also be the integration manager for the
main branch.

Dev branch work flow
This is the primary branch for all development work and fixes to current
releases. Normal development and code builds are done here at will by
all software engineers. The branch manager will be the project leader
for the current ONStor software release that is under development. The
integration/merge manager will be appointed by the development team and
they will pull from main any features and changes that need to come into
the primary code line.

The escalation and maintenance team will also use the dev branch to fix
defects and integrate fixes into the release branches whenever they can.
This way fixes will be done to the current code base and patched in the
release branch.

Bridge branch work flow
This branch will be created late in the development cycle of a project
or a release by the release manager from the main branch after the dev
branch has been pushed to main. Typically this would be done when the
code base is nearing FCS and only has a few more weeks of code fixing
and release candidate submittals left. The main purpose of this bridge
branch is to allow work in the dev branch to continue unimpeded. This
eliminates the need to lock the dev branch while a release is eminent.

Fixes will be done directly in the bridge branch by the developers. The
project leader controls what goes into the branch and is the branch
manager. The release manager, Ken Renshaw, will be the integration/merge
manager. Release builds will be done as needed by developers and the
release manager in this branch.

When the release is complete the bridge branch is pushed to main and the
release branch is created from main at that point. From the same point
in main the dev branch is updated with the released code base. The dev
branch integration manager will pull the code base from main and merge
it into dev.

Release branch work flow
The release branch is created from main at the point the bridge branch
was integrated into the main branch. The release manager will create the
release branch. In this branch post-release activity needed to create a
patch releases or a maintenance release will come from the release
branch. The escalation and maintenance team manager will manage this
branch after its creation.

Whenever possible fixes will be made in the development branch and
integrated from dev into the release branch by the developer. Here the
integration/merge manager will be the developer responsible for the
fix/change. The only time any direct changes, something other than
merges, are acceptable on this branch is when the code being changed is
incompatible with what is currently in the dev branch and the code being
changed cannot be merged back to the dev branch.

Integrating code back into the main and dev branches from the release
branch should be avoided. This practice could cause base line confusion
and result in indirect integrations.

Developers creating fixes also will need to create test release builds
in this branch. The release manager will be the primary person creating
release builds for this branch.

One-Off branch work flow
These branches will be created as needed by the release manager. They
will only be needed for work that is an engineering special project or
is an unique feature or fix for one or few customers. The escalation and
maintenance team manager will manage this branch after its creation.=20

Fixes and changes will be made directly in this branch and can be pushed
back to the release branch if the changes are to become part of a patch
or maintenance release. The integration/merge manager is the developer
doing the work or the release manager.

Feature branch work flow
New feature branches are created when the work being done is outside the
primary development stream or when the work to be done would be
disruptive to the development code base. Any time work needs isolation
from the primary development flow a feature branch is used. The branch
manager will be the developer or team leader for the feature under
development. The integration/merge manager will be appointed by the
team.

Development work occurs in the feature branches in the usual manner with
changes and builds being done by developers as needed. If a feature
branch requires updates from a particular release, those updates will
come from the main branch.

As feature branches are ready to be brought in to dev they will be
synchronized with the main branch. The appointed branch merge manger
will do the integration and merge of main into the feature branch. QA
will perform an "in-branch" test of the code-line and when it is ready
the feature branch will be pushed to main.

If for whatever reason QA cannot do an "in-branch" test before the
branch is pushed to main all code must compile in the merged version and
must pass some basic tests.

When a feature branch comes into main and the project manager wants to
put the feature into his release the feature will be pulled into dev by
the "merge manager" of the current release project.


------_=_NextPart_001_01C7B51D.7A01016A
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
6.5.7652.24">
<TITLE> Branch Strategy</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">Here is the Branch plan</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> you asked for earlier this week. I met with Ken =
a couple of times to go over the gritty details. </FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">Please review and give me any thoughts and changes. I am =
working on putting this into a functional =
specification.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> This =
email was easier/faster for me to create tha</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">n working with MS-Word through =
Citrix.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">Thanks,</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">Larry</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT SIZE=3D2 =
FACE=3D"Arial"></FONT></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B>&nbsp;<FONT =
SIZE=3D4 FACE=3D"Arial">ONStor Branch Plan</FONT></B></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">This =
is a plan to implement a simpler more efficient branching strategy at =
ONStor. This plan will provide a common work flow for the software =
engineering process at ONStor. It will eliminate the indirect merges =
that we have had to deal with in the past. It provides a code base with =
common ancestry that is easy to follow and understand. =
</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT FACE=3D"Arial">Branch =
types and their function</FONT></B></SPAN></P>

<P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B> <FONT SIZE=3D2 =
FACE=3D"Arial">Main</FONT></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Only one exists; the unique branch name is =
&#8220;main&#8221;</FONT></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Provide stable revisions, points in time, to create a =
branch and to synchronize other branches</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Provides the baseline history for all files and =
projects</FONT></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Used as the genesis for all new feature branches and =
release branches</FONT></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Used as the synchronization point for other branches as =
needed</FONT></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Never ending branch</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>
</P>

<P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B> <FONT SIZE=3D2 =
FACE=3D"Arial">Dev</FONT></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Only one exists; the unique name branch name is =
&#8220;dev&#8221;</FONT></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">A branch that contains all software projects and features =
targeted for a release</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">All software development work for projects not needing a =
feature branch done here</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">All bug fixes, with a few unique exceptions, done =
here</FONT></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Projects are integrated here</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Never ending branch</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>
</P>

<P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B> <FONT SIZE=3D2 =
FACE=3D"Arial">Bridge </FONT></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Created as needed from</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000080" =
SIZE=3D2 FACE=3D"Arial">a</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">QA =
sanctioned submittal that was merged into main from the =
dev</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT =
SIZE=3D2 FACE=3D"Arial"> branch</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">Created from main</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000080" =
SIZE=3D2 FACE=3D"Arial"> t</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">he</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000080" SIZE=3D2 =
FACE=3D"Arial"></FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">branch</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial"> name matches the project =
(i. e. Zonda)</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Removes the need to ever lock the dev branch and stall =
current development</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">Created just prior to a project&#8217;s release, this =
branch will allow work on to continue on the dev branch</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">QA and bug fixes continue on the bridge until project is =
declared ready to release</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">When the code is release worthy it is pushed to the main =
branch</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">A release branch is created from the main branch at this =
time</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">At the same point the release is pulled from main into =
the dev branch</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">Short lived branch, with a life span of a handful of =
submittals to QA.</FONT></SPAN>
</P>

<P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B> <FONT SIZE=3D2 =
FACE=3D"Arial">Release</FONT></B></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Many can exist; the name of the branch will reflect the =
release number</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">Area that holds software released to =
manufacturing</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">Source for patch and maintenance releases as well as main =
release</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">Branched from main</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">Updated with fixes from the dev branch</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">In some cases fixes can be made directly in the release =
branch</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">Provides the stable point for &#8220;one-off&#8221; =
branches</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">Branch ends when no more maintenance is =
needed</FONT></SPAN>
</P>

<P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B> <FONT SIZE=3D2 =
FACE=3D"Arial">One-Off</FONT></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Many can exist; name of branch reflects patch =
number</FONT></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Branched from the parent release =
branch</FONT></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Modifications to code made</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">directly</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">in the branch</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Holds unique special case software for one or few =
customers</FONT></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN><SPAN =
LANG=3D"en-us"><B> </B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Not generally available to a broad =
audience</FONT></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Short lived branch</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>
</P>

<P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B> <FONT SIZE=3D2 =
FACE=3D"Arial">Feature Branch</FONT></B></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Many can exist, name of branch reflects project =
name</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">Branched from main only on an as needed =
basis</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">Isolate development or whenever it is uncertain when the =
feature will be incorporated into a release</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">Updated from main </FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">No indirect integrations are allowed in a feature =
branch</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">Pushed back into main before being pulled into =
dev</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial =
Black">&shy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">Has an end of life when feature is pushed into main and =
pulled into dev</FONT></SPAN>
</P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT FACE=3D"Arial">Branch =
Policies</FONT></B></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT SIZE=3D2 =
FACE=3D"Arial">Main branch policy</FONT></B></SPAN></P>

<P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Branch manager is Source Code Manager, Ken =
Renshaw</FONT></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Holds tested code</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B><FONT SIZE=3D2 =
FACE=3D"Arial">,</FONT></B></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT SIZE=3D2 FACE=3D"Arial">&#8220;pushes&#8221; into =
main come from some checkpoint such as a submittal</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Source for nearly all branches (only one-offs and maybe =
bridge the exception?)</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">No development done in main</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Code that doesn&#8217;t compile is never checked into =
main</FONT></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">No zero diffs checked into main?</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Labels applied to help with identifying key =
events?</FONT></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN>
</P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT SIZE=3D2 =
FACE=3D"Arial">Dev branch policy</FONT></B></SPAN></P>

<P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Development and bug fixing done here</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Branch manager is the development release coordinator and =
will change from time to time</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">No pulls from other branches</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">No indirect merges</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">No checking in zero diffs</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Pulls/synchronization from other branches, all =
integrations come through main</FONT></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN>
</P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT SIZE=3D2 =
FACE=3D"Arial">Bridge branch policy</FONT></B></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Short life span</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Branch manager is the development release =
coordinator</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Branched sometime after feature complete =
(not too soon)</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Tightly controlled updates to =
code</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Locked when finished; becomes a dead =
branch</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Merged back into main only</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Dev branch is updated with this release =
through main</FONT></SPAN>
</P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT SIZE=3D2 =
FACE=3D"Arial">Release branch policy</FONT></B></SPAN></P>

<P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Branch manager is Maintenance/Escalation manager (Ed =
Kwan)</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Branched from main</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">All components needed for a build are =
branched (i. e. boot-tools, openbsd, linux, nfx-tree, =
etc)</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Symbol">&#183;<FONT FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">Developers can</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">build releases to verify fix if =
needed</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Fixes come from the dev branch via integration and merge =
done by the developer</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Fixes may be done directly in the release =
branch in cases where code/feature are incompatible with the dev branch. =
Example: send-agile replaced with rmc in dev and a fix is needed for =
send-agile in release</FONT></SPAN></P>

<P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Code is never pushed back to main or =
dev</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Release branch is always locked and opened =
only for specific fixes</FONT></SPAN>
</P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT SIZE=3D2 =
FACE=3D"Arial">One-Off branch policy</FONT></B></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Branch manager is Maintenance/Escalation manager (Ed =
Kwan)</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Branched from release =
branch</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Symbol">&#183;<FONT FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">Developers can modify code and =
build</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> =
a</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> release to test (create =
fixes</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">) as =
needed</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Only done for specific reasons and =
customers</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Fixes made directly in one-off =
branch</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Never pulled from main, dev, etc. Never =
pushed to main, dev, etc.</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Can be pushed back to release branch if =
needed</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Branch is locked after fix </FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Very short lived branch</FONT></SPAN>
</P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT SIZE=3D2 =
FACE=3D"Arial">Feature branch policy</FONT></B></SPAN></P>

<P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><B></B></SPAN><SPA=
N LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">Branch manager is team leader, project manager, developer =
as needed</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Always branched from main</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Always pushed to main</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Updated from main as needed</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Developers responsible for integrations =
and merge</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Must be updated from main and tested =
before pushed back into main</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Symbol">&#183;<FONT =
FACE=3D"Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT> =
<FONT SIZE=3D2 FACE=3D"Arial">Feature branch is at end of life and =
locked when integrated into dev from main</FONT></SPAN>
</P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT FACE=3D"Arial">How do we =
get there from here?</FONT></B></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Today =
we have the main branch, a number of feature branches, a zonda branch =
for the 3.1 release work, a cougar branch for the linux port and new =
hardware support, and several active release branches where maintenance =
and new development are occurring. This section out lines the steps we =
will take to get engineering using the branch model proposed in this =
document.</FONT></SPAN></P>

<P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">The current &#8220;pre 3.0 release&#8221; branches remain =
as they are nothing additional needs to be done there</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">The main branch will be updated one last time with the =
current release from the FB-DELOREAN branch</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">FB-</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT SIZE=3D2 FACE=3D"Arial">DELOREAN will be locked =
and is done.</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">R3_0_X_rel branch will be updated from main with the =
FB-</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT =
SIZE=3D2 FACE=3D"Arial">DELOREAN code</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">The ZONDA branch will be update from main with the =
FB-</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT =
SIZE=3D2 FACE=3D"Arial">DELOREAN code</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">6.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">ZONDA submittal one will be tested by QA,</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">7.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">If all goes well the ZONDA branch will be pushed to =
main</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">8.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">The ZONDA branch will be locked and it is at end&nbsp; of =
life</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">9.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">The cougar branch will be updated with the ZONDA + final =
FB-</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT =
SIZE=3D2 FACE=3D"Arial">DELOREAN release from the main =
branch</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">10.&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">Any needed ZONDA development (expected to be brief) =
will/can happen in the cougar branch</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">11.&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">ZONDA submittal 2 will come out of the cougar =
branch</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">12.&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">If all goes well the cougar branch will be pushed to =
main</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">13.&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">The cougar branch is at its end of life and it is =
locked</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">14.&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">The dev branch is created from main</FONT></SPAN>

<BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">15.&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=3D2 =
FACE=3D"Arial">All future zonda submittals come from the dev branch =
until the zonda bridge branch is needed.</FONT></SPAN>
</P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">From =
this point on all development for releases and release maintenance will =
take place in the dev branch.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT COLOR=3D"#000000" =
FACE=3D"Arial">Work Flows</FONT></B></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">Each branch will have a branch manager. The branch =
manager is the gate-keeper for what goes into and out of a =
branch.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us">&nbsp;<FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> =
Depending on the branch the branch manager may change over time =
depending upon project and release status or as the needs of =
the</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">company</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> change.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">Each branch will also have an</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">integration</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">/merge</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> manager</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> whose job it will be to integrate and merge =
changes</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> =
<FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">into the =
branch</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> =
<FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">using the perforce tools =
provided for the job.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">With =
the</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">exception</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"></FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">of the =
main and possibly bridge branches t</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">he integration/merge manager</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">will not always be the same person for a given =
branch depending upon the need.</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">Main branch work flow</FONT></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">This branch is reserved for code that has passed =
some</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> =
<FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">check-point</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> and is used as</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">a stable</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> place for branch creation =
and</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">to store</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">a stable baseline of</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">ONStor</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> software</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">. No</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">develop</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">ment work occurs in the branch. =
It</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">s purpose</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"></FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">is</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">to =
provide a common base for new projects and branches for those =
projects</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">. Using =
main in this manner should allow all code to have a common ancestry and =
when used properly eliminates indirect merges.</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> The branch manager is the</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">r</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">elease</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">manager, =
Ken Renshaw. He will be responsible for controlling what goes =
into</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> =
<FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">and out of the main =
branch. The release manager will also be the integration manager for the =
main branch.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">Dev</FONT></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B> <FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">b</FONT></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">ranch work =
flow</FONT></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">This is the primary branch for all</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">development</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> work and fixes to</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">current</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">release</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">s.</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">Normal development and code builds are done here =
at will by all software engineers</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial"></FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">The =
branch manager will be the project leader for the current ONStor =
software release that</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">is =
under</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> =
<FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">development. The =
integration/merge manager will be appointed</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">by the development team and they will pull from =
main any features and changes that need to come into the primary code =
line.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">The escalation and maintenance team will also use the dev =
branch to fix defects and integrate fixes into the</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">r</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">elease =
branches</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> whenever =
they can. This way fixes will be done to the current code base =
and</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">patched</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> in the release branch.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">Bridge branch work flow</FONT></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">This branch will be created late in the development cycle =
of a project or a release by the</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">release</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"></FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">manager</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> from the =
main branch</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">after =
the dev branch has been pushed to main.</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">Typically this would be done when the code base =
is nearing FCS and only has a few more weeks of code fixing and release =
candidate submittals left. The main purpose</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> of this bridge branch is to allow work in the =
dev branch to continue unimpeded. This eliminates the need to lock the =
dev branch while a release is eminent.</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">Fixes will be done directly in the bridge branch by the =
developers. The project leader controls what goes into the branch and is =
the branch manager. The release manager, Ken Renshaw, will be the =
integration/merge manager.</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> Release builds will be done as needed by =
developers and the</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">release</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial"></FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">manager =
in this branch.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">When the release is complete the bridge branch is pushed =
to main and the release branch is created from main at that point. From =
the same point in main the dev branch is updated with the released code =
base. The dev branch</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">integration</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> manager will pull the code base from =
main</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> and merge it into =
dev.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">Release bra</FONT></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">nch work =
flow</FONT></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">The release branch is created from main at the point the =
bridge branch was integrated into the main branch. The release manager =
will create the release branch</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">. In this branch post</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">-</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">release =
activity needed</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">to =
create a p</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">atch =
releases</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> =
<FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">or a maintenance =
release</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> =
<FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">will come from the =
release branch</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">. The =
escalation and</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">maintenance</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> team manager will manage this branch after its =
creation.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">Whenever possible fixes will be made in the development =
branch and integrated from dev into the release branch by the developer. =
Here the integration/merge manager will be the developer responsible for =
the fix/change.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> The only =
time any</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> =
<FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">direct</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">changes,</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">something</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial"></FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">other =
than merges, are a</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">cceptable =
on this branch is when the code being changed is =
incompatible</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">with</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> what is =
currently in the dev branch and</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">t</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">he code =
being changed cannot be merged back to the dev branch.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">Integrating code back</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">into</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">the</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">main and dev</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> branches</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">from the release branch</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">should be avoided</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">. This</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">practice</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">could cause base line confusion and result =
in</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">indirect</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> integrations.</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">Developers creating fixes a</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">lso will need to create test release builds in =
th</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">is</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> branch. The</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">release</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> manager will be the primary person creating =
release builds</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">for</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> this =
branch.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">One-Off branch work flow</FONT></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">These branches will be created as needed by the release =
manager.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> =
<FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">They will only be needed =
for</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">wor</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">k that is an engineering special project or is =
a</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">n</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> unique feature o</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">r</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> fix for =
one or few customers.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial"></FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">The =
escalation and</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">maintenance</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> team manager will manage this branch after its =
creation.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> =
</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">Fixes and changes will be made directly in =
this</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> =
<FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">branch</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">and can =
be pushed back to the release branch if</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">the changes are to become part of a patch or =
maintenance release.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> The =
integration/merge manager</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> is the =
developer doing the work or the release manager.</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><B><FONT SIZE=3D2 =
FACE=3D"Arial">Feature branch work flow</FONT></B></SPAN><SPAN =
LANG=3D"en-us"><B></B></SPAN><SPAN LANG=3D"en-us"><B></B></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">New feature</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">branches</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial"> are created when the work being done is outside =
the primary development stream or when the work to be done would be =
disruptive to the development code base</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial"></FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">Any time =
work</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> needs isolation from the =
primary development</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">flow</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> a =
feature branch is used.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> The =
branch manager will be the developer or team leader for the feature =
under</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> =
<FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">development</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> The =
integration/merge manager will be appointed by the =
team.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">Development work</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Arial">occurs in the</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#000080" =
SIZE=3D2 FACE=3D"Arial"></FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">feature =
branches</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000080" SIZE=3D2 =
FACE=3D"Arial"></FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">in the =
usual manner with changes and builds being done by =
developers</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial"> as =
needed</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial"> If a feature =
branch</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> =
<FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">require</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Arial">s</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"> <FONT SIZE=3D2 FACE=3D"Arial">updates from a particular =
release, those updates will come from the main branch.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">As =
feature branches are ready to be brought in to dev they will be =
synchronized with the main branch. The appointed branch merge manger =
will do the integration and merge of main into the feature branch. QA =
will perform an &#8220;in-branch&#8221; test of the code-line and when =
it is ready the feature branch will be pushed to main.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">If =
for whatever reason QA cannot do an &#8220;in-branch&#8221; test before =
the branch is pushed to main all code must compile in the merged version =
and must pass some basic tests.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">When =
a feature branch comes into main and the project manager wants to put =
the feature into his release the feature will be pulled into dev by the =
&#8220;merge manager&#8221; of the current release =
project.</FONT></SPAN></P>

</BODY>
</HTML>
------_=_NextPart_001_01C7B51D.7A01016A--
