Je viens de présenter SVN dans notre société pour nos projets Visual Studio et j'ai créé un dépôt qui ressemble à ceci ("solution" est une solution Visual Studio, contenant des projets 1..n):Structure de répertoire de travail pour le référentiel SVN Visual Studio
/solution1/trunk/projectA/...
/projectB/...
/solution2/trunk/projectC/...
/customerX/solution3/trunk/projectD/...
/solution4/trunk/projectE/...
/projectF/...
maintenant, j'ai deux options pour structurer les répertoires de travail locaux:
Option a: Laissez votre commande utilisateur chaque solution séparément en utilisant AnkhSVN, conduisant à une structure comme celle-ci:
/solution1/projectA/...
/projectB/...
/solution2/projectC/...
/solution3/projectD/...
/solution4/projectE/...
/projectF/...
ou cela, si je dis à l'utilisateur de créer manuellement un sous-répertoire client X:
/solution1/projectA/...
/projectB/...
/solution2/projectC/...
/customerX/solution3/projectD/...
/customerX/solution4/projectE/...
/projectF/...
Avantage: L'utilisateur peut checkout que les solutions qu'il a vraiment besoin. Inconvénient: Chaque solution doit être vérifiée/mise à jour séparément.
Option B: Dites à l'utilisateur de la caisse du référentiel entier en utilisant TortoiseSVN, conduisant à une structure qui est exactement le même que le dépôt:
/solution1/trunk/projectA/...
/projectB/...
/solution2/trunk/projectC/...
/customerX/solution3/trunk/projectD/...
/solution4/trunk/projectE/...
/projectF/...
Avantage: Il est très facile de « mettre à jour svn tout ". Inconvénient: L'utilisateur a également une copie locale de toutes les branches et étiquettes.
QUESTION: Étant donné que certains projets sont partagés entre les solutions (disons, par exemple, que projectA est une bibliothèque qui est également utilisé par solution3), nous devons fixer une structure de répertoire, pour vous assurer que les chemins relatifs dans les fichiers de solution sont corrects. Quelle option recommandez-vous et pourquoi?
EDIT: Merci pour toutes vos excellentes réponses, notamment pour mentionner svn:externals
et pour souligner l'importance d'une bonne conception de référentiel. J'ai fini par mettre à jour mon référentiel Structure:
/trunk/solution1/projectA/...
/projectB/...
/solution2/projectC/...
/customerX/solution3/projectD/...
-svn:external to projectA
/solution4/projectE/...
/projectF/...
qui assure qu'un développeur travaillant sur solution3 seulement besoins de vérifier solution3 (et non solution1) et la solution peut être vérifié dans un répertoire c'est-à-dire que le répertoire de travail n'a pas besoin d'une structure fixe.
Bonne question, au fait ... – David