Commit 2429c327 authored by Bruce Momjian's avatar Bruce Momjian

Update FAQ_DEV.

parent f0074b60
...@@ -545,24 +545,23 @@ ...@@ -545,24 +545,23 @@
<H3><A name="15">15</A>) How are RPM's packaged?</H3> <H3><A name="15">15</A>) How are RPM's packaged?</H3>
<P>This was written by Lamar Owen:</P> <P>This was written by Lamar Owen:</P>
<P>
<PRE> <PRE>
As to how the RPMs are built -- to answer that question sanely requires As to how the RPMs are built -- to answer that question sanely requires
me to know how much experience you have with the whole RPM paradigm. me to know how much experience you have with the whole RPM paradigm.
'How is the RPM built?' is a multifaceted question. The obvious simple 'How is the RPM built?' is a multifaceted question. The obvious simple
answer is that I maintain: answer is that I maintain:
1.) A set of patches to make certain portions of the source 1.) A set of patches to make certain portions of the source
tree 'behave' in the different environment of the RPMset; tree 'behave' in the different environment of the RPMset;
2.) The initscript; 2.) The initscript;
3.) Any other ancilliary scripts and files; 3.) Any other ancilliary scripts and files;
4.) A README.rpm-dist document that tries to adequately document 4.) A README.rpm-dist document that tries to adequately document
both the differences between the RPM build and the WHY of the both the differences between the RPM build and the WHY of the
differences, as well as useful RPM environment operations differences, as well as useful RPM environment operations
(like, using syslog, upgrading, getting postmaster to (like, using syslog, upgrading, getting postmaster to
start at OS boot, etc); start at OS boot, etc);
5.) The spec file that throws it all together. This is not a 5.) The spec file that throws it all together. This is not a
trivial undertaking in a package of this size. trivial undertaking in a package of this size.
I then download and build on as many different canonical distributions I then download and build on as many different canonical distributions
as I can -- currently I am able to build on Red Hat 6.2, 7.0, and 7.1 on as I can -- currently I am able to build on Red Hat 6.2, 7.0, and 7.1 on
...@@ -635,24 +634,23 @@ stance. IMHO, of course. ...@@ -635,24 +634,23 @@ stance. IMHO, of course.
Of course, there are many projects that DO include all the files Of course, there are many projects that DO include all the files
necessary to build RPMs from their Official Tarball (TM). necessary to build RPMs from their Official Tarball (TM).
</PRE> </PRE>
<P>
<H3><A name="16">16</A>) How are CVS branches managed?</H3> <H3><A name="16">16</A>) How are CVS branches managed?</H3>
<P>This was written by Tom Lane:
<P> <P>This was written by Tom Lane:</P>
<PRE> <PRE>
If you just do basic &quot;cvs checkout&quot;, &quot;cvs update&quot;, &quot;cvs commit&quot;, then If you just do basic "cvs checkout", "cvs update", "cvs commit", then
you'll always be dealing with the HEAD version of the files in CVS. you'll always be dealing with the HEAD version of the files in CVS.
That's what you want for development, but if you need to patch past That's what you want for development, but if you need to patch past
stable releases then you have to be able to access and update the stable releases then you have to be able to access and update the
&quot;branch&quot; portions of our CVS repository. We normally fork off a branch "branch" portions of our CVS repository. We normally fork off a branch
for a stable release just before starting the development cycle for the for a stable release just before starting the development cycle for the
next release. next release.
The first thing you have to know is the branch name for the branch you The first thing you have to know is the branch name for the branch you
are interested in getting at. Unfortunately Marc has been less than are interested in getting at. Unfortunately Marc has been less than
100% consistent in naming the things. One way to check is to apply 100% consistent in naming the things. One way to check is to apply
&quot;cvs log&quot; to any file that goes back a long time, for example HISTORY "cvs log" to any file that goes back a long time, for example HISTORY
in the top directory: in the top directory:
$ cvs log HISTORY | more $ cvs log HISTORY | more
...@@ -681,16 +679,16 @@ keyword substitution: kv ...@@ -681,16 +679,16 @@ keyword substitution: kv
total revisions: 129; selected revisions: 129 total revisions: 129; selected revisions: 129
More---q More---q
Unfortunately &quot;cvs log&quot; isn't all that great about distinguishing Unfortunately "cvs log" isn't all that great about distinguishing
branches from tags --- it calls 'em all &quot;symbolic names&quot;. (A &quot;tag&quot; just branches from tags --- it calls 'em all "symbolic names". (A "tag" just
marks a specific timepoint across all files --- it's essentially a marks a specific timepoint across all files --- it's essentially a
snapshot whereas a branch is a changeable fileset.) Rule of thumb is snapshot whereas a branch is a changeable fileset.) Rule of thumb is
that names attached to four-number versions where the third number is that names attached to four-number versions where the third number is
zero represent branches, the others are just tags. Here we can see that zero represent branches, the others are just tags. Here we can see that
the extant branches are the extant branches are
REL7_1_STABLE REL7_1_STABLE
REL7_0_PATCHES REL7_0_PATCHES
REL6_5_PATCHES REL6_5_PATCHES
The next commit to the head will be revision 1.107, whereas any changes The next commit to the head will be revision 1.107, whereas any changes
committed into the REL7_1_STABLE branch will have revision numbers like committed into the REL7_1_STABLE branch will have revision numbers like
1.106.2.*, corresponding to the branch number 1.106.0.2 (don't ask where 1.106.2.*, corresponding to the branch number 1.106.0.2 (don't ask where
...@@ -705,25 +703,25 @@ with very little beta testing --- so whenever you commit an update to a ...@@ -705,25 +703,25 @@ with very little beta testing --- so whenever you commit an update to a
stable branch, you'd better be doubly sure that it's correct.) stable branch, you'd better be doubly sure that it's correct.)
Normally, to checkout the head branch, you just cd to the place you Normally, to checkout the head branch, you just cd to the place you
want to contain the toplevel &quot;pgsql&quot; directory and say want to contain the toplevel "pgsql" directory and say
cvs ... checkout pgsql cvs ... checkout pgsql
To get a past branch, you cd to whereever you want it and say To get a past branch, you cd to whereever you want it and say
cvs ... checkout -r BRANCHNAME pgsql cvs ... checkout -r BRANCHNAME pgsql
For example, just a couple days ago I did For example, just a couple days ago I did
mkdir ~postgres/REL7_1 mkdir ~postgres/REL7_1
cd ~postgres/REL7_1 cd ~postgres/REL7_1
cvs ... checkout -r REL7_1_STABLE pgsql cvs ... checkout -r REL7_1_STABLE pgsql
and now I have a maintenance copy of 7.1.*. and now I have a maintenance copy of 7.1.*.
When you've done a checkout in this way, the branch name is &quot;sticky&quot;: When you've done a checkout in this way, the branch name is "sticky":
CVS automatically knows that this directory tree is for the branch, CVS automatically knows that this directory tree is for the branch,
and whenever you do &quot;cvs update&quot; or &quot;cvs commit&quot; in this tree, you'll and whenever you do "cvs update" or "cvs commit" in this tree, you'll
fetch or store the latest version in the branch, not the head version. fetch or store the latest version in the branch, not the head version.
Easy as can be. Easy as can be.
...@@ -735,9 +733,8 @@ the tree right away after a major release --- we wait for a dot-release ...@@ -735,9 +733,8 @@ the tree right away after a major release --- we wait for a dot-release
or two, so that we won't have to double-patch the first wave of fixes. or two, so that we won't have to double-patch the first wave of fixes.
</PRE> </PRE>
<P>Also, Ian Lance Taylor points out that branches and tags can be <P>Also, Ian Lance Taylor points out that branches and tags can be
distiguished by using &quot;cvs status -v&quot;.</P> distiguished by using "cvs status -v".</P>
</BODY> </BODY>
</HTML> </HTML>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment