web-dev-qa-db-fra.com

Ignorer récursivement les fichiers de l'arborescence source entière dans subversion

Je ne suis pas nouveau dans Subversion, mais j'ai jusqu'à présent utilisé Tortoise et jamais la ligne commadn. Ma question est, comment puis-je ignorer tous les fichiers comme * .o de la source ENTIÈRE et pas seulement la racine.

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

Si svn propedit svn: ignorez "." dans le répertoire racine et ajoutez * .o, il ignorera le 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 référentiel, ce qui, je le sais, peut être fait, car ce projet est dans un référentiel avec de nombreux autres projets)?

Veuillez me faire savoir si j'ai besoin de clarifier. Merci!

50
alanquillin

Éditer

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

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

Sur les versions antérieures (et sur les versions ultérieures), vous pouvez toujours utiliser l'approche indiquée dans la réponse d'origine ci-dessous; cependant, sachez que cela suppose que vous êtes d'accord pour remplacer/écraser le svn:ignore propriété sur chaque sous-répertoire ... cela peut convenir pour un petit/nouveau dépôt, 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 _ svn:ignore propriétés que vous ne souhaitez pas écraser.

Réponse originale

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

 svn propset svn: ignore '* .o'. - récursif 

Plus d'informations

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

 svn help propset 
68

Juste une mise à jour: Subversion 1.8.0 introduite Propriétés héritées et Configuration dictée du référentiel (pour les accessoires automatiques et les ignorés) , qui peut également être utilisé dans ce cas.

Vous pouvez définir le nouveau svn:global-ignores propriété dans le chemin racine. Il "n'effectuera 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 sur le Notes de version Subversion 1.8. .

39
TManhente

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 svn:ignore paramètres. Utiliser propedit au lieu de propset ne fonctionne pas non plus.

La bonne façon d'ajouter plusieurs fichiers de manière récursive consiste à placer leurs noms dans une liste séparée par de nouvelles lignes dans le svn:ignore propriété définie avec svn propset svn:ignore "[LIST]" .

Par exemple:

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

Bien sûr, le > ne sont que les invites du shell.

Cette commande va changer le svn:ignore propriétés du . répertoire courant et de chacun de ses sous-dossiers récursivement.

3
Saul Berardo