SVNBOOK Chap1 Versioning Models
Un article de Framalang Wiki.
Cette page fait partie du projet Version control with subversion.
| Pseudo | Code | Rôle | Statut |
|---|---|---|---|
| Penguin | Traduction | Terminé | |
| Flo | Relecture | ||
| Validation |
Sommaire |
[modifier] Titre
[modifier] Paragraphe 1
[modifier] Paragraphe 2
The Problem of File-Sharing
All version control systems have to solve the same fundamental problem: how will the system allow users to share information, but prevent them from accidentally stepping on each other's feet? It's all too easy for users to accidentally overwrite each other's changes in the repository.Le Problème du Partage de Fichiers
Tous les systèmes de gestion de versions doivent résoudre le même problème fondamental : comment le système va-t-il permettre aux utilisateurs de partager l'information, mais les empêcher de se marcher mutuellement sur les pieds par accident ? Il est vraiment trop facile pour les utilisateurs d'écraser malencontreusement les changements effectués par d'autres dans le dépôt.[modifier] Paragraphe 3
[modifier] Paragraphe 4
The Lock-Modify-Unlock Solution
Many version control systems use a lock-modify-unlock model to address the problem of many authors clobbering each other's work. In this model, the repository allows only one person to change a file at a time. This exclusivity policy is managed using locks. Harry must “lock” a file before he can begin making changes to it. If Harry has locked a file, then Sally cannot also lock it, and therefore cannot make any changes to that file. All she can do is read the file, and wait for Harry to finish his changes and release his lock. After Harry unlocks the file, Sally can take her turn by locking and editing the file. Figure 1.3, “The lock-modify-unlock solution” demonstrates this simple solution.La Solution "Verrouiller-Modifier-Libérer"
Beaucoup de systèmes de gestion de versions utilisent le modèle verrouiller-modifier-libérer pour résoudre le problème de plusieurs auteurs annihilant le travail des autres. Dans ce modèle, le dépôt ne permet qu'à une seule personne de modifier un fichier à un instant donné. Cette politique exclusive est gérée grâce à des verrous ("lock" en anglais). Harry doit "verrouiller" un fichier avant de commencer à le modifier. Si Harry a verrouillé un fichier, alors Sally ne pourra pas le verrouiller, et ne pourra donc faire aucun changement dessus. Tout ce qu'elle pourra faire sera de lire le fichier, et attendre que Harry ait fini ses changements et libéré le verrou. Après que Harry ait libéré le fichier, Sally peut le prendre à son tour en le verrouillant et en éditant le fichier. La figure 1.3, "La solution verrouiller-modifier-libérer" montre cette solution simple.[modifier] Paragraphe 5
The problem with the lock-modify-unlock model is that it's a bit restrictive, and often becomes a roadblock for users:
- Locking may cause administrative problems. Sometimes Harry will lock a file and then forget about it. Meanwhile, because Sally is still waiting to edit the file, her hands are tied. And then Harry goes on vacation. Now Sally has to get an administrator to release Harry's lock. The situation ends up causing a lot of unnecessary delay and wasted time.
- Locking may cause unnecessary serialization. What if Harry is editing the beginning of a text file, and Sally simply wants to edit the end of the same file? These changes don't overlap at all. They could easily edit the file simultaneously, and no great harm would come, assuming the changes were properly merged together. There's no need for them to take turns in this situation.
- Locking may create a false sense of security. Suppose Harry locks and edits file A, while Sally simultaneously locks and edits file B. But what if A and B depend on one another, and the changes made to each are semantically incompatible? Suddenly A and B don't work together anymore. The locking system was powerless to prevent the problem—yet it somehow provided a false sense of security. It's easy for Harry and Sally to imagine that by locking files, each is beginning a safe, insulated task, and thus not bother discussing their incompatible changes early on. Locking often becomes a substitute for real communication.
Le problème avec le modèle verrouiller-modifier-libérer est qu'il est relativemnt restrictif, et devient souvent un barrage pour les utilisateurs :
- Le verrouillage peut créer des problèmes d'administration. Parfois, Harry va verrouiller un fichier et oublier qu'il l'a fait. Pendant ce temps, Sally est encore en train d'attendre pour éditer le fichier, bloquée. Puis Harry part en vacances. Sally doit alors aller trouver un administrateur pour libérer le verrou de Harry. La situation se résout mais a généré beaucoup de délais inutiles et de temps perdu.
- Le verrouillage peut créer une sérialisation inutile. Que se passe-t-il lorsque Harry veut éditer le début d'un fichier texte et que Sally veut simplement éditer la fin de ce même fichier ? Les changements ne se chevauchent pas du tout. Ils pourraient aisément éditer le fichier simultanément, et il n'y aurait pas beaucoup de dégât, en supposant que les changements soient correctement fusionnés ensemble. Il n'est pas nécessaire pour eux d'attendre leur tour.
- Le verrouillage peut créer un faux sentiment de sécurité. Supposons que Harry verrouille et édite le fichier A, pendant que Sally verrouille simultanément et édite le fichier B. Mais si A et B dépendent l'un de l'autre et que les changements faits à chacun sont incompatibles ? A et B ne fonctionnent soudainement plus ensemble. Le système de verrouillage est incapable de prévenir ce problème, donnant même un faux sentiment de sécurité. Il est facile à Harry et Sally d'imaginer qu'en verrouillant les fichiers, chacun commence une tâche sûre, isolée, et donc ne se préoccupent pas de discuter des incompatibilités créées par leur changement. Verrouiller devient souvent un substitut à une réelle communication.
[modifier] Paragraphe 6
The Copy-Modify-Merge Solution
Subversion, CVS, and many other version control systems use a copy-modify-merge model as an alternative to locking. In this model, each user's client contacts the project repository and creates a personal working copy—a local reflection of the repository's files and directories. Users then work simultaneously and independently, modifying their private copies. Finally, the private copies are merged together into a new, final version. The version control system often assists with the merging, but ultimately a human being is responsible for making it happen correctly.La Solution Copier-Modifier-Fusionner
Subversion, CVS, et beaucoup d'autres systèmes de gestion de version utilisent le modèle copier-modifier-fusionner comme alternative au verrouillage. Dans ce modèle, chaque utilisateur client contacte le dépôt du projet et crée une copie de travail personnelle, un reflet local des fichiers et des répertoires du dépôt. Les utilisateurs peuvent alors travailler simultanément et indépendamment, modifiant leurs copies privées. Enfin, les copies privées sont fusionnées dans une nouvelle version finale. Le système de gestion de versions aide souvent à réaliser cette fusion, mais la responsabilité finale incombe à un être humain pour que cela se passe correctement.[modifier] Paragraphe 7
[modifier] Paragraphe 8
[modifier] Paragraphe 9
[modifier] Paragraphe 10
[modifier] Paragraphe 11
When Locking is Necessary
While the lock-modify-unlock model is considered generally harmful to collaboration, there are still times when locking is appropriate.
The copy-modify-merge model is based on the assumption that files are contextually mergeable: that is, that the majority of the files in the repository are line-based text files (such as program source code). But for files with binary formats, such as artwork or sound, it's often impossible to merge conflicting changes. In these situations, it really is necessary to users to take strict turns when changing the file. Without serialized access, somebody ends up wasting time on changes that are ultimately discarded.
While Subversion is still primarily a copy-modify-merge system, it still recognizes the need to lock an occasional file and thus provide mechanisms for this. This feature is discussed later in this book, in the section called “Locking”.Lorsque Verrouiller est Nécessaire
Même si le modèle verrouiller-modifier-libérer est en général considéré comme pénalisant pour la collaboration, il existe toutefois des cas où le verrouillage est approprié.
Le modèle copier-modifier-fusionner se base sur la supposition que les fichiers sont contextuellement fusionnables: c'est-à-dire que la majorité des fichiers d'un dépôt sont des fichiers textes (comme le code source d'un programme). Mais pour les fichiers binaires, comme des images ou du son, il est souvent impossible de fusionner les modifications ayant créé un conflit. Dans ces cas-là, il est réellement nécessaire que les utilisateurs soient rigoureux lorsqu'ils font des changements. Sans accès sérialisé, quelqu'un finira par perdre son temps dans des modifications qui seront finalement abandonnées.
Bien que Subversion soit avant tout un système copier-modifier-fusionner, il reconnaît toutefois la nécessité du verrouillage sur certains fichiers bien particuliers et fournit donc un mécanisme pour cela. Cette fonctionnalité sera traitée plus tard dans ce livre, dans la section appelée "Verrouillage".
