2008-11-20 8 views
1

Je viens d'un CVS. J'étudie actuellement en utilisant SVN pour un projet. Le code sur lequel je travaille a tendance à être dans la structure de répertoire suivante.Marquage d'une partie d'un dépôt en subversion

projet \ libs \ lib1

projet \ libs \ lib1 \ test

projet \ libs \ lib1 \ maquette

projet \ libs \ lib2

etc.

Lorsque je marque une version, dans CVS, j'ai tendance à créer deux tags un bein g "project-release-1" et un étant "project-release-1-with-tests". La balise "project-release-1" exclut les répertoires de test et les faux répertoires et éventuellement d'autres fichiers. L'idée étant que souvent nous ne livrons pas notre source de test aux clients et en exportant la balise "project-release-1" nous obtenons l'ensemble des sources d'un client que nous pouvons leur livrer et en faisant un checkout sur le tag "projet-release-1-with-tests" nous obtenons tout le lot que nous pouvons utiliser pour le branchement si besoin est pour un développement continu.

Comment faire quelque chose de similaire avec SVN? Idéalement sous une forme qui peut être scriptable; avec SVN nous avons un script par projet qui va appliquer les deux balises et créer la balise client en enlevant simplement la balise du test et des répertoires simulés, etc ...

Je suppose que dans SVN je créerais le "with tests" tag, puis (en quelque sorte) vérifier cela, supprimer le test et simuler les répertoires et créer la balise de libération du client?

Mise à jour:

J'ai décidé de changer la façon dont je fais les choses ... Plutôt que d'avoir un script par projet qui met en place mon style ancien balises jumeaux J'ai maintenant un script par projet qui prend la version étiquetée (qui inclut les choses que je ne livre pas aux clients) et supprime les choses que je ne livre pas aux clients. Travail effectué, un seul tag nécessaire.

Répondre

1

Je ne sais pas si c'est la réponse "correcte", mais je peux penser à deux options.

A. Tag et supprimer:

  1. Tag votre/projet/répertoire libs comme projet-release-1;
  2. Supprimez les répertoires "test" et "mock" de Project-Release-1. Vous pouvez également créer une balise project-release-1-with-tests avec tout, puis marquer (copier) le répertoire comme projet-release-1 et répéter # 2 ci-dessus.

B. Utilisez ":" externals

  1. Créer un répertoire vide projet-release-1 sous les balises. Ne marquez pas vraiment, créez simplement le répertoire.
  2. Modifiez les propriétés de ce répertoire, ajoutez une propriété nommée "svn: externals".Dans la valeur de cette propriété entrez: lib1 -r $ REV url: à/projet/libs/lib1 lib2 -r $ url REV: pour/projet/libs/lib2

où REV $ est le numéro de révision le code source étiqueté. Plus tard, lorsque vous extrayez le répertoire "sans tests", vous obtiendrez les deux répertoires "étiquetés". Je crois que la première option est la meilleure, car les outils qui analysent les branches et les balises auront un meilleur changement de compréhension de ce que vous avez fait. Sur une note de côté, je me demande pourquoi vous voudriez l'étiquette sans test; Pourquoi est-ce que cela vous dérange que vous ayez les tests dans l'étiquette?

  • Noam.
+0

Je veux la balise sans test car je peux alors exporter cette balise pour obtenir l'arborescence source qui est envoyée au client; Souvent, le client n'obtient pas la source pour les tests. –

+0

L'option A était à peu près ce que j'ai travaillé depuis que j'ai posé la question :) –

1

Une étiquette est juste une copie comme n'importe quelle autre copie. Vous pouvez donc créer un répertoire vide dans les balises, pour marquer cette version, puis créer deux répertoires à l'intérieur de celui-ci - un pour la version avec des tests, et l'autre pour la version sans les tests.

+0

Oui. Je comprends tout cela maintenant :) Le fait est que c'est plus de travail à maintenir que d'avoir un script qui prépare une version étiquetée qui inclut les tests pour l'expédition au client; et les deux réalisent la même chose. –

+0

J'ai posté parce que je pensais que cette méthode pourrait être scriptée. Il y aurait une convention de nommage pour les répertoires. – gbarry

Questions connexes