.\" .\" aegis - project change supervisor .\" Copyright (C) 2000, 2001 Peter Miller; .\" All rights reserved. .\" .\" This program is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by .\" the Free Software Foundation; either version 2 of the License, or .\" (at your option) any later version. .\" .\" This program is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with this program; if not, write to the Free Software .\" Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. .\" .\" MANIFEST: document describing lib/en/howto/branchs .\" .nh 1 "Howto End A Branch" .LP ``OK, I give up. I do not understand the ending of branches.'' .LP Usually, you end development of a branch the same way you end development of a simple change. In this example, branch \fIexample.1.42\fP will be ended: .E( % \f[CB]aede -p example 1 -c 42\fP .ad l .fi aegis: project "example.1": change 42: file "\fIfubar\fP" in the baseline has changed since the last 'aegis -DIFFerence' command, you need to do a merge .nf % .E) Oops. Something went wrong. Don't panic! .LP I'm going to assume, for the purposes of explanation, that there have been changes in one of the ancestor branches, and thus require a merge, just like file \fIfubar\fP, above. .LP You need to bring file \fIfubar\fP up-to-date. How? You do it in a change set, like everything else. .LP At his point you need to do 5 things: (1) create a new change on example.1.42, (2) copy \fIfubar\fP into it, (3) merge \fIfubar\fP with branch "example.1" (4) end development of the change and integrate it, and (5) now you can end example.1.42 .LP The -GrandParent option is a special case of the -BRanch option. You are actually doing a cross-branch merge, just up-and-down rather than sideways. .E( % \f[CB]aem -gp\fP \f[CI]fubar\fP % .E) And manually fix any conflicts... naturally. .LP At this point, have a look at the file listing, it will show you something you have never seen before - it will show you what it is \fIgoing to\fP set the branch's edit_number_origin to for each file, at \fIaeipass\fP. .E( % \f[CB]ael cf\fP Type Action Edit File Name ------ ------ ------- ----------- source modify 1.3 aerect/rect.c {cross 1.2} .E) Now finish the change as usual... \fIaeb, aed, aede, aerpass, aeib, ..., aeipass\fP nothing special here. .LP One small tip: merge file files one at a time. It makes keeping track of where you are up to much easier. .LP Now you can end development of the branch, because all of the files are up-to-date. .LP In some cases, Aegis has detected a logical conflict where you, the human, know there is none. Remember that the \fIaem\fP command saves the old version of the file with a \f[CW],B\fP suffix (`B' for backup). If you have a file like this, just use .E( % \f[CB]mv\fP \f[CI]fubar\fP\f[CB],B\fP \f[CI]fubar\fP % .E) to discard everything from the ancestor branch, and use the current branch.