2010-03-07 23 views
6

En utilisant Subversion, dans ma copie de travail, je fais une modification mineure (mettre à jour un numéro de version). Je voudrais ensuite marquer ma copie de travail. Serait-ce encore une copie bon marché avec la modification, ou SVN dupliquerait-il les fichiers? Je détesterais voir mon référentiel se développer énormément en taille parce que j'essaye d'enregistrer un changement de numéro de version.SVN - Lorsque vous étiquetez une copie de travail, est-ce encore une copie bon marché?

La raison pour laquelle je pose la question de la création d'une balise contenant une modification plutôt que de la valider puis de la balise concerne mon serveur de génération. Le serveur de construction crée un CCNetLabel que j'utilise pour mettre à jour les numéros de version de mes projets (AssemblyInfo.cs). Lorsque la construction est réussie, elle crée une étiquette. Lorsque j'utilise ForceBuild, la balise est basée sur la copie de travail qui contiendrait le numéro de version modifié. Je veux que l'étiquette contienne le numéro de version approprié.

note: C'est discutable si je crée une branche ou un tag, mais SVN ne fait pas de distinction entre les deux.

Répondre

4

Cela dépend. Si votre copie de travail est à jour (tous les nœuds ont la même révision), il est aussi bon marché que le balisage du dépôt.

Pour chaque fichier/répertoire (ou réellement sous-arbre) avec une révision différente de celle de son parent, des données supplémentaires seront ajoutées. Et si vous avez des modifications locales, d'autres données seront ajoutées.

Mais il est encore bon marché raisonnable: Il ne duplique pas les fichiers qui sont déjà dans le référentiel.

+0

Excellent, mon souci était qu'il puisse dupliquer tous les fichiers. Il semble que le marquage de la copie de travail soit à peine plus grand que le marquage d'une branche sur le serveur. Maintenant, si je pouvais dire à Cruise Control .net de toujours marquer ma copie de travail .... http://groups.google.com/group/ccnet-devel/browse_thread/thread/13e5cc63cb9221ae – mcdon

+0

si j'ai un répertoire "A" dans ma copie de travail et je l'étiquette. Je comprends que ce sera une copie bon marché dans le référentiel. Cependant, plus tard, je supprime "A" de mon répertoire de travail. Qu'adviendra-t-il de la copie bon marché? Est-ce qu'il aura encore "A" disponible? – Jus12

1

Créer une balise ou une branche en subversion est très bon marché. Les fichiers ne seront pas copiés. Tout ce qui se passe est qu'une nouvelle révision sera créée, dont le contenu ne contient essentiellement qu'un pointeur vers l'endroit où la balise a été copiée. Ce sera la même taille pour un tag d'un projet avec un petit fichier ou pour un avec un million de gros fichiers.

Lorsque vous dites "étiqueter ma copie de travail", voulez-vous dire "marquer ma branche de travail"? Vous ne pouvez marquer que les données qui ont déjà été validées dans le référentiel, et non vos modifications locales non validées.

+0

Je ne veux marquer ma copie de travail. Le processus sera: svn update, mettre à jour le numéro de version dans la copie de travail, générer une étiquette à partir de la copie de travail. L'objectif est d'enregistrer les informations de version mises à jour dans l'étiquette (branche plus une modification pour le numéro de version). – mcdon

5

De la description de la subversion

  • et le marquage sont Branching opérations bon marché (temps constant). Il n'y a aucune raison que ces opérations soient coûteuses, alors elles ne le sont pas. Les branches et les étiquettes sont toutes deux implémentées en termes d'opération de "copie" sous-jacente. Une copie occupe une petite quantité constante d'espace. Toute copie est une étiquette; et si vous commencez à faire une copie, c'est aussi une branche. (Cela supprime « le marquage branche point » de CVS, en supprimant la distinction qui a fait des balises branche points nécessaires en premier lieu.)

Remarque! Je viens de remarquer que Subversion a été déplacé dans l'organisation du projet Apache

1

Une publication périmée, mais qui vaut la peine d'être mentionnée, car la réponse indique que «Vous ne pouvez marquer que les données qui ont déjà été validées dans le référentiel ...» le travail engagé n'est pas tout à fait exact (au moins pas maintenant).

Vous pouvez étiqueter une copie de travail, qui peut contenir des révisions mixtes et même des répertoires commutés, ainsi que des modifications locales.

Quant à bon marché, oui, il devrait encore être pas cher comme Subversion branche pour vous, alors superposer vos modifications de copie de travail dans le repo, économiser autant d'espace que possible