<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML ><HEAD ><TITLE >Advanced usage</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.59"><LINK REL="HOME" TITLE="Cervisia Manual" HREF="index.html"><LINK REL="PREVIOUS" TITLE="Watching an annotated view of a file" HREF="annotate.html"><LINK REL="NEXT" TITLE="Using watches" HREF="watches.html"><META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css"><META NAME="Generator" CONTENT="KDE DBMSS Customisation $Revision: 1.65 $"><LINK REL="stylesheet" HREF="common/kde-common.css" TYPE="text/css"><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"><META HTTP-EQUIV="Content-Language" CONTENT="en"><LINK REL="stylesheet" HREF="common/kde-localised.css" TYPE="text/css" TITLE="KDE-English"><LINK REL="stylesheet" HREF="common/kde-default.css" TYPE="text/css" TITLE="KDE-Default"></HEAD ><BODY CLASS="CHAPTER" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#AA0000" VLINK="#AA0055" ALINK="#AA0000" STYLE="font-family: sans-serif; position:absolute; left: 0px; top: 0px; right: 0px; bottom: 0px;" ><TABLE CLASS="navheader" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD CLASS="bulb" ><IMG SRC="common/doctop1.png" ALT="" WIDTH="150" HEIGHT="85"></TD ><TD COLSPAN="2" HEIGHT="85" CLASS="headline" ><H1 ><SPAN CLASS="APPLICATION" >Cervisia</SPAN > Manual</H1 ></TD ></TR ><TR STYLE="background-color: #515151;" CLASS="navrow" ><TD ALIGN="left" CLASS="left" HEIGHT="25" ><A HREF="annotate.html" >Prev</A ></TD ><TD ALIGN="center" CLASS="center" HEIGHT="25" > </TD ><TD ALIGN="right" CLASS="right" HEIGHT="25" ><A HREF="watches.html" >Next</A ></TD ></TR ><TR ><TD COLSPAN="3" CLASS="shadow" ><IMG WIDTH="100%" SRC="common/shadow.png" ALT="" HEIGHT="14"></TD ></TR ></TABLE ><DIV CLASS="CHAPTER" ><H1 ><A NAME="ADVANCEDUSAGE" >Chapter 4. Advanced usage</A ></H1 ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="TAGGINGBRANCHING" >4.1. Tagging and branching</A ></H1 ><P > We discuss here only the technical aspects of tagging and branching. If you are only a <TT CLASS="LITERAL" >user</TT >, not the administrator of the repository, you will probably not be confronted with the problem. If however you are your own administrator, you should first read about the non-technical problems that accompany branching, in order to get an impression of how time-consuming and error-prone maintaining different branches of a project can be. The appendix includes some references about this topic. </P ><P > Simple tagging is something you usually do when a release is made, so that you can at any time easily get back to the project state at that time. Tags are usually given a name consisting of the project name and the version number. For example, <SPAN CLASS="APPLICATION" >Cervisia</SPAN > 1.0 is available under the tag <TT CLASS="LITERAL" >CERVISIA_1_0</TT >. <SPAN CLASS="APPLICATION" >Cervisia</SPAN > enforces <SPAN CLASS="APPLICATION" >CVS</SPAN >'s strict rules about what constitutes valid tag name. It must begin with a letter and may contain letters, digits, hypens and underscores. </P ><P > Normally, you will want to tag the whole project (although <SPAN CLASS="APPLICATION" >CVS</SPAN > of course allows you to tag only a subset). To this end, mark the toplevel directory in the view and choose <SPAN CLASS="GUIMENU" >Advanced</SPAN >-><SPAN CLASS="GUIMENUITEM" >Tag/Branch</SPAN >. Now enter the name of the tag, press <B CLASS="KEYCAP" >Return</B > and you are done! </P ><P > Creating a branch is not significantly more difficult: In the tag dialog, check the box <SPAN CLASS="GUIBUTTON" >Create branch with this tag</SPAN >. You can also delete an existing tag: Choose <SPAN CLASS="GUIMENU" >Advanced</SPAN >-><SPAN CLASS="GUIMENUITEM" >Delete tag</SPAN > in the main view. </P ><P > There are several ways to update to a certain state of the project: <UL ><LI ><P > You can update to a certain tag. Use <SPAN CLASS="GUIMENU" >Advanced</SPAN >-><SPAN CLASS="GUIMENUITEM" >Update to tag/date</SPAN > for this. The same procedure is used for updating to a branch. The command issued by <SPAN CLASS="APPLICATION" >Cervisia</SPAN > is </P ><P > <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="90%" ><TR ><TD ><PRE CLASS="SCREEN" > <B CLASS="COMMAND" >cvs update -r <TT CLASS="REPLACEABLE" ><I >tag</I ></TT ></B ></PRE ></TD ></TR ></TABLE > </P ></LI ><LI ><P > You can update to a certain date. This may be useful if an error was introduced in the project between two releases, you know approximately between, and have an opinion on when that was. You can go to some date by choosing <SPAN CLASS="GUIMENU" >Advanced</SPAN >-><SPAN CLASS="GUIMENUITEM" >Update to tag/date</SPAN > and checking the box <SPAN CLASS="GUIBUTTON" >Update to date</SPAN >. In the field below, you can enter a wide variety of date formats. One possible format is <TT CLASS="LITERAL" >yyyy-mm-dd</TT > where <TT CLASS="LITERAL" >yyyy</TT > is the year, <TT CLASS="LITERAL" >mm</TT > is the month (numerically) and <TT CLASS="LITERAL" >dd</TT > is the day. Alternatives are some english phrases like <TT CLASS="LITERAL" >yesterday</TT > or <TT CLASS="LITERAL" >2 weeks ago</TT >. When you use this option, <SPAN CLASS="APPLICATION" >Cervisia</SPAN > uses the command </P ><P > <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="90%" ><TR ><TD ><PRE CLASS="SCREEN" > <B CLASS="COMMAND" >cvs update -D <TT CLASS="REPLACEABLE" ><I >date</I ></TT ></B ></PRE ></TD ></TR ></TABLE > </P ></LI ><LI ><P > Both options above make a tag or date 'sticky', i.e. you can not commit further modifications on that files (unless the tag is a branch tag). In order to get back to the trunk, also known as the branch with the name <TT CLASS="LITERAL" >HEAD</TT >, use the menu item <SPAN CLASS="GUIMENU" >Advanced</SPAN >-><SPAN CLASS="GUIMENUITEM" >Update to HEAD</SPAN >. This results in a command </P ><P > <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="90%" ><TR ><TD ><PRE CLASS="SCREEN" > <B CLASS="COMMAND" >cvs update <TT CLASS="OPTION" >-A</TT ></B ></PRE ></TD ></TR ></TABLE > </P ></LI ></UL > </P ><DIV CLASS="FIGURE" ><HR><A NAME="SCREENSHOT-UPDATETAG" ></A ><P ><B >Figure 4-1. A screenshot of <SPAN CLASS="APPLICATION" >Cervisia</SPAN >'s update to tag dialog</B ></P ><DIV CLASS="MEDIAOBJECT" ><P ><IMG SRC="updatetag.png" ></IMG ></P ></DIV ><HR></DIV ><P > Another aspect of branching is the merging of modifications from a branch to the current branch. If you are going to do this, choose <SPAN CLASS="GUIMENU" >Advanced</SPAN >-><SPAN CLASS="GUIMENUITEM" >Merge...</SPAN >. The dialog that appears now gives you two options: </P ><P > Either you may merge all modifications done on a branch to the current branch. In that case, check the box <SPAN CLASS="GUIBUTTON" >Merge from branch</SPAN > and fill in the branch you want to merge from. <SPAN CLASS="APPLICATION" >Cervisia</SPAN > will then execute the command </P ><P > <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" > <B CLASS="COMMAND" >cvs update <TT CLASS="OPTION" >-j</TT > <TT CLASS="REPLACEABLE" ><I >branchtag</I ></TT ></B ></PRE ></TD ></TR ></TABLE > </P ><P > The other possibility is that you want to merge only the modifications made between two tags on a branch. This usually happens when you merge from the same branch to the trunk several times. In that case, check the box <SPAN CLASS="GUIBUTTON" >Merge modifications</SPAN > and enter (in the correct order) the two relevant tags. This will result in a command </P ><P > <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" > <B CLASS="COMMAND" >cvs update <TT CLASS="OPTION" >-j</TT > <TT CLASS="REPLACEABLE" ><I >branchtag1</I ></TT > <TT CLASS="OPTION" >-j</TT > <TT CLASS="REPLACEABLE" ><I >branchtag2</I ></TT ></B ></PRE ></TD ></TR ></TABLE > </P ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><COLGROUP ><COL WIDTH="*"><COL WIDTH="227"></COLGROUP ><TBODY ><TR ><TD CLASS="end" WIDTH="100%" ><IMG SRC="common/bottom1.png" ALT="" HEIGHT="59"></TD ><TD ><A HREF="http://www.kde.org/" ><IMG SRC="common/bottom2.png" ALT="KDE Logo" WIDTH="227" BORDER="0" HEIGHT="59"></A ></TD ></TR ><TR ><TD HEIGHT="50" COLSPAN="2" > </TD ></TR ></TBODY ></TABLE ><TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="annotate.html" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="watches.html" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Watching an annotated view of a file</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Using watches</TD ></TR ></TABLE ></DIV ></BODY ></HTML >