Il est possible, mais pas nécessairement simple: le problème que vous essayez de résoudre est dangereusement proche de la mise en place d'un environnement de développement distribué qui est pas exactement ce que SVN est conçu pour.
La façon miroir SVN
Vous pouvez utiliser svn mirror
comme expliqué dans la documentation du livre SVN pour créer un miroir en lecture seule de votre référentiel maître. Vos développeurs interagissent chacun avec le miroir le plus proche d'eux. Cependant, les utilisateurs du référentiel esclave devront utiliser
svn switch master_url --relocate
avant de pouvoir engager et ils devront se rappeler de déménager en arrière sur l'esclave une fois qu'ils sont faits. Cela pourrait être automatisé en utilisant un script wrapper autour des commandes de modification du référentiel sur SVN si vous utilisez le client en ligne de commande. Gardez à l'esprit que l'opération de relocalisation tout en accélérant ajoute un peu de frais généraux. (Et faites attention à dupliquer le dépôt UUID -. Voir the SVN documentation)
[Modifier - Vérification de la documentation, il semble TortoiseSVN que vous pouvez avoir TortoiseSVN execute hook scripts client side. Vous pourrez peut-être créer un script de pré/post-commit à ce stade. Soit cela ou essayez de voir si vous pouvez utiliser le TortoiseSVN automation interface pour le faire].
La façon SVK
svk est un ensemble de scripts Perl qui émulent un service de mise en miroir répartis sur SVN. Vous pouvez le configurer pour que la branche locale (le miroir) soit partagée par plusieurs développeurs. Ensuite, l'utilisation de base pour les développeurs sera complètement transparente. Vous devrez utiliser le client svk pour la sélection de cerises, la fusion et le starmerging. C'est faisable si vous pouvez obtenir votre tête autour des concepts distribués.
La façon git-svn
Bien que je jamais utilisé moi-même, vous pourriez aussi avoir les développeurs distants utilisent git localement et utiliser la passerelle git-svn pour la synchronisation.
Derniers mots
Tout dépend de votre environnement de développement et le niveau d'intégration dont vous avez besoin. En fonction de votre IDE (et si vous pouvez changer SCM), vous pouvez jeter un oeil à d'autres SCM entièrement distribués (pensez Mercurial/Bazaar/Git/...) qui prennent en charge le développement distribué hors de la boîte.
Je suis sceptique comment peut mandatement améliorer les choses. Il est possible qu'un commit prenne moins de temps pour le POV de l'utilisateur, mais les données doivent encore être transmises au master, et cela prend toujours la même quantité de bande passante réseau. Ainsi, la mise à jour du maître est tout aussi lente, même si elle semble plus rapide pour l'utilisateur. En raison de ce comportement asynchrone, le maître peut commencer à être à la traîne. – aseq