27.2. Détermination des facteurs de sélection d'un programme

Certains facteurs sont importants à considérer lorsque vous décidez du programme à utiliser.

27.2.1. Client-serveur ou pair à pair

Deux modèles différents sont couramment utilisés pour la distribution des données. Dans le premier modèle, tous les clients synchronisent leurs fichiers dans un serveur central. Le serveur doit être accessible par tous les clients au moins occasionnellement. Il s'agit du modèle utilisé par Subversion, CVS et WebDAV.

L'autre possibilité consiste à laisser les hôtes en réseau synchroniser leurs données comme des pairs. Il s'agit du concept adopté par unison. rsync fonctionne en fait en mode client, mais tout client peut également agir comme serveur.

27.2.2. Portabilité

Subversion, CVS et unison sont également disponibles sur un grand nombre d'autres systèmes d'exploitation, notamment divers systèmes Unix et Windows.

27.2.3. Interactif ou automatique

Dans Subversion, CVS, WebDAV et Unison, l'utilisateur démarre manuellement la synchronisation des données. Cela permet de contrôler avec finesse les données à synchroniser et facilite la gestion des conflits. Toutefois, si les intervalles de synchronisation sont trop espacés, des conflits risquent davantage de se produire.

27.2.4. Conflits : incidence et solution

Il est rare que des conflits se produisent dans Subversion ou CVS, même lorsque plusieurs personnes travaillent sur un projet de grande envergure. Cela vient de ce que les documents sont fusionnés sur la base des lignes individuelles. Lorsqu'un conflit se produit, un seul client est concerné. Généralement, les conflits dans Subversion ou CVS se résolvent facilement.

Unison signale les conflits et permet que les fichiers concernés soient exclus de la synchronisation. Toutefois, les changements ne peuvent être fusionnés aussi facilement que dans Subversion ou CVS.

Contrairement à Subversion ou à CVS, où il est possible d'accepter partiellement des changements en cas de conflit, WebDAV n'effectue un archivage que lorsque la modification complète est considérée comme réussie.

Il n'y a pas gestion de conflit dans rsync. L'utilisateur doit veiller à ne pas remplacer accidentellement des fichiers et doit résoudre manuellement tous les conflits possibles. Pour davantage de sécurité, un système de suivi des versions tel que RCS peut être employé en supplément.

27.2.5. Sélection et ajout de fichiers

Dans sa configuration standard, Unison synchronise une arborescence complète. Les nouveaux fichiers qui apparaissent dans l'arborescence sont inclus automatiquement à la synchronisation.

Dans Subversion ou CVS, les nouveaux répertoires et fichiers doivent être ajoutés de façon explicite en utilisant respectivement la commande svn add ou cvs add. Cela apporte un meilleur contrôle à l'utilisateur sur les fichiers à synchroniser. D'un autre côté, les nouveaux fichiers sont souvent oubliés, en particulier lorsque les points d'interrogation de la sortie de svn update et svn status ou cvs update sont ignorés du fait du grand nombre de fichiers.

27.2.6. Historique

Une fonction supplémentaire de Subversion ou de CVS est la reconstruction possible des versions anciennes de fichiers. Une brève remarque d'édition peut être insérée à chaque changement et le développement des fichiers peut être suivi facilement en     fonction du contenu et des remarques. Cela reste une aide précieuse pour ceux-ci et les textes de programme.

27.2.7. Volume de données et configuration du disque dur

Une quantité suffisante d'espace disponible pour toutes les données distribuées est requise sur les disques durs de tous les hôtes concernés. Subversion et CVS nécessitent de l'espace supplémentaire pour la base de données du référentiel sur le serveur. L'historique des fichiers est également stocké sur le serveur, ce qui nécessite encore plus d'espace. Lorsque des fichiers en format texte sont modifiés, seules les lignes modifiées doivent être enregistrées. Les fichiers binaires nécessitent un espace supplémentaire équivalent à la taille du fichier à chaque modification de celui-ci.

27.2.8. Interface graphique

Unison offre une interface utilisateur graphique qui affiche les procédures de synchronisation qu'Unison veut effectuer. Acceptez la proposition ou excluez des fichiers individuels de la synchronisation. En mode texte, confirmez les procédures individuelles de façon interactive.

Les utilisateurs expérimentés exécutent normalement Subversion ou CVS à partir de la ligne de commande. Toutefois, des interfaces utilisateur graphiques sont disponibles pour Linux, telles que cervisia, et pour d'autres systèmes d'exploitation, telles que wincvs. De nombreux outils de développement, tels que kdevelop, et des éditeurs de texte, tels que emacs, assurent la prise en charge de CVS ou de Subversion. La résolution des conflits est souvent beaucoup plus simple à gérer avec ces frontaux.

27.2.9. Convivialité

Unison et rsync sont assez simples à utiliser et sont adaptés aux débutants. CVS et Subversion sont un peu plus difficiles à utiliser. Les utilisateurs doivent comprendre l'interaction entre le référentiel et les données locales. Les changements de données doivent être d'abord fusionnés localement avec le référentiel. Cela s'effectue par la commande cvs update ou svn update. Les données doivent ensuite être renvoyées au référentiel avec la commande cvs commit ou svn commit. Lorsque cette procédure a été comprise, les débutants peuvent également utiliser CVS ou Subversion facilement.

27.2.10. Sécurité vis-à-vis des attaques

Au cours de la transmission, les données doivent idéalement être protégées contre l'interception et la manipulation. Unison, CVS, rsync et Subversion peuvent facilement être utilisés via ssh (shell sécurisé), et offrent une sécurité contre les attaques de ce type. L'exécution de CVS ou de Unison via rsh (shell distant) doit être évitée. L'accès à CVS avec le mécanisme pserver dans des réseaux non sécurisés n'est pas non plus recommandé. Subversion fournit déjà les mesures de sécurité nécessaires dans son exécution avec Apache.

27.2.11. Protection contre la perte de données

CVS est utilisé depuis longtemps par les développeurs pour gérer des projets de programmes. Il est extrêmement stable. Du fait que l'historique du développement est enregistré, CVS offre même la protection contre certaines erreurs de l'utilisateur, telles que la suppression accidentelle d'un fichier. Bien que Subversion ne soit pas aussi courant que CVS, il est déjà utilisé dans les environnements de production, par exemple, par le projet Subversion lui-même.

Unison est encore relativement nouveau, mais revendique un niveau élevé de stabilité. Toutefois, il est plus sensible aux erreurs des utilisateurs. Lorsque la synchronisation de la suppression d'un fichier a été confirmée, il n'existe aucun moyen de restaurer le fichier.

Tableau 27.1. Fonctions des outils de synchronisation de fichiers : -- = très mauvaise, - = mauvaise ou non disponible, o = moyenne, + = bonne, ++ = excellente, x = disponible

unison

CVS/SVN

rsync

mailsync

Client/Serveur

égal

C-S/C-S

C-S

égal

Portabilité

Lin,Un*x,Win

Lin,Un*x,Win

Lin,Un*x,Win

Lin,Un*x

Interactivité

x

x/x

x

-

Vitesse

-

o/+

+

+

Conflits

o

++/++

o

+

Sél. fichier

Rép.

Sél. fichier, rép.

Rép.

Boîte aux lettres

Historique

-

x/x

-

-

Espace disque

o

--

o

+

Interface graphique

+

o/o

-

-

Difficulté

+

o/o

+

o

Attaques

+(ssh)

+/+(ssh)

+(ssh)

+(SSL)

Perte de données

+

++/++

+

+