<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >CVS Tree Organization</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REV="MADE" HREF="mailto:pgsql-docs@postgresql.org"><LINK REL="HOME" TITLE="PostgreSQL 8.0.11 Documentation" HREF="index.html"><LINK REL="UP" TITLE="The CVS Repository" HREF="cvs.html"><LINK REL="PREVIOUS" TITLE="The CVS Repository" HREF="cvs.html"><LINK REL="NEXT" TITLE="Getting The Source Via CVSup" HREF="cvsup.html"><LINK REL="STYLESHEET" TYPE="text/css" HREF="stylesheet.css"><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"><META NAME="creation" CONTENT="2007-02-02T03:57:22"></HEAD ><BODY CLASS="SECT1" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="5" ALIGN="center" VALIGN="bottom" >PostgreSQL 8.0.11 Documentation</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="cvs.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="cvs.html" >Fast Backward</A ></TD ><TD WIDTH="60%" ALIGN="center" VALIGN="bottom" >Appendix F. The <SPAN CLASS="PRODUCTNAME" >CVS</SPAN > Repository</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="top" ><A HREF="cvs.html" >Fast Forward</A ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="top" ><A HREF="cvsup.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="CVS-TREE" >F.2. <SPAN CLASS="PRODUCTNAME" >CVS</SPAN > Tree Organization</A ></H1 ><P > </P><DIV CLASS="NOTE" ><BLOCKQUOTE CLASS="NOTE" ><P ><B >Author: </B > Written by Marc G. Fournier (<CODE CLASS="EMAIL" ><<A HREF="mailto:scrappy@hub.org" >scrappy@hub.org</A >></CODE >) on 1998-11-05 </P ></BLOCKQUOTE ></DIV ><P> </P ><P > The command <TT CLASS="COMMAND" >cvs checkout</TT > has a flag, <TT CLASS="OPTION" >-r</TT >, that lets you check out a certain revision of a module. This flag makes it easy to, for example, retrieve the sources that make up release 6_4 of the module `tc' at any time in the future: </P><PRE CLASS="PROGRAMLISTING" >$ cvs checkout -r REL6_4 tc </PRE ><P> This is useful, for instance, if someone claims that there is a bug in that release, but you cannot find the bug in the current working copy. <DIV CLASS="TIP" ><BLOCKQUOTE CLASS="TIP" ><P ><B >Tip: </B > You can also check out a module as it was at any given date using the <TT CLASS="OPTION" >-D</TT > option. </P ></BLOCKQUOTE ></DIV > </P ><P > When you tag more than one file with the same tag you can think about the tag as <SPAN CLASS="QUOTE" >"a curve drawn through a matrix of filename vs. revision number"</SPAN >. Say we have 5 files with the following revisions: </P><PRE CLASS="PROGRAMLISTING" > file1 file2 file3 file4 file5 1.1 1.1 1.1 1.1 /--1.1* <-*- TAG 1.2*- 1.2 1.2 -1.2*- 1.3 \- 1.3*- 1.3 / 1.3 1.4 \ 1.4 / 1.4 \-1.5*- 1.5 1.6 </PRE ><P> then the tag <TT CLASS="LITERAL" >TAG</TT > will reference file1-1.2, file2-1.3, etc. </P><DIV CLASS="NOTE" ><BLOCKQUOTE CLASS="NOTE" ><P ><B >Note: </B > For creating a release branch, other than a <TT CLASS="LITERAL" >-b</TT > option added to the command, it's the same thing.</P ></BLOCKQUOTE ></DIV ><P> </P ><P > So, to create the 6.4 release I did the following: </P><PRE CLASS="PROGRAMLISTING" >$ cd pgsql $ cvs tag -b REL6_4 </PRE ><P> which will create the tag and the branch for the RELEASE tree. </P ><P > For those with <SPAN CLASS="PRODUCTNAME" >CVS</SPAN > access, it's simple to create directories for different versions. First, create two subdirectories, RELEASE and CURRENT, so that you don't mix up the two. Then do: </P><PRE CLASS="PROGRAMLISTING" >cd RELEASE cvs checkout -P -r REL6_4 pgsql cd ../CURRENT cvs checkout -P pgsql </PRE ><P> which results in two directory trees, <TT CLASS="FILENAME" >RELEASE/pgsql</TT > and <TT CLASS="FILENAME" >CURRENT/pgsql</TT >. From that point on, <SPAN CLASS="PRODUCTNAME" >CVS</SPAN > will keep track of which repository branch is in which directory tree, and will allow independent updates of either tree. </P ><P > If you are <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >only</I ></SPAN > working on the <TT CLASS="LITERAL" >CURRENT</TT > source tree, you just do everything as before we started tagging release branches. </P ><P > After you've done the initial checkout on a branch </P><PRE CLASS="PROGRAMLISTING" >$ cvs checkout -r REL6_4 </PRE ><P> anything you do within that directory structure is restricted to that branch. If you apply a patch to that directory structure and do a </P><PRE CLASS="PROGRAMLISTING" >cvs commit </PRE ><P> while inside of it, the patch is applied to the branch and <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >only</I ></SPAN > the branch. </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="cvs.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="cvsup.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >The <SPAN CLASS="PRODUCTNAME" >CVS</SPAN > Repository</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="cvs.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Getting The Source Via <SPAN CLASS="PRODUCTNAME" >CVSup</SPAN ></TD ></TR ></TABLE ></DIV ></BODY ></HTML >