web-dev-qa-db-fra.com

Qu'est-ce qu'une copie de travail et qu'est-ce que la «commutation» fait pour moi dans Tortoise SVN?

J'ai une application logicielle et j'ai franchi une étape importante, la version 2.0.

J'ai décidé de marquer cette version comme "Version-2.0", j'ai donc nommé cet instantané. J'ai également créé une branche "Version-2.0" au cas où j'aurais besoin de réparer quoi que ce soit et de le fusionner à nouveau dans mon coffre.

Après avoir lu le fichier d'aide de Tortoise SVN, il m'informe que je peux basculer ma "copie de travail" vers une branche nouvellement créée.

Qu'est-ce que ça veut dire?

Actuellement, j'ai:

/ Projet/Tronc /
/Projet/Tags /
/Projet/Branches /

Tout est parti. Quel serait donc le point de "basculer"? Actuellement, je vais simplement dans mon dossier/trunk et je fais mon travail. Et quand j'ai créé ma balise et ma branche, il a créé des dossiers dans mon dossier/Tags/et/Branches/après avoir fait une mise à jour.

Pourquoi ne voudrais-je pas simplement aller dans /Branches/Experiemental-v3.0/ et y faire mon travail si je le voulais?

Quelqu'un peut-il m'expliquer le concept de "copie de travail" et de "commutation"? Qu'est-ce que je rate? Est-ce que les gens n'ont généralement pas extrait tout le référentiel, n'est-ce pas?

60
KingNestor

Une copie de travail est la copie que vous avez extraite de votre espace de travail. Peu importe qu'il s'agisse d'une branche ou du tronc. C'est ce sur quoi vous travaillez.

Vous pouvez basculer entre les branches (ou plus correctement les copies) du même parent avec le commutateur svn. Cela dira essentiellement ce qui est différent entre la copie de travail actuelle et la branche vers laquelle je passe. Il effectue ensuite une mise à jour de votre copie de travail actuelle vers la révision de la branche vers laquelle vous basculez.

La copie de travail est donc votre paiement, mais elle a été obtenue.

Le changement ne fait que changer la branche dans laquelle votre copie de travail s'engage. Pensez-y comme changer le pointeur dans le référentiel où iront vos commits. À l'aide de l'acquisition des différences entre la succursale et votre zone de travail.

46
ng.

Il n'est généralement pas nécessaire de récupérer l'intégralité du référentiel. Les branches et les balises dans Subversion sont censées être bon marché - c'est-à-dire qu'elles ne créent pas de copies de fichiers identiques, il suffit de les référencer. Lorsque vous avez vérifié l'ensemble du référentiel, lorsque quelqu'un branche ou balise pour une raison quelconque, cela multiplie soudainement l'espace utilisé sur votre disque dur local.

Vous pouvez faire extraire autant de parties du référentiel que nécessaire. Vous pourriez donc avoir un dossier appelé "trunk" qui est une copie de travail du tronc, une autre "version2" qui serait une copie de travail de votre branche. De cette façon, les balises supplémentaires qui sont créées ne sont pas extraites.

Ou vous pouvez avoir une caisse appelée `` projet '', et si elle pointe à l'origine vers le tronc, vous pouvez la basculer vers l'une des branches ou des balises - c'est une façon de réutiliser la caisse d'origine afin que vous n'ayez pas à obtenir tout recommence.

Il peut être très utile de faire cela, vous travaillez sur le tronc et réalisez soudainement que vous devez valider vos modifications dans une branche - peut-être parce qu'elles sont trop expérimentales. Pour ce faire, branchez-vous à partir de votre copie de travail, passez à la nouvelle branche puis validez et vos modifications iront à la branche plutôt qu'au tronc.

23
Jim T

La copie de travail est votre copie du code que vous avez extrait. Normalement, vous ne devriez extraire que/Project/trunk /, pas toute la structure du référentiel. Le changement change la racine de votre copie de travail. La façon dont vous travaillez avec SVN n'est pas comme cela devrait être fait.

4
vartec

Votre copie de travail est un dossier de votre disque dur que vous avez utilisé pour extraire un projet de subbversion. Vous pouvez "basculer" vers un autre projet pour cette copie de travail, afin que le contenu versionné ressemble au contenu de cet autre projet.

Ceci est utile pour passer du tronc à la branche, sans avoir à extraire une nouvelle copie. Il peut par exemple vous faire gagner du temps de construction, car les fichiers non versionnés (vos objets compilés, bibliothèques, exécutables) ne sont pas supprimés ou modifiés.

Dave

3
Dave Van den Eynde

Vous avez vérifié tout l'arborescence du projet - ce n'est probablement pas ce que vous voulez. Pour le travail de tronc, consultez une copie enracinée dans "tronc", pas à partir de la racine du projet. De même, pour le travail en succursale, ne cochez que la succursale souhaitée.

2
anon