⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cvs.sgml

📁 PostgreSQL7.4.6 for Linux
💻 SGML
📖 第 1 页 / 共 2 页
字号:
<!--$Header: /cvsroot/pgsql/doc/src/sgml/cvs.sgml,v 1.25 2003/06/11 15:28:55 tgl Exp $CVS code repositoryThomas Lockhart--><appendix id="cvs"> <docinfo>  <authorgroup>   <author>    <firstname>Marc</firstname>    <surname>Fournier</surname>   </author>   <author>    <firstname>Tom</firstname>    <surname>Lane</surname>   </author>   <author>    <firstname>Thomas</firstname>    <surname>Lockhart</surname>   </author>  </authorgroup>  <date>1999-05-20</date> </docinfo> <title>The <productname>CVS</productname> Repository</title> <para>  The <productname>PostgreSQL</productname> source code is stored and managed using the  <productname>CVS</productname> code management system. </para> <para>  At least two methods,  anonymous CVS and <productname>CVSup</productname>,  are available to pull the <productname>CVS</productname> code tree from the  <productname>PostgreSQL</productname> server to your local machine. </para> <sect1 id="anoncvs">  <title>Getting The Source Via Anonymous <productname>CVS</productname></title>  <para>   If you would like to keep up with the current sources on a regular   basis, you can fetch them from our <productname>CVS</productname> server   and then use <productname>CVS</productname> to   retrieve updates from time to time.  </para>  <procedure>   <title>Anonymous CVS</title>   <step>    <para>     You will need a local copy of <productname>CVS</productname>     (Concurrent Version Control System), which you can get from     <ulink url="http://www.cyclic.com/">http://www.cyclic.com/</ulink> or     any GNU software archive site.     We currently recommend version 1.10 (the most recent at the time     of writing). Many systems have a recent version of     <application>cvs</application> installed by default.    </para>   </step>   <step>    <para>     Do an initial login to the <productname>CVS</productname> server:     <programlisting>cvs -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot login     </programlisting>     You will be prompted for a password; you can enter anything except     an empty string.    </para>    <para>     You should only need to do this once, since the password will be     saved in <literal>.cvspass</literal> in your home directory.    </para>   </step>   <step>    <para>     Fetch the <productname>PostgreSQL</productname> sources:     <programlisting>cvs -z3 -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot co -P pgsql     </programlisting>     This installs the <productname>PostgreSQL</productname> sources into a     subdirectory <filename>pgsql</filename>     of the directory you are currently in.     <note>      <para>       If you have a fast link to the Internet, you may not need       <option>-z3</option>, which instructs       <productname>CVS</productname> to use gzip compression for transferred data.  But       on a modem-speed link, it's a very substantial win.      </para>     </note>    </para>    <para>     This initial checkout is a little slower than simply downloading     a <filename>tar.gz</filename> file; expect it to take 40 minutes or so if you     have a 28.8K modem.  The advantage of     <productname>CVS</productname>     doesn't show up until you want to update the file set later on.    </para>   </step>   <step>    <para>     Whenever you want to update to the latest <productname>CVS</productname> sources,     <command>cd</command> into     the <filename>pgsql</filename> subdirectory, and issue     <programlisting>$ cvs -z3 update -d -P     </programlisting>     This will fetch only the changes since the last time you updated.     You can update in just a couple of minutes, typically, even over     a modem-speed line.    </para>   </step>   <step>    <para>     You can save yourself some typing by making a file <filename>.cvsrc</filename>     in your home directory that contains     <programlisting>cvs -z3update -d -P     </programlisting>     This supplies the <option>-z3</option> option to all cvs commands, and the     <option>-d</option> and <option>-P</option> options to cvs update.  Then you just have     to say     <programlisting>$ cvs update     </programlisting>     to update your files.    </para>   </step>  </procedure>  <caution>   <para>    Some older versions of <productname>CVS</productname> have a bug that    causes all checked-out files to be stored world-writable in your    directory.  If you see that this has happened, you can do something like    <programlisting>$ chmod -R go-w pgsql    </programlisting>    to set the permissions properly.    This bug is fixed as of    <productname>CVS</productname> version 1.9.28.   </para>  </caution>  <para>   <productname>CVS</productname> can do a lot of other things,   such as fetching prior revisions   of the <productname>PostgreSQL</productname> sources   rather than the latest development version.   For more info consult the manual that comes with   <productname>CVS</productname>, or see the online   documentation at   <ulink url="http://www.cyclic.com/">http://www.cyclic.com/</ulink>.  </para> </sect1> <sect1 id="cvs-tree">  <title><productname>CVS</productname> Tree Organization</title>  <para>   <note>    <title>Author</title>    <para>     Written by Marc G. Fournier (<email>scrappy@hub.org</email>) on 1998-11-05    </para>   </note>  </para>  <para>   The command <command>cvs checkout</command> has a flag, <option>-r</option>,   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:   <programlisting>$ cvs checkout -r REL6_4 tc   </programlisting>   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.   <tip>    <para>     You can also check out a module as it was at any given date using the     <option>-D</option> option.    </para>   </tip>  </para>  <para>   When you tag more than one file with the same tag you can think   about the tag as <quote>a curve drawn through a matrix of filename vs.   revision number</quote>.  Say we have 5 files with the following revisions:   <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   </programlisting>   then the tag <literal>TAG</literal> will reference   file1-1.2, file2-1.3, etc.   <note>    <para>     For creating a release branch, other then a     -b option added to the command, it's the same thing.</para>   </note>  </para>  <para>   So, to create the 6.4 release   I did the following:   <programlisting>$ cd pgsql$ cvs tag -b REL6_4   </programlisting>   which will create the tag and the branch for the RELEASE tree.  </para>  <para>   For those with <productname>CVS</productname> 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:   <programlisting>cd RELEASEcvs checkout -P -r REL6_4 pgsqlcd ../CURRENTcvs checkout -P pgsql   </programlisting>   which results in two directory trees, <filename>RELEASE/pgsql</filename> and   <filename>CURRENT/pgsql</filename>. From that point on,   <productname>CVS</productname>   will keep track of which repository branch is in which directory tree, and will   allow independent updates of either tree.  </para>  <para>   If you are <emphasis>only</emphasis> working on the <literal>CURRENT</literal>   source tree, you just do   everything as before we started tagging release branches.  </para>  <para>   After you've done the initial checkout on a branch   <programlisting>$ cvs checkout -r REL6_4   </programlisting>   anything you do within that directory structure is restricted to that   branch.  If you apply a patch to that directory structure and do a   <programlisting>cvs commit   </programlisting>   while inside of it, the patch is applied to the branch and   <emphasis>only</emphasis> the branch.  </para> </sect1> <sect1 id="cvsup">  <title>Getting The Source Via <productname>CVSup</productname></title>  <para>   An alternative to using anonymous CVS for retrieving   the <productname>PostgreSQL</productname> source tree   is <productname>CVSup</productname>.   <productname>CVSup</productname> was developed by   John Polstra (<email>jdp@polstra.com</email>) to   distribute CVS repositories and other file trees for   <ulink url="http://www.freebsd.org">the FreeBSD project</ulink>.  </para>  <para>   A major advantage to using   <productname>CVSup</productname> is that it can reliably   replicate the <emphasis>entire</emphasis> CVS repository on your local system,   allowing fast local access to cvs operations such as <option>log</option>   and <option>diff</option>. Other advantages include fast synchronization to   the <productname>PostgreSQL</productname> server due to an efficient   streaming transfer protocol which only sends the changes since the last update.  </para>  <sect2>   <title>Preparing A <productname>CVSup</productname> Client System</title>   <para>    Two directory areas are required for <productname>CVSup</productname>    to do it's job: a local <productname>CVS</productname> repository    (or simply a directory area if you are fetching a snapshot rather    than a repository; see below)    and a local <productname>CVSup</productname> bookkeeping    area. These can coexist in the same directory tree.   </para>   <para>    Decide where you want to keep your local copy of the    <productname>CVS</productname> repository. On one of our systems we    recently set up a repository in <filename>/home/cvs/</filename>,    but had formerly kept it under a    <productname>PostgreSQL</productname> development tree in    <filename>/opt/postgres/cvs/</filename>. If you intend to keep your    repository in <filename>/home/cvs/</filename>, then put    <programlisting>setenv CVSROOT /home/cvs    </programlisting>    in your <filename>.cshrc</filename> file, or a similar line in    your <filename>.bashrc</filename> or    <filename>.profile</filename> file, depending on your shell.   </para>   <para>    The <application>cvs</application> repository area must be initialized.    Once <envar>CVSROOT</envar> is set, then this can be done with a    single command:    <programlisting>$ cvs init    </programlisting>    after which you should see at least a directory named    <filename>CVSROOT</filename> when listing the    <envar>CVSROOT</envar> directory:    <programlisting>$ ls $CVSROOTCVSROOT/    </programlisting>   </para>  </sect2>  <sect2>   <title>Running a <productname>CVSup</productname> Client</title>   <para>    Verify that    <application>cvsup</application> is in your path; on most systems    you can do this by typing    <programlisting>which cvsup    </programlisting>    Then, simply run    <application>cvsup</application> using:    <programlisting>$ cvsup -L 2 <replaceable class="parameter">postgres.cvsup</replaceable>    </programlisting>    where <option>-L 2</option> enables some status messages so you    can monitor the progress of the update,    and <replaceable class="parameter">postgres.cvsup</replaceable> is    the path and name you have given to your    <productname>CVSup</productname> configuration file.   </para>   <para>    Here is a <productname>CVSup</productname> configuration file    modified for a specific installation, and which maintains a full    local <productname>CVS</productname> repository:    <programlisting># This file represents the standard CVSup distribution file# for the <productname>PostgreSQL</> ORDBMS project# Modified by lockhart@fourpalms.org 1997-08-28# - Point to my local snapshot source tree# - Pull the full CVS repository, not just the latest snapshot## Defaults that apply to all the collections*default host=cvsup.postgresql.org*default compress*default release=cvs*default delete use-rel-suffix# enable the following line to get the latest snapshot#*default tag=.# enable the following line to get whatever was specified above or by default# at the date specified below#*default date=97.08.29.00.00.00# base directory where CVSup will store its 'bookmarks' file(s)# will create subdirectory sup/#*default base=/opt/postgres # /usr/local/pgsql*default base=/home/cvs# prefix directory where CVSup will store the actual distribution(s)*default prefix=/home/cvs# complete distribution, including all belowpgsql# individual distributions vs 'the whole thing'# pgsql-doc# pgsql-perl5# pgsql-src   </programlisting>   </para>   <para>    The following is a suggested <productname>CVSup</productname> config file from    <ulink url="ftp://ftp.postgresql.org/pub/CVSup/README.cvsup">the <productname>PostgreSQL</> ftp site</ulink>    which will fetch the current snapshot only:    <programlisting># This file represents the standard CVSup distribution file# for the <productname>PostgreSQL</> ORDBMS project

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -