Development of the Debian PostgreSQL packages
=============================================

Package structure
-----------------
To keep the maintenance of the packages as easy as possible, as much
packaging logic as possible should be put into postgresql-common. The
server packages (postgresql-X.Y) should not contain any conffile but
a generic init script (which just calls hook functions shipped by
postgresql-common). Likewise, their maintainer scripts should only
call the hooks offered by postgresql-common.

This structure makes it easy to fix packaging bugs for all available
major versions by only uploading a new version of the small
postgresql-common package. It also keeps the effort of packaging a new
major version as small as possible.

Revision control system
-----------------------
Package development happens with the distributed revision
control system "bazaar" (http://bazaar-vcs.org). This allows anybody
to create and develop a personal branch of the official package
without having write access to the trunk.

If you want to help with developing the packages, you should work with
bazaar to benefit from the features of a revision control system; this
will also allow the Debian maintainers to easily merge your changes
into the official packages.

The official Debian package branches are at

  http://anonscm.debian.org/bzr/pkg-postgresql/

The orig.tar.gz files are not kept under revision control since they
would only bloat the archive. They need to be downloaded separately
from any Debian mirror. "bzr bd" (from the bzr-builddeb package) will
fetch those automatically.

Creating your personal branch
-----------------------------
First, please make sure that bzr can figure out a correct email
address with

 $ bzr whoami

If it is not correct, please set the $EMAIL environment variable.

If you want to help with the package development or just want to
develop a feature you need, you should create your own branch where
you can commit to. As an example, let's create a branch of the
postgresql-common package:

  $ bzr branch http://bzr.debian.org/bzr/pkg-postgresql/postgresql-common/trunk/

Now you can happily use "bzr diff", "bzr commit", "bzr add", "bzr
pull", "bzr merge", and all the other features of revision control.

Publishing your branch
----------------------

You can use any server where you have ssh or sftp access (use sftp:// for the
latter) and which is http accessible:

  bzr push sftp://myuser@my.server.com:public_html/bzr/psql/common

After this initial command, "bzr push" is enough for subsequent
pushes, bzr remembers the last push location. This way you can keep
your remote branch up to date.

If you do not have any server available, you can create an account on Launchpad
(https://launchpad.net) and push it to lp:~<username>/postgresql/<branchname>.

If you developed a particular feature or bug fix and would like to see
it in the official package, please send a mail to
pkg-postgresql-public@lists.alioth.debian.org or to mpitt@debian.org,
and state the URL of your branch.

 -- Martin Pitt <mpitt@debian.org>
