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 packages are built from Martin Pitt's branches which are available at https://code.launchpad.net/postgresql This contains the following branches: common (postgresql-common package) debian-8.1 (all available major versions) debian-8.2 debian-8.3 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. 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://bazaar.launchpad.net/~pitti/postgresql/common Now you can happily use "bzr diff", "bzr commit", "bzr add", "baz pull", "bzr merge", and all the other features of revision control. Publishing your branch ---------------------- The prefered method of publishing your branch is to create a Launchpad account and put your branch there as well, so that all branches are managed in one place, and can be browsed, subscribed to, etc. bzr push bzr+ssh://@bazaar.launchpad.net/~/postgresql/ Of course you can also use any other 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 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