J'ai commencé à utiliser SVN il y a environ 9 mois et cela a pour le moins changé la donne. Cependant, je sens que je suis encore un peu perdu. J'ai l'impression qu'il y a beaucoup plus dont je dois profiter pour vraiment accélérer le développement de mon application.
Par exemple
J'aimerais pouvoir mettre en quarantaine tous les changements volatils / majeurs dans une sorte de «sous-référentiel» ou quelque chose. Je constate que des changements majeurs empêchent des corrections de bugs mineurs qui sont assez urgentes. Comment puis-je pousser une simple mise à jour sans pousser le code incomplet ou cassé?
version-control
Derek Adair
la source
la source
Réponses:
Pour répondre à votre exemple, vous avez trois possibilités:
svn commit file1 path1/file2 path2
pour valider file1, path1 / file2 et chaque modification sous path2.svn copy svn://hostname/projectname/trunk svn://hostname/branches/branch-for-feature-X
. Vous pouvez maintenant basculer votre copie de travail vers le nouvel emplacement: commutateur svnsvn switch svn://hostname/projectname/branches/branch-for-feature-X
. Si vous passez en mode de correction de bogues, vous validez vos modifications réelles, remettez votre copie de travail dans le tronc, corrigez le bogue et validez, puis remettez la copie de travail dans votre branche de fonctionnalité. Si vous êtes prêt à développer la fonctionnalité, vous pouvez la fusionner à nouveau dans le coffre.Pour le cas simple décrit, vous utiliserez généralement le n ° 1 (j'utilise le plus souvent), parfois le n ° 2. Travailler avec des branches (cas # 3) est plus compliqué (en savoir plus ), mais permet plus d'astuces. Mais des branches correspondant à votre description d'un sous-référentiel.
En plus de votre exemple, je ne peux pas dire grand-chose. Il y a beaucoup de choses sur Subversion, mais je ne sais pas ce que vous utilisez déjà et ce dont vous avez besoin pour votre projet. Pour en savoir plus sur SVN, le SVN-Book est une excellente ressource: http://svnbook.red-bean.com/
la source
Vous pouvez extraire le code dans différents bacs à sable au lieu d'en prendre une seule copie et d'y apporter toutes vos modifications.
Vous pourriez donc avoir une structure de dossiers qui ressemble à ceci:
etc.
Tous ces éléments peuvent être extraits du même emplacement dans votre SVN, par exemple
http://mysvnrepo/trunk
.De cette façon, vous pouvez valider à partir de votre sandbox de correction de bogue sans affecter ceux de développement de fonctionnalités, même si vous devrez exécuter à
svn update
partir d'autres sandbox pour obtenir les modifications validées pour la correction de bogue.la source
Avez-vous regardé les succursales Subversion ?
Une technique courante consiste à garder votre tronc stable, en appliquant les correctifs critiques nécessaires. Vous créez ensuite une branche pour chaque nouveau travail important. Les développeurs travaillant sur ce projet vérifient la branche et s'engagent dans la branche. Cela n'affecte pas le tronc jusqu'à ce que vous décidiez de fusionner la branche vers le tronc principal dans le cadre de votre intégration finale.
Une autre approche consiste à avoir une branche pour une version particulière, afin d'éviter tout autre travail accidentel sur le tronc causant des problèmes. Vous pouvez corriger les bogues de la 'Release Branch' si nécessaire, puis replier ces correctifs dans le coffre une fois prêt.
Vos développeurs peuvent faire extraire plusieurs copies de travail - le tronc et toutes les branches - ou peuvent permuter entre le tronc et une branche particulière avec la
svn switch
commande.Je ne recommande pas d'avoir beaucoup de copies de travail `` sandbox '' que vous conservez séparément, car (a) cela interdit la collaboration avec les autres et (b) il sera trop facile de commettre accidentellement des modifications qui ne fonctionnent pas encore pour le tronc principal.
la source
La taille actuelle de ma copie de travail est de 10 Go, avec plus de 50 000 fichiers. Je peux avoir plusieurs copies pour différentes branches, mais cela prend du temps juste pour créer la nouvelle copie!
Lorsqu'un bogue urgent survient, j'enregistre généralement toutes mes modifications dans un correctif, annule tout, travaille sur le bogue et valide, puis applique le correctif que j'ai enregistré ... Beaucoup plus facile et plus rapide que d'obtenir une nouvelle copie de travail. Si je devais le faire souvent, j'aurais deux copies de travail: une pour les changements à long terme, l'autre pour les corrections de bogues.
la source