Appendix DG1. The CVS ��ݥ��ȥ���֤�����

Table of Contents
CVS �Υĥ꡼��¤
ƿ̾(anonymous) CVS ���̤��ƥ� �������������
CVSup ��ͳ�ǥ��������äƤ���

The Postgres source code is stored and managed using the CVS code management system.

Postgres �Υ����������ɤϡ� CVS �����ɴ��������ƥ��ȤäƳ�Ǽ�� ��������Ƥ��ޤ���

At least two methods, anonymous CVS and CVSup, are available to pull the CVS code tree from the Postgres server to your local machine.

Postgres �Υ����Ф��餢�ʤ����ȤΥޥ� ��� CVS �����ɥĥ꡼�����ĥ�äƤ��� �ˤϡ����ʤ��Ȥ� anonymous CVS �� CVSup �Ȥ������Ĥ���ˡ������ޤ���

CVS �Υĥ꡼��¤

Author: Written by Marc G. Fournier on 1998-11-05.

The command cvs checkout has a flag, -r, 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 1.0 of the module `tc' at any time in the future:

cvs checkout �ˤϡ�����⥸�塼�������Υ�� �������ǡˤ�������å������Ȥ��뤿��� -r �� �����ե饰������ޤ�������ˤ�ꡢ����ˤ錄�äƤ��Ĥλ����ˤ��� �Ƥ⡢���Ȥ��аʲ��Τ褦�˥⥸�塼�� 'tc' �Υ�꡼�� 1.0 �Ȥʤ� ����������Ф����Ȥ��ä����Ȥ��Ǥ��ޤ���

$ cvs checkout -r REL6_4 tc
   
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: You can also check out a module as it was at any given date using the -D option.

�ޤ� -D ��Ȥ��ȡ�����⥸�塼���Ϳ����줿 ���դǥ����å������Ȥ������Τ褦�˸����뤳�Ȥ��Ǥ��ޤ���

When you tag more than one file with the same tag you can think about the tag as "a curve drawn through a matrix of filename vs. revision number". Say we have 5 files with the following revisions:

���İʾ�Υե������Ʊ��������Ĥ������Ǥ⡢���Υ�����֥ե��� ��̾���ǿ��ˤ��ޥȥ�å������̤��������줿�����֡פȸ��ʤ����� ���Ǥ��ޤ������Ȥ��С��ʲ��Τ褦��ʣ�����Ǥ���ģ��ĤΥե����뤬 ����Ȥ��ޤ���

             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
   
then the tag "TAG" will reference file1-1.2, file2-1.3, etc. ��ư�줬�ʤ����� �����Ƥ��Υ��� "TAG" �� file1-1.2, file2-1.3 ��ؤ��Ƥ���Ȥ��ޤ���

Note: For creating a release branch, other then a -b option added to the command, it's the same thing. ���ʤ�Ȥʤ���̣�����ʤΤǡ����ޤ����Ƥޤ���

��꡼���Ѥλޤ���������ˤϡ����ޥ�ɤ� -b ���ץ������ɲä��� ���ޤ���

So, to create the v6.4 release I did the following:

�Ĥޤꡢv6.4 �Ǥ�������뤿��ˡ���ϰʲ��Τ褦�ˤ��ޤ�����

$ cd pgsql
$ cvs tag -b REL6_4
   
which will create the tag and the branch for the RELEASE tree. ����Ϥ��Υ����ȡ���꡼���ѤΥĥ꡼�Τ���λޤ���ޤ���

Now, for those with CVS access, it's too simple. First, create two subdirectories, RELEASE and CURRENT, so that you don't mix up the two. Then do:

�����ޤǤ���С��ºݤ� CVS �ǥ������� ����Τ����˴�ñ�Ǥ����ޤ� RELEASE ��CURRENT �Ȥ������ĤΥ��� �ǥ��쥯�ȥ���äơ����Ĥ���������ʤ��褦�ˤ��ޤ���

cd RELEASE
cvs checkout -P -r REL6_4 pgsql
cd ../CURRENT
cvs checkout -P pgsql
   
which results in two directory trees, RELEASE/pgsql and CURRENT/pgsql. From that point on, CVS will keep track of which repository branch is in which directory tree, and will allow independent updates of either tree. ���η�̤� RELEASE/pgsql �� CURRENT/pgsql �Ȥ������ĤΥǥ��쥯�ȥ�˽��Ϥ���ޤ��� ���λ������顢CVS �������Υǥ��쥯�� ����ˤ����ݥ��ȥ�λޤ�ƻ뤹��褦�ˤʤ�Τǡ������λޤϤ��� ������Ω���ƹ����Ǥ���褦�ˤʤ�ޤ���

If you are only working on the CURRENT source tree, you just do everything as before we started tagging release branches.

CURRENT �Υ������ĥ꡼���������Ǻ�Ȥ��Ƥ���¤�ϡ���꡼���ѤλޤΥ�����Ĥ� �Ϥ������Ʊ�ͤ��ˡ����򤷤Ƥ�����פǤ���

After you've done the initial checkout on a branch

���λޤǡ��ǽ�Υ����å�������

$ cvs checkout -r REL6_4
   
anything you do within that directory structure is restricted to that branch. If you apply a patch to that directory structure and do a ��Ѥޤ�����ϡ����Υǥ��쥯�ȥ깽¤�������ǹԤä����ȤϤ��٤Ƥ� �λޤ����������˱ƶ�����褦�����¤���ޤ������Υǥ��쥯�ȥ깽¤ �إѥå���Ŭ�Ѥ����������
cvs commit
   
while inside of it, the patch is applied to the branch and only the branch. ����С����λ� ���� �˥ѥå���Ŭ�Ѥ���ޤ���