2010-11-28 3 views
3

Récemment, nous avons créé la première branche du tronc de notre projet. Le tronc est plutôt volumineux (plusieurs Go) ce qui n'a pas d'importance pour le serveur, car la branche est créée via une liaison efficace. Cependant, dans les copies de travail du client, le projet prend réellement deux fois plus d'espace (tous nos WC proviennent de la racine du référentiel).Ignorer les branches dans la copie de travail SVN

Puisque seulement quelques personnes ont vraiment besoin de la branche, comment les autres peuvent-ils ignorer (c'est-à-dire ne pas télécharger) toutes les branches utilisant TortoiseSVN?

Les utilisateurs ne vérifiant que le réseau, comme suggéré ci-dessous, n'est pas la solution ici. Notre structure est en tant que telle:

/ 
projects 
    project-x 
    assets 
    blabla.psd 
    code 
    trunk 
    branches 
    branch1 
    branch2 
    project-y 
    ... 
+0

Plusieurs Go? Avez-vous mis des binaires sur la liste des ignorés? Parce que sinon, chaque construction ajoutera un ensemble complet de binaires compilés au référentiel. – tdammers

+0

Nos binaires générés sont ignorés, mais le projet est un jeu, il a donc beaucoup de ressources artistiques et audio qui doivent être dans le repo. –

Répondre

5

Solution courte - passer à/tronc. Tous ceux qui n'ont besoin de rien d'autre que le tronc peuvent simplement aller à la caisse depuis/root/trunk au lieu de/root. N'importe qui qui veut une branche devrait juste vérifier la branche dans un autre annuaire.

Une solution plus élaborée - vérifiez seulement ce dont vous avez besoin, mais gardez la structure de l'arbre. Si vous voulez à la fois la liberté d'avoir tout, et utiliser uniquement ceux que vous voulez, puis procédez comme suit:

  1. caisse de la racine avec l'option « les enfants immédiats que »
  2. caisse de la racine/tronc avec l'option « complète récursive »

Si quelqu'un veut une branche spéciale vérifié puis après deux étapes précédentes:

  • caisse de la racine/branches avec option « enfants immédiats seulement »
  • caisse de cette branche spéciale avec l'option « récursive complète »

Vous pouvez trouver plus sur le sujet dans le bon livre SVN, chapitre « Sparse Directories ».

Il n'y a pas de raccourci pour cette procédure pour cueillir des branches. Sauf pour le fichier de commandes et TortoiseProc. EDIT: Si vous avez déjà extrait tout le dépôt, et que vous voulez maintenant exclure quelque chose pour économiser de l'espace, utilisez la commande "Update item to revison" sur le dossier que vous voulez exclure avec le département checkout "Exclude". Selon the manual cette option est uniquement disponible dans la boîte de dialogue Mise à jour vers révision. Je suppose que c'est destiné à ce but. Essayez ceci d'abord sur une copie de travail temporaire. Je n'ai jamais fait ça personnellement. MISE À JOUR: À partir de TortoiseSVN 1.7 La boîte de dialogue de vérification comporte un bouton «Choisir les éléments» qui vous permet de sélectionner uniquement les dossiers voulus et de les récupérer en une seule étape. Le même bouton est également disponible dans la boîte de dialogue "Mettre à jour l'élément à la révision".

+0

Si l'utilisateur dispose déjà d'une copie de travail, comment peut-il modifier la profondeur de mise à jour d'un répertoire? –

+0

Je ne comprends pas très bien. Quelle est la structure exacte que l'utilisateur a actuellement, et quelle est la structure exacte que l'utilisateur souhaite? Et par structure je veux dire sur son disque dur :-) – Dialecticus

+0

Voir ma question éditée –

1

J'espère que vous avez une structure quelque chose comme ceci:

repo root 
    | 
    +-- trunk 
    | 
    +-- branches 
     | 
     +-- branch1 
     +-- branch2 
     +-- ... 

Si tel est le cas, les utilisateurs peuvent simplement la caisse http://server/repo/trunk au lieu de http://server/repo, et quand ils veulent travailler sur la branche à la place, ils peuvent passer leurs copies de travail à http://server/repo/branches/branch1.

+0

Nous avons la structure tronc/branches par défaut, mais il y en a beaucoup entre la racine et la racine. Notre repo héberge plusieurs projets. Dans chaque projet il y a deux dirs, "assets" et "code". "tronc" et les frères et soeurs vont dans "code". –

0

Si les utilisateurs doivent télécharger des ressources avec du code, il est plus naturel de se connecter au niveau de projet-x. Dans ce cas, vous n'aurez pas de problèmes que vous décrivez. Avez-vous des raisons de ne brancher qu'une partie de vos affaires?

+0

Je ne comprends pas ce que vous voulez dire. Brancher le projet entier le rendrait encore plus grand (à part ne pas avoir de sens, puisqu'une branche est habituellement une copie du tronc). –

+0

Dans la structure actuelle, les personnes recevant project-x devront télécharger toutes les branches. Si vous incluez des assets dans des branches, ils ne téléchargeront pas project-x, ils ne téléchargeront que project-x/some_branch – maxim1000

+0

Je vois, mais ça ne marchera pas. Nos «ressources sources» comme les fichiers PSD ne doivent pas être trunked/branched, mais les «assets compilés» comme les fichiers PNG, qui font partie du «code», devraient l'être. –

1

Cliquez avec le bouton droit sur le dossier que vous ne voulez pas et allez dans "Mettre à jour vers la révision ...". Dans la boîte de dialogue qui apparaît, définissez la profondeur de mise à jour sur "Exclure". (Remarque: cela ne semble fonctionner que pour les dossiers.) Cela le supprimera de votre copie de travail, mais n'affectera pas le référentiel. Tortoise va juste savoir ne pas essayer de le mettre à jour lors des mises à jour.

Pour l'annuler, vous pouvez cliquer avec le bouton droit sur le dossier parent (ou son parent, etc.) et choisir "Repo Browser". Recherchez le dossier exclu, cliquez avec le bouton droit de la souris et choisissez "Mettre à jour l'élément à réviser". Vous aurez le même dialogue. cette fois, assurez-vous qu'il dit « copie de travail »

Undo check out of subfolder in TortoiseSVN

6

(de la racine de votre copie de travail)

find . -name branches -exec svn update --set-depth empty {} \; 

Cela supprimera toutes les branches de votre copie de travail, et les mises à jour futures ne les téléchargera pas. Les développeurs qui souhaitent voir une succursale peuvent ensuite:

svn update --set-depth infinity branches\my-feature-branch 
Questions connexes