web-dev-qa-db-fra.com

Quelle est la façon la plus simple de créer des branches et de fusionner avec TortoiseSVN?

Qu'est-ce qu'un "mode d'emploi" vraiment simple pour effectuer des branchements et des fusions à l'aide de TortoiseSVN?

79
JoelFan

En supposant que votre répertoire de travail fonctionne à partir du tronc:

Faites un clic droit sur le "dossier de travail racine" (ce terme fait toujours référence à l'Explorateur Windows) et faites svn update pour mettre à jour votre dossier de travail vers le dernier tronc.

Assurez-vous que ce que vous avez est stable.

Faites un clic droit sur le dossier de travail racine et faites svn commit pour vous assurer que toutes les modifications locales sont validées dans le tronc.

Faites un clic droit sur le dossier de travail racine et faites svn repo-browser.

Si vous n'avez pas encore de dossier de branches dans le référentiel: faites un clic droit sur le dossier juste au-dessus du dossier de tronc et faites "créer un dossier" et créez un dossier de branches (par exemple, si votre tronc est http://myserver/svn/MyRepository/MyProj/Trunk, créer http://myserver/svn/MyRepository/MyProj/Branches).

Faites un clic droit sur le dossier trunk et faites Copy To: et entrez le nouveau nom de dossier pour votre branche. Par exemple: http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch. (Ne vous inquiétez pas, cela gaspillera beaucoup d'espace ... cela s'appelle une "copie bon marché" ... cela ne copie pas réellement le contenu des fichiers à moins qu'ils ne changent).

Fermez le navigateur Repo.

Cliquez avec le bouton droit sur la racine de votre dossier de travail et procédez comme suit: svn switch et choisissez le nom de dossier de votre nouvelle branche (par exemple, http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch). Laissez tout le reste par défaut.

Maintenant, travaillez sur votre branche. Lorsque vous atteignez les jalons, cliquez avec le bouton droit sur le dossier de travail racine et effectuez svn commit pour vous engager dans votre branche. (Cela ne sera pas visible dans le coffre).

Si d'autres travaillent sur la même branche, effectuez régulièrement svn update à partir du dossier de travail racine. Cela sera mis à jour depuis la branche. (Il ne recevra PAS de mises à jour du coffre.)

Que d'autres travaillent sur la même branche ou non, vous devez régulièrement fusionner les modifications du tronc pour vous assurer que votre branche ne sera pas trop difficile à intégrer plus tard. Pour effectuer la fusion périodique: cliquez avec le bouton droit sur la racine du dossier de travail et faites svn merge. Sélectionnez "Fusionner une série de révisions". Sous "URL de fusion", choisissez le tronc (par exemple, http://myserver/svn/MyRepository/MyProj/Trunk). Laissez Plage de révision vide et laissez tout le reste seul. Cliquez sur Suivant. Laissez tout seul et cliquez sur Fusionner . Assurez-vous que tout fonctionne toujours ... corrigez-le sinon. Une fois satisfait, faites régulièrement svn update à partir du dossier racine de travail à mettre à jour à partir de la branche (cela est nécessaire même si vous êtes le seul à travailler sur la branche, pour satisfaire SVN). Alors fais svn commit pour valider les modifications du tronc fusionné dans la branche. Vous pouvez répéter cette étape périodiquement autant de fois que vous le souhaitez.

Une fois que votre succursale est prête à s'intégrer, effectuez l'étape précédente une dernière fois et effectuez votre test final. Faites un dernier commit sur la branche.

Faites un clic droit sur votre dossier de travail racine et faites une autre svn switch, cette fois en basculant vers le coffre (par exemple, http://myserver/svn/MyRepository/MyProj/Trunk). Cela aura pour effet de "défaire" essentiellement tout le travail que vous avez fait sur votre branche, mais ne vous inquiétez pas ... vous récupérerez votre travail. (Il signalera également de nombreuses mises à jour des fichiers que vous n'avez pas modifiés dans votre branche, mais ce ne sont que des changements de "propriété SVN" ... ne vous inquiétez pas à leur sujet.)

Faites un clic droit sur votre dossier de travail et faites svn merge. Cette fois, choisissez "Réintégrer une branche". Pour l'URL, insérez votre branche (par exemple, http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch). Laissez le reste tranquille et cliquez sur Suivant. Laissez tout seul et cliquez sur Fusionner . Vous avez maintenant tout le travail que vous avez fait sur votre branche, ainsi que le travail à jour à partir du coffre.

Faites un test final. Tout devrait fonctionner car il devrait s'agir du même ensemble de fichiers que vous aviez lors de votre dernier test dans la branche. Cliquez avec le bouton droit sur votre dossier de travail racine et effectuez une svn commit. Validez tout, même les fichiers sur lesquels vous n'avez pas travaillé dans votre branche (ils ont juste des changements de "propriété SVN" mais les valider aide SVN à garder une trace de toutes les révisions).

Le tronc a maintenant tout votre travail de branche ainsi que tout le travail qui a été fait dans le tronc pendant que vous travailliez sur votre branche, et tout fonctionne. De plus, SVN a l'historique complet de tous les fichiers, même les révisions qui ont été archivées pendant que vous travailliez sur votre branche.

Facultatif: allez dans Repo-browser, faites un clic droit sur votre dossier de branche (par exemple, http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch) et faites "supprimer". Cela n'aura aucun effet sur le tronc, et vous n'avez plus besoin de la branche. (Même si vous êtes vraiment paranoïaque, ne vous inquiétez pas, car vous pouvez même récupérer votre branche supprimée à partir du navigateur Repo à tout moment si vous en avez vraiment besoin.)

N'hésitez pas à commenter!

184
JoelFan