mirror of https://github.com/postgres/postgres
for git. Change other references from cvs to git as well.REL8_4_STABLE
parent
40f34ec4fd
commit
35b2f93e71
@ -1,271 +0,0 @@ |
|||||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/cvs.sgml,v 1.51.2.1 2009/12/07 19:20:01 mha Exp $ --> |
|
||||||
|
|
||||||
<appendix id="cvs"> |
|
||||||
<appendixinfo> |
|
||||||
<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> |
|
||||||
<author> |
|
||||||
<firstname>David</firstname> |
|
||||||
<surname>Fetter</surname> |
|
||||||
</author> |
|
||||||
</authorgroup> |
|
||||||
<date>1999-05-20</date> |
|
||||||
</appendixinfo> |
|
||||||
|
|
||||||
<title>The Source Code Repository</title> |
|
||||||
|
|
||||||
<para> |
|
||||||
The <productname>PostgreSQL</productname> source code is stored and managed using the |
|
||||||
<productname>CVS</productname> version control system. An official mirror using |
|
||||||
<productname>Git</productname> is also available, for those who wish to use a |
|
||||||
distributed version control system. This mirror is automatically |
|
||||||
updated whenever the main repository changes, so it always contains the latest |
|
||||||
versions of all branches. |
|
||||||
</para> |
|
||||||
|
|
||||||
<para> |
|
||||||
Using <productname>git</> is the most flexible way to work with the source, and it |
|
||||||
allows you to work offline without having constant access to the project servers. |
|
||||||
<productname>rsync</> based <productname>cvs</> also lets you work offline, but |
|
||||||
lacks many of the other advantages of <productname>git</>. |
|
||||||
</para> |
|
||||||
|
|
||||||
<para> |
|
||||||
Our Wiki, <ulink |
|
||||||
url="http://wiki.postgresql.org/wiki/Working_with_CVS"></ulink> and |
|
||||||
<ulink url="http://wiki.postgresql.org/wiki/Working_with_Git"></ulink>, |
|
||||||
has additional details on working with CVS and Git. |
|
||||||
</para> |
|
||||||
|
|
||||||
<sect1 id="git"> |
|
||||||
<title>Getting The Source Via <productname>Git</></title> |
|
||||||
|
|
||||||
<para> |
|
||||||
With <productname>git</> you will make a copy of the entire code repository |
|
||||||
to your local machine, so you will have access to all history and branches |
|
||||||
offline. This is the fastest and most flexible way to develop or test |
|
||||||
patches. |
|
||||||
</para> |
|
||||||
|
|
||||||
<procedure> |
|
||||||
<title>Git</title> |
|
||||||
|
|
||||||
<step> |
|
||||||
<para> |
|
||||||
You will need an installed version of <productname>git</>, which you can get |
|
||||||
from <ulink url="http://git-scm.com"></ulink>. Many systems also have a recent |
|
||||||
version of <application>git</> installed by default, or available in their |
|
||||||
package repository system. |
|
||||||
</para> |
|
||||||
</step> |
|
||||||
|
|
||||||
<step> |
|
||||||
<para> |
|
||||||
To being using the git repository, make a clone of the official mirror: |
|
||||||
|
|
||||||
<programlisting> |
|
||||||
git clone git://git.postgresql.org/git/postgresql.git |
|
||||||
</programlisting> |
|
||||||
|
|
||||||
This will copy the full repository to your local machine, so it may take |
|
||||||
a while to complete, especially if you have a slow internet connection. |
|
||||||
</para> |
|
||||||
|
|
||||||
<para> |
|
||||||
The git mirror can also be reached via the http protocol in case for example |
|
||||||
a firewall is blocking access to the git protocol. Just replace the URL |
|
||||||
like: |
|
||||||
|
|
||||||
<programlisting> |
|
||||||
git clone http://git.postgresql.org/git/postgresql.git |
|
||||||
</programlisting> |
|
||||||
|
|
||||||
The http protocol is less efficient than the git protocol, so it will be |
|
||||||
slightly slower to use. |
|
||||||
</para> |
|
||||||
</step> |
|
||||||
|
|
||||||
<step> |
|
||||||
<para> |
|
||||||
Whenever you want to get the latest updates in the system, <command>cd</> |
|
||||||
into the repository, and run: |
|
||||||
|
|
||||||
<programlisting> |
|
||||||
git fetch |
|
||||||
</programlisting> |
|
||||||
</para> |
|
||||||
</step> |
|
||||||
</procedure> |
|
||||||
<para> |
|
||||||
<productname>git</> can do a lot more things than just fetch the source. For |
|
||||||
more information, consult the man pages for the product, or the website at |
|
||||||
<ulink url="http://git-scm.com"></>. |
|
||||||
</para> |
|
||||||
</sect1> |
|
||||||
|
|
||||||
<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.nongnu.org/cvs/"></ulink> (the official |
|
||||||
site with the latest version) or any GNU software archive site |
|
||||||
(often somewhat outdated). 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 <filename>.cvspass</filename> 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. |
|
||||||
</para> |
|
||||||
|
|
||||||
<para> |
|
||||||
This initial checkout is a little slower than simply downloading |
|
||||||
a <filename>tar.gz</filename> file. The advantage of <productname>CVS</> |
|
||||||
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 -z3 |
|
||||||
update -d -P |
|
||||||
</programlisting> |
|
||||||
|
|
||||||
This supplies the <option>-z3</option> option to all <command>cvs</> commands, and the |
|
||||||
<option>-d</option> and <option>-P</option> options to <command>cvs update</>. Then you just have |
|
||||||
to say: |
|
||||||
<programlisting> |
|
||||||
cvs update |
|
||||||
</programlisting> |
|
||||||
|
|
||||||
to update your files. |
|
||||||
</para> |
|
||||||
</step> |
|
||||||
</procedure> |
|
||||||
|
|
||||||
<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.nongnu.org/cvs/"></ulink>. |
|
||||||
</para> |
|
||||||
<para> |
|
||||||
<productname>CVS</productname> has deficiencies. For example, |
|
||||||
generating diffs that add or remove files requires write access to the |
|
||||||
CVS repository. To work around that deficiency, use |
|
||||||
<productname>cvsutils</productname>, which is packaged in several |
|
||||||
operating systems, and is available in source form at <ulink |
|
||||||
url="http://www.red-bean.com/cvsutils/"></ulink>, or use <productname>git</> |
|
||||||
or another system designed to work offline. |
|
||||||
</para> |
|
||||||
|
|
||||||
<para> |
|
||||||
Note that building <productname>PostgreSQL</productname> from a CVS |
|
||||||
pull requires reasonably up-to-date versions of <application>bison</> |
|
||||||
and <application>flex</>, which are not needed to build from a distribution |
|
||||||
tarball because the files made with them are pre-built in a tarball. |
|
||||||
You will need Perl as well. |
|
||||||
Otherwise the tool requirements are the same as building from source. |
|
||||||
</para> |
|
||||||
</sect1> |
|
||||||
|
|
||||||
<sect1 id="rsync"> |
|
||||||
<title>Getting The Source Via <productname>rsync</productname></title> |
|
||||||
|
|
||||||
<para> |
|
||||||
An alternative to using anonymous CVS for retrieving the |
|
||||||
<productname>PostgreSQL</productname> source tree is |
|
||||||
<productname>rsync</productname>, an incremental file transfer tool. |
|
||||||
A major advantage to using <productname>rsync</productname> instead of |
|
||||||
plain <productname>cvs</> is that it |
|
||||||
can reliably replicate the <emphasis>entire</emphasis> CVS repository |
|
||||||
on your local system, allowing fast local access to <command>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> |
|
||||||
|
|
||||||
<para> |
|
||||||
You can download the CVS repository using this command: |
|
||||||
<programlisting> |
|
||||||
rsync -avzH --delete anoncvs.postgresql.org::pgsql-cvs cvsroot/ |
|
||||||
</programlisting> |
|
||||||
For full instructions, see the "rsync" section in the |
|
||||||
<ulink url="http://pgfoundry.org/docman/view.php/1000040/4/PGBuildFarm-HOWTO.txt"> |
|
||||||
pgbuildfarm instructions</ulink>. |
|
||||||
</para> |
|
||||||
</sect1> |
|
||||||
</appendix> |
|
||||||
@ -0,0 +1,93 @@ |
|||||||
|
<!-- doc/src/sgml/sourcerepo.sgml --> |
||||||
|
|
||||||
|
<appendix id="sourcerepo"> |
||||||
|
<title>The Source Code Repository</title> |
||||||
|
|
||||||
|
<para> |
||||||
|
The <productname>PostgreSQL</productname> source code is stored and managed using the |
||||||
|
<productname>Git</productname> version control system. An public mirror of this |
||||||
|
is available and updated within a minute of the master repository. |
||||||
|
</para> |
||||||
|
|
||||||
|
<para> |
||||||
|
Our wiki, <ulink |
||||||
|
url="http://wiki.postgresql.org/wiki/Working_with_Git"></ulink>, |
||||||
|
has additional details on working with Git. |
||||||
|
</para> |
||||||
|
|
||||||
|
<para> |
||||||
|
Note that building <productname>PostgreSQL</productname> from the source |
||||||
|
repository requires reasonably up-to-date versions of <application>bison</> |
||||||
|
and <application>flex</>. These tools are not needed to build from a |
||||||
|
distribution tarball since their output is included in the file. |
||||||
|
You will need Perl as well, but otherwise the tool requirements are the |
||||||
|
same. |
||||||
|
</para> |
||||||
|
|
||||||
|
<sect1 id="git"> |
||||||
|
<title>Getting The Source Via <productname>Git</></title> |
||||||
|
|
||||||
|
<para> |
||||||
|
With <productname>Git</> you will make a copy of the entire code repository |
||||||
|
to your local machine, so you will have access to all history and branches |
||||||
|
offline. This is the fastest and most flexible way to develop or test |
||||||
|
patches. |
||||||
|
</para> |
||||||
|
|
||||||
|
<procedure> |
||||||
|
<title>Git</title> |
||||||
|
|
||||||
|
<step> |
||||||
|
<para> |
||||||
|
You will need an installed version of <productname>Git</>, which you can get |
||||||
|
from <ulink url="http://git-scm.com"></ulink>. Many systems also have a recent |
||||||
|
version of <application>Git</> installed by default, or available in their |
||||||
|
package repository system. |
||||||
|
</para> |
||||||
|
</step> |
||||||
|
|
||||||
|
<step> |
||||||
|
<para> |
||||||
|
To being using the Git repository, make a clone of the official mirror: |
||||||
|
|
||||||
|
<programlisting> |
||||||
|
git clone git://git.postgresql.org/git/postgresql.git |
||||||
|
</programlisting> |
||||||
|
|
||||||
|
This will copy the full repository to your local machine, so it may take |
||||||
|
a while to complete, especially if you have a slow Internet connection. |
||||||
|
</para> |
||||||
|
|
||||||
|
<para> |
||||||
|
The Git mirror can also be reached via the HTTP protocol in case for example |
||||||
|
a firewall is blocking access to the Git protocol. Just replace the URL |
||||||
|
like: |
||||||
|
|
||||||
|
<programlisting> |
||||||
|
git clone http://git.postgresql.org/git/postgresql.git |
||||||
|
</programlisting> |
||||||
|
|
||||||
|
The HTTP protocol is less efficient than the Git protocol, so it will be |
||||||
|
slower to use. |
||||||
|
</para> |
||||||
|
</step> |
||||||
|
|
||||||
|
<step> |
||||||
|
<para> |
||||||
|
Whenever you want to get the latest updates in the system, <command>cd</> |
||||||
|
into the repository, and run: |
||||||
|
|
||||||
|
<programlisting> |
||||||
|
git fetch |
||||||
|
</programlisting> |
||||||
|
</para> |
||||||
|
</step> |
||||||
|
</procedure> |
||||||
|
<para> |
||||||
|
<productname>Git</> can do a lot more things than just fetch the source. For |
||||||
|
more information, consult the man pages for the product, or the website at |
||||||
|
<ulink url="http://git-scm.com"></>. |
||||||
|
</para> |
||||||
|
</sect1> |
||||||
|
|
||||||
|
</appendix> |
||||||
Loading…
Reference in new issue