Ventury Networks’ Blog

“If it walks like a duck and quacks like a duck, I would call it a duck.”

Installer un Store Repository pour VisualWorks


Introduction

Le développement d’un application peut ammener à “faire des essais” pouvant conduire à une perte de fonctionnalité. La possibilité de “revenir en arrière” dans le code, c’est à dire, retrouver le code source précédent, peut avoir des intérêts non négligeables.

Le fait de stocker son code de façon séparée de son image de développement, dans le cas de Smalltalk/VisualWorks, permet aussi de s’assurer de sa consistance. A partir d’une image vierge, il est possible de recharger uniquement le code développé, et s’assurer ainsi que celui ci fonctionne, sans dépendre de packages qui ne seraient pas chargés.

VisualWorks dispose d’un outils nommé “Store” s’interfaçant avec une base de données pour stocker le code. Simple d’emploi, celui ci permet la publication/récupération de versions de codes, un peu à la manière de svn ou cvs. Pour le mettre en fonctionnement, il suffit d’avoir sous la main une base de données.

Store prend en charge les bases de données suivantes : Oracle, SqlServer, PostgreSQL, DB2, Intervase, MSAccess. Les deux premières sont supportées par Cincom, les autres proviennent de contributions extérieures. Cependant, Store fonctionne très bien avec PostgreSQL, et c’est d’ailleurs celle base qui sera utilisée.

PosgreSQL WebSiteInstaller PostgreSQL

Pour installer un serveur PostgreSQL sur linux, il faut exécuter

# yum -y install postgresql postgresql-server

sous Fedora ou

# apt-get install postgresql postgresql-client

pour une distribution Debian. Pour les autres distributions, utilisez votre gestionnaire de paquetage préféré, ou partez des sources de PostgreSQL.

Ajouter deux utilisateurs

Les commandes suivantes permettent la création des utilisateurs de la base de donnée :

# su – postgres
$ createuser -a -d -P BERN
$ createuser -A -D -P user

Le premier utilisateur (BERN) aurra le droit de créer des bases de données (-d) et des utilisateurs (-a). Le second n’aurra pas le droit de créer desbases ni des utilisateurs (-D -A).

Ajouter une base

Pour créer une base de donnée, on éxécutera la commande suivante :

$ createdb store

Ecouter les interfaces réseau

Par défaut, PostgreSQL n’écoute que l’interface réseau de loopback. Si l’on souhaite utiliser cette base depuis l’extérieur (i.e., si la base se trouve sur une autre machine que celle de développement), il faut modifier le fichier de configuration de postgreSQL, situé dans /etc/posgresql/XX/main/postgresql.conf pour une distribution Debian, où XX est la version de PostgreSQL installée.

Il faut décommenter l’une des premières lignes positionnant la variable tcpip_socket et lui affecter la valeur “true”

# - Connection Settings -
tcpip_socket = true
...
port = 5432

Le port par défaut est le port 5432. Si vous en changez, il faudra en tenir compte plus loin.

Autoriser les accès

Il faut maintenant autoriser les utilisateurs à acceder à cette base. L’ajout, à la fin du fichier , situé dans le même repertoire que le fichier postgresql.conf, de la ligne suivant, autorise tout les utilisateurs à accéder à la base store depuis n’import quel machine, avec un mot de passe chiffré par md5 :

host    store    all    0.0.0.0    0.0.0.0    md5

La seule chose à modifier sur cette ligne est le nom de la base, ici “store”. La syntaxe est la suivante :

TYPE    DATABASE    USER    IP-ADRESS    IP-MASK    METHOD

Cette configuration est un peu permissive, et doit être adaptée à vos contraintes de sécurité. Pensez également à adapter les règles de votre pare-feu en conséquence.

Construire le Store

Une fois la base et les utilisateurs en place, ouvrez une image vierge de VisualWorks. Vérifiez que le parcel StoreForPostgreSQL est bien chargé, via le Parcel Manager (System->Parcel Manager, onglet Suggestion, dossier “Store Tools”). Puis, dans un workspace, évaluez l’expression suivante :

Store.DbRegistry installDatabaseTables

Dans la fenêtre de connexion, renseignez les champs comme suit :

Interface: PostgreSQLEXDIConnection

Environment: ipDeLaMachine_store

User Name: BERN

Password: (à votre avis ?)

Table Owner: BERN

Attention : si vous avez utilisé un autre port pour PostgreSQL, vous devez le préciser dans le champ environment. Par exemple : ipDeLaMachine:15432_store. Vous pouvez par ailleurs remplace l’ip de la machine par son nom d’hôte.

A la question “installer les tables”, répondez OK.

A la question “install user management tables”, répondez NO.

Voilà, c’est terminé.

Store ConnectUtiliser le Store

Dans votre image de développement, connectez vous au store via le menu Store->Connect to repository. Utilisez cette fois ci le nom d’utilisateur sans privilèges crée précédement (le second, nommé ici “user”).

Interface: PostgreSQLEXDIConnection

Environment: ipDeLaMachine_store

User Name: user

Password: (à votre avis ?)

Table Owner: BERN

Dans le browser, un clic droit sur un package vous permet d’accéder au menu “publish…” qui vous permettra de publier le package sur le store. Une fois le package publié, vous pouvez le retrouver/recharger via le menu Store->Published Items. Choisissez alors la version qui vous interesse.

Cincom SmalltalkInformations complémentaires

N’importe quelle installation de PostgreSQL fonctionnelle permet l’utilisation de Store, et cela quelque soit la plateforme sur laquelle celle ci est installée (Linux, Windows …).

L’utilisation de Store, et de tout les outils associés (notament l’outils de fusion, Merge Tool), est décrite dans le document Source Code Management Guide (SourceCodeMgmtGuide.pdf), situé dans le repertoire doc/ de votre installation de VisualWorks.

VisualWorks est un IDE Smalltalk téléchargeable et utilisable gratuitement pour un usage non commercial ou académique.

Tags :