Une alternative au CVS anonyme pour obtenir l'arbre source de PostgreSQL™ est CVSup™. CVSup™ a été développé par John Polstra (<jdp@polstra.com>) pour distribuer des arbres de référence CVS et d'autres arborescences de fichiers pour le projet FreeBSD .
Un des avantages majeurs de CVSup™ est la réplication fiable de la totalité du référentiel CVS sur le système local. Cela permet un accès rapide aux opérations cvs telles que log ou diff. L'autre avantage est la synchronisation efficace avec le serveur PostgreSQL™ grâce à un protocole de flux de transfert qui ne transmet que les différences depuis la dernière mise à jour.
Deux groupes de répertoires sont nécessaires à CVSup™ : un entrepôt contenant le référentiel CVS™ local (ou simplement un groupe de répertoires si seul un extrait est récupéré et non le référentiel complet ; voir plus loin) et une zone de stockage propre à CVSup™. Ces deux groupes de répertoires peuvent coexister dans la même arborescence.
Il faut alors décider de l'emplacement de la copie locale du référentiel CVS™. Sur un de ses systèmes, l'auteur a récemment créé un référentiel dans /home/cvs/, mais utilisait jusque-là /opt/postgres/cvs/ comme arbre de développement pour PostgreSQL™. Pour placer le référentiel dans /home/cvs/, ajouter
setenv CVSROOT /home/cvs
dans le fichier .cshrc, .bashrc ou dans .profile, en fonction de l'interpréteur de commandes (shell).
La zone de référentiel de cvs doit être initialisée. Une fois CVSROOT initialisée, il suffit de faire :
cvs init
après quoi devrait au moins exister un répertoire CVSROOT :
$ ls $CVSROOT CVSROOT/
Vérifier que cvsup est dans le chemin ( path ). Sur la plupart des systèmes, cela se fait en tapant
which cvsup
Lancer alors cvsup :
cvsup -L 2 postgres.cvsup
où -L 2 active certains messages de statut pour suivre la progression de la mise à jour et postgres.cvsup représente la chemin et le nom donnés au fichier de configuration CVSup™.
Un fichier de configuration CVSup™ modifié pour une installation spécifique, qui maintient un référentiel CVS™ local complet est présenté ci-après.
# Ce fichier représente le fichier de distribution CVSup standard
# pour le projet de SGBDRO PostgreSQL™
# Modifié par lockart@fourpalms.org 1997-08-28
# - Pointe vers mon arborescence de référence locale
# - Extrait le référentiel CVS complet, pas seulement la
# dernière version
#
#Valeurs par défaut qui s'appliquent à toutes les collections
*default host=cvsup.postgresql.org
*default compress
*default release=cvs
*default delete use-rel-suffix
# Activer la ligne suivante pour récupérer la dernière version
#*default tag=.
# Activer la ligne suivante pour récupérer ce qui est précisé au dessus ou
# par défaut à la date précisée en dessous
#*default date=97.08.29.00.00.00
# répertoire de base où CVSup stocke ses fichiers 'marque page'
# créera un sous répertoire sup/
#*default base=/opt/postgres # /usr/local/pgsql
*default base=/home/cvs
# répertoire préfixe où CVSup stocke les distributions
*default prefix=/home/cvs
# Distribution complète, avec tout ce qui est en dessous
pgsql
# distributions partielles
# pgsql-doc
# pgsql-perl5
# pgsql-src
Si repository est indiqué à la place de pgsql dans la configuration précédente, une copie complète du dépôt cvsup.postgresql.org est récupérée. Ce qui inclut le répertoire CVSROOT. Il faudra alors probablement exclure du répertoire les fichiers qui seront modifiés localement. Pour cela, utiliser un fichier de refus. Par exemple, pour la configuration précédente, on peut avoir dans le fichier /home/cvs/sup/repository/refuse :
CVSROOT/config* CVSROOT/commitinfo* CVSROOT/loginfo*
Voir les pages man de CVSup™ pour savoir comment utiliser les fichiers de refus.
Ce qui suit est une suggestion de fichier de configuration CVSup™ issue du site FTP de PostgreSQL™, qui ne récupère que la version courante :
# Ce fichier représente la distribution CVSup standard pour le
# projet de SGBDRO PostgreSQL™.
#
# Valeurs par défaut qui s'appliquent à toutes les collections.
*default host=cvsup.postgresql.org
*default compress
*default release=cvs
*default delete use-rel-suffix
*default tag=.
# répertoire de base où CVSup stocke ses fichiers 'marque page'
*default base=/usr/local/pgsql
# répertoire préfixe où CVSup stocke les distributions
*default prefix=/usr/local/pgsql
# Distribution complète, avec tout ce qui est en dessous
pgsql
# distributions partielles
# pgsql-doc
# pgsql-perl5
# pgsql-src