blob: d7730f1049ecc9177b2a8092e4f66c08a213f6d2 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<head>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
<TITLE>cws howto</TITLE>
<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.2 (Linux)">
<META NAME="CREATED" CONTENT="20040426;15160100">
<META NAME="CHANGEDBY" CONTENT="Martin Hollmichel">
<META NAME="CHANGED" CONTENT="20040624;14194800">
<STYLE>
<!--
@page { size: 8.5in 11in; margin-left: 1.25in; margin-right: 1.25in; margin-top: 1in; margin-bottom: 1in }
P { margin-bottom: 0.08in }
H1 { margin-bottom: 0.08in }
H1.western { font-family: "Arial", sans-serif; font-size: 16pt }
H1.cjk { font-family: "Mincho"; font-size: 16pt }
H1.ctl { font-family: "Lucidasans"; font-size: 16pt }
H2 { margin-bottom: 0.08in }
H2.western { font-family: "Arial", sans-serif; font-size: 14pt; font-style: italic }
H2.cjk { font-family: "Mincho"; font-size: 14pt; font-style: italic }
H2.ctl { font-size: 14pt; font-style: italic }
H3 { margin-bottom: 0.08in }
H3.western { font-family: "Arial", sans-serif }
H3.cjk { font-family: "Mincho" }
-->
</STYLE>
</head>
<body LANG="en-US" DIR="LTR">
<H1 CLASS="western">OpenOffice.org source control</H1>
<H2 CLASS="western">OpenOffice.org main codelines</H2>
<P>OpenOffice.org does use the cvs Source Control System. The major
releases of OpenOffice.org are implemented on, so called, cvs branches.
The development of the next major releases is developed on HEAD of
the cvs tree, the maintenance of older versions also happens on
branches.</P>
<P>
</P>
<P><IMG SRC="OOo_cws_html_5227a09.png" NAME="Graphic1" ALIGN=LEFT WIDTH=483 HEIGHT=115 BORDER=0><BR CLEAR=LEFT>In
the OpenOffice.org environment these branches are often called
codelines or master(-branches). Builds on these codelines does not
happen continuously (daily builds) but within regular milestones. For
the 1.1.x codeline this result in a cvs branch tag called mws_srx645
which represents the latest status of this codeline and several more
tags which represent a specific milestone on this codeline
(SRX645_m34, SRX645_m40). The same scheme applies to the 2.0 codeline
(mws_src680 for the latest status, SRC680_m36 for a specific
milestone). Usually every week there will be a new milestone on the
active development line available. There is also the possibility to
achieve some more granularity with the introduction of steps, so that
more than one build per week is possible (SRC680_m33s1).</P>
<P>The names like SRC680, SRX645 will be deprecated in the future,
they represent the old scheme of milestone naming.</P>
<P>As soon as the OOo 2.0 comes close to release, a new branch for
this codeline will be created so that concurrent development of the
next release can be started.</P>
<P><IMG SRC="OOo_cws_html_6fa87fb4.png" NAME="Graphic2" ALIGN=LEFT WIDTH=576 HEIGHT=101 BORDER=0><BR CLEAR=LEFT><BR><BR>
</P>
<H2 CLASS="western">Development branches</H2>
<P>Since OpenOffice.org build times are pretty high and the goal is
to have at all times a milestone available which is in release quality,
no commits to the master codeline are made. OpenOffice.org is
developed by more than 100 developers, it builds for more than 10
platforms, for more than 25 languages and it has more than 7 million
lines of code with a plenty of build time needed for a complete
recompile. So the risk of breaking something is pretty high, even if
the comitters is sure about his changes. Due to this complexity we
introduced the concept of doing any feature development and bug fixes
on cvs branches. This means that a new feature has to be developed on
a cvs branch, until the feature is complete and has been tested on at
least to major platforms (usually one Unix derivate and Windows). The
same applies for bugs fixes, but bug fixes should be grouped together
on one branch.</P>
<P><IMG SRC="OOo_cws_html_697e8ea2.png" NAME="Graphic3" ALIGN=LEFT WIDTH=351 HEIGHT=125 BORDER=0><BR CLEAR=LEFT>These
branches are called within the OpenOffice.org environment child
workspaces. Since it is possible to create many child workspaces
in parallel, some additional processes has been developed to make
life more easy and secure on these child workspaces. For example, the
problem of “repeated merges” is quite common in cvs. This
situation occurs quite often when dealing with many branches in
parallel, for example if a bug fix has been applied to more than one branch.
</P>
<H3 CLASS="western">Child workspace resynchronization</H3>
<P>Many of the “repeated merge” problems can be solved before the
merge back to the master branch if you were able to bring your copy
of the cvs branch up to date of the latest know stable version of
your master. For this the resynchronization action (cwsresync)
command has been introduced.</P>
<P><IMG SRC="OOo_cws_html_78507a9f.png" NAME="Graphic4" ALIGN=LEFT WIDTH=406 HEIGHT=137 BORDER=0><BR CLEAR=LEFT>The
resync mechanism is able to deal with repeated operation, so that
this process can be executed frequently. In case a conflict has to be
resolved, this will happen in the child workspace, so the risk of
having a broken master workspace is less than in the classical
approach, when a branch will be merged back to the master with the
usual 'cvs update' command.</P>
<H3 CLASS="western">Child workspace reintegration</H3>
<P>When all the changes being made on a child workspace are joined
back, the log history of the branch will be saved and stored in the
log history of the trunk as well. Otherwise the tracking of what had
happened on a branch is difficult.</P>
<P>Since the reintegration is always done by a unique entity (usually
Release Engineering associated with this codeline) we loose the
ability to see the original author of a single line with the 'cvs
annotate' command, but we still are able to see when a line of code
has been changed and can use the log for getting more details.</P>
<H3 CLASS="western"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">revision
1.38</FONT></FONT></H3>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">date:
2004/04/02 13:49:24; author: rt; state: Exp; lines: +9 -1</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">INTEGRATION:
CWS sj05 (1.34.80); FILE MERGED</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">2004/03/15
13:47:50 sj 1.34.80.4: RESYNC: (1.36-1.37); FILE MERGED</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">2004/02/13
17:38:38 sj 1.34.80.3: RESYNC: (1.34-1.36); FILE MERGED</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">2004/02/09
15:01:36 cl 1.34.80.2: #i20484# added new CustomShape ui</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">2004/02/04
11:39:15 cl 1.34.80.1: #i20484# added new CustomShape ui</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">----------------------------</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">revision
1.37</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">date:
2004/02/25 15:55:41; author: kz; state: Exp; lines: +0 -10</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">INTEGRATION:
CWS layoutmanager (1.34.20); FILE MERGED</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">2004/02/19
16:33:04 cd 1.34.20.3: RESYNC: (1.35-1.36); FILE MERGED</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">2004/01/29
16:56:22 cd 1.34.20.2: RESYNC: (1.34-1.35); FILE MERGED</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">2003/11/24
07:25:16 cd 1.34.20.1: #111899# Remove old menu controller
registration</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">----------------------------</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">revision
1.36</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">date:
2004/02/03 16:35:11; author: hr; state: Exp; lines: +17 -12</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">INTEGRATION:
CWS dialogdiet (1.34.60); FILE MERGED</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">2004/01/26
14:32:05 mba 1.34.60.3: #i22972#: SvxErrorHandler needs to be created
by apps</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">2004/01/19
23:47:01 mba 1.34.60.2: RESYNC: (1.34-1.35); FILE MERGED</FONT></FONT></P>
<P CLASS="frame-contents" STYLE="margin-bottom: 0in"><FONT FACE="Courier, monospace"><FONT SIZE=1 STYLE="font-size: 8pt">2003/11/28
18:08:12 mba 1.34.60.1: #i22972#: offmgr removed</FONT></FONT></P>
<H3 CLASS="western">Environment Information System (EIS)</H3>
<P>There is a web frontend to view a list of child workspaces and
their status (
<A HREF="http://eis.services.openoffice.org/EIS2/servlet/GuestLogon">http://eis.services.openoffice.org/EIS2/servlet/GuestLogon</A>).
The status of a child workspace and the corresponding master
workspace can be viewed.</P>
</body>
</HTML>