2009-07-02 6 views
4

Dans mon coffre de repo, j'ai un répertoire unit-tests que je veux garder hors de mes étiquettes de version. Ce que j'ai fait est de copier le tronc à une nouvelle étiquette, puis en supprimant unit-tests. Est-ce OK? Il se sent mal parce qu'il faut deux révisions pour étiqueter chaque version. Existe-t-il un moyen pour d'exclure un répertoire de la copie svn?SVN: Puis-je copier un sous-ensemble de fichiers dans un nouveau tag?

E.g. J'ai:

/trunk/unit-tests 
/trunk/dir1 
/trunk/file1 
/trunk/file2 

Et je veux créer:

/tags/release_123/dir1 
/tags/release_123/file1 
/tags/release_123/file2 

J'utilise généralement les clients Tortoise/Eclipse, mais je ne pouvais cli si besoin.

+2

Les tests unitaires vont de pair avec le code. Je ne peux pas penser à une raison * pourquoi * vous voudriez snapshot le code mais pas les tests unitaires. –

+1

Désolé, "unité-test" était juste un exemple. Il y a vraiment plusieurs utilitaires auxquels les développeurs pourraient vouloir accéder, mais cela n'appartient pas aux versions "officielles". Ma théorie était que les étiquettes de version devraient être identiques aux versions .zip. –

+1

Vous pourriez avoir une sorte de script de construction/fichier de recette qui crée la version "officielle" .zip et la placer dans SVN, aussi. Au moins pour les langages compilés comme Java, l'arborescence des sources ne ressemblera jamais à l'arborescence des versions. – Thilo

Répondre

4

Vous pouvez le faire en utilisant le svnmucc programme fourni par la subversion (inclus dans Windows builds depuis SVN1.5) Ce petit outil recueillera plusieurs svnactions en un seul engagement. Cependant, vous devez créer le dossier de destination avant. Il est impossible de créer un dossier et copier le contenu à l'intérieur en une seule transaction: ici un échantillon:

svn mkdir -m "creating a tag" http://your.serv.er/svn/repo/tags/release_123 
svnmucc cp HEAD http://your.serv.er/svn/repo/trunk/dir1 http://your.serv.er/svn/repo/tags/release_123 \ 
cp HEAD http://your.serv.er/svn/repo/trunk/file1 http://your.serv.er/svn/repo/tags/release_123 \ 
cp HEAD http://your.serv.er/svn/repo/trunk/file2 http://your.serv.er/svn/repo/tags/release_123 -m "creating tag Part II" 

Vous pouvez également utiliser les perl/python/fixations rubis ou svnkit (java) pour accomplir cette tâche, mais Je ne peux pas fournir de code source pour cela.

2

Je ne pense pas que vous le pouvez.

Mais pourquoi avez-vous besoin de supprimer le répertoire de test unitaire? Il ne prend pas d'espace supplémentaire dans le dépôt, en fait, il prend plus d'espace si vous le supprimez (à cause de la validation supplémentaire).

Si vous craignez qu'un retrait de la balise soit trop long/trop long, vous pouvez choisir de ne pas extraire le répertoire de test unitaire.

Questions connexes