2009-08-05 8 views
46

Je ne suis pas nouveau à Subversion, mais j'ai utilisé jusqu'à maintenant Tortoise et jamais la ligne commadn. Ma question est, comment puis-je ignorer tous les fichiers comme * .o de la source en entier et pas seulement la racine.Ignorer récursivement les fichiers dans l'arborescence source entière dans subversion

Par exemple, si je les fichiers suivants: /myfile.o /folder1/myfile2.o /folder1/folder1.1/myfile3.o /folder2/myfile4.o

Si svn propedit svn: ignore "." Dans le répertoire racine, et ajoutez * .o, il ignore le fichier myfile.o, mais n'ignore pas /folder1/myfile2.o, /folder1/folder1.1/myfile3.o, /folder2/myfile4.o. Existe-t-il un moyen d'ajouter * .o pour un projet entier (je ne peux pas le faire pour l'ensemble du dépôt, ce que je sais que l'on peut faire, car ce projet est dans un référentiel avec beaucoup d'autres projets)?

S'il vous plaît laissez-moi savoir si j'ai besoin de clarifier. Merci!

Répondre

63

Modifier

La réponse originale fournie ci-dessous a été donné avant v1.8 Subversion qui a introduit un moyen de définir l'ignorer niveau du référentiel par défaut (appelé svn:global-ignores) sans écraser/remplacer la propriété svn:ignore sur le répertoire racine et chaque sous-répertoire. Depuis 1.8, la meilleure façon d'obtenir ce que vous voulez est d'invoquer la commande suivante (crédit va à TManhente):

svn propset svn:global-ignores '*.o' . 

Sur les versions antérieures (et versions ultérieures), vous pouvez toujours utiliser l'approche indiquée dans la réponse originale ci-dessous; Cependant, sachez que cela suppose que vous êtes d'accord pour remplacer/remplacer la propriété svn:ignore sur chaque sous-répertoire ... cela peut convenir pour un dépôt smallish/newish mais ce n'est probablement pas ce que vous voulez si vous avez un grand/ancien référentiel dans lequel certains sous-répertoires peuvent avoir des propriétés svn:ignore indépendantes que vous ne souhaitez pas remplacer.

réponse originale

Vous pouvez utiliser le "R" ou option "--recursive" avec "svn propset" comme dans la commande suivante:

 
svn propset svn:ignore '*.o' . --recursive 

Plus d'info

Pour les deux cas, vous pouvez utiliser la commande suivante pour plus d'informations sur svn propset:

 
svn help propset 
+0

Merci, ça a bien marché! Je suis toujours en train de prendre connaissance de leur documentation. Comme je l'ai dit, jusqu'à maintenant, je n'ai utilisé que des tortues et cela vous donne de belles boîtes de dialogue et des explications :). – alanquillin

+1

vous avez aussi --force 'svn propset svn: ignorez * * .pdb * .db" c: \ portal \ --recursive --force' –

+43

La réponse acceptée annulera tous vos autres paramètres de svn: ignore si vous aviez leur. vous pouvez alors vouloir http://stackoverflow.com/questions/3086418/svn-revert-all-properties-changes –

38

Juste une mise à jour: Subversion 1.8.0 introduit propriétés héritées et référentiel Dicté Configuration (Pour les accessoires automatiques et ne tient pas compte), qui peut également être utilisé dans ce cas.

Vous pouvez définir la nouvelle propriété svn:global-ignores dans le chemin racine. Cela "n'affectera que les sous-arbres enracinés sur le chemin sur lequel la propriété est définie".

Cette nouvelle propriété est définie comme svn:ignore:

svn propset svn:global-ignores '*.o' . 

Plus d'informations sont disponibles à l'Subversion 1.8.0 Release Notes.

+0

Je voudrais vraiment savoir comment le configurer en utilisant des auto-accessoires? – mgouin

3

Comme indiqué par @ hackmaster.a dans un commentaire, l'exemple donné dans la réponse acceptée a pour effet secondaire d'effacer tous les paramètres svn:ignore précédents. L'utilisation de propedit au lieu de propset ne fonctionne pas non plus.

La bonne façon d'ajouter plusieurs fichiers met récursive leurs noms dans une liste séparée par de nouvelles lignes dans l'ensemble de la propriété svn:ignore avec svn propset svn:ignore "[LIST]" .

Par exemple:

svn propset svn:ignore -R "*.pkl 
    > *.class 
    > Thumbs.db 
    > data.tmp" . 

Bien sûr, les > « s sont juste les invites de shell.

Cette commande modifie les propriétés svn:ignore du répertoire actuel . et de chacun de ses sous-dossiers de manière récursive.

+0

L'utilisation de 1.7.4 supprime tous les svn: ignore – lrkwz

+0

Merci. Cela fonctionne avec svn, la version 1.8.10. –

Questions connexes