This page does not meet our wiki style guidelines. Please help improve this page by cleaning up its formatting. |
Extension Share
(Cette page est une traduction de l'original en Anglais ShareExtension)
Cette extension est distribuée avec Mercurial 1.3 et plus
Auteur : Matt Mackall
Vue d'ensemble
Cette extension autorise le partage d'une portion définie (ie. l'historique) d'un dépôt avec un ou plusieurs autres dépôts accessibles localement tout en maintenant un état indépendant de l'espace de travail. Ceci peut permettre de créer un répertoire de travail pour une branche plus rapidement et ceci à moindre coût. Ceci peut être aussi utilisé pour un mode de collaboration simple où tous les commits apparaissent immédiatement dans l'historique du répertoire partagé sans avoir besoin à des push et pull.
$ hg share project project-branch updating working directory 1040 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg share /path/to/network/project # crée 'project' 5298 files updated, 0 files merged, 0 files removed, 0 files unresolved
Mise en garde
Notez qu'une opération effectuée sur tout dépôt partagé affectera immédiatement tous ses pairs. En fait, c'est comme si commit faisait un push instantanément et atomiquement au dépôt parent et à tous ses descendants (i.e. tous les autres clones partagés du même parent). Mais, biensûr, il n'y a de push : commit écrit simplement dans le répertoire partagé par tous les pais .hg/store.
En particulier, les opérations qui détruisent ou modifient l'historique -- strip, rebase, etc. -- vont aussi détruire ou modifier l'historique dans tous les pairs clonés. Par exemple, si vous enlever trop de révisions dans un clone partagé, pouf ! Vous avez aussi supprimé ces révisions de tous ses pairs. Si vous faites des expériences avec des opérations destructives, vous devriez faire un clone total et jouer à l'intérieur de celui-ci en premier.
De même, réfléchissez intensivement à l'interaction entre les files Mercurial (MqExtension). Puisque .hg/patches n'est pas partagé entre les dépôts, il est possible que différents dépôts partagés aient des files de patchs différents. Cependant, les commandes MQ comme qpush et qpop créent et détruisent l'historique, ainsi, faire des push/pop sur des patchs va affecter tous les pairs clonés. Il n'est probablement pas une bonne idée de mixer MQ et les clones paragés. Si vous le faites, vous devriez définitivement interdire des push/pop sur les patchs dans un clone alors qu'un autre clone a les patchs d'appliqués.
En bref, il s'agit d'une petite modification qui affecte grandement l'usuel contrat "les clones sont indépendants" de Mercurial. Assurez vous de bien comprendre ce qu'il se passe avant de vous tirer une balle en pleine tête.
Configuration
Configurez votre .hgrc pour autoriser l'extension en ajoutant les lignes suivantes :
[extensions] share =
Voir aussi
SharedRepoExtension - prédécesseur par Brendan Cully (n'était pas distribué avec Mercurial)
LocalbranchExtension - extension pour partager un répertoire de travail (non distribué avec Mercurial)