web-dev-qa-db-fra.com

SVN ignorer comme .gitignore

Dans Git , si j'ai un projet avec beaucoup de projets à l'intérieur, supposons que beaucoup de projets Java, je peux simplement créer un .gitignore fichier à la racine et il sera "respecté" dans tout le référentiel.

Comment puis-je faire cela pour un projet SVN?

Par exemple, comment puis-je faire une configuration "svn ignorer" (via la ligne cmd) pour un .gitignore comme suit?

*.class
*.jar
*.war
*.ear
target/
.classpath
.settings/
.project
.metadata
bin/

La partie la plus importante de la question: comment puis-je le faire fonctionner dans de nouveaux dossiers à l'intérieur de la racine? Exemple:

Iran svn propset svn:ignore "*.class" . -R dans ma racine et commit. D'accord:

root
- folder1/
-- *.class (ignored)
-- other files (ok)
- folder2/
-- *.class (ignored)
-- other files (ok)

Maintenant, je crée le dossier 3. Le précédent svn:ignore les paramètres ne s'appliqueront pas, non? Y a-t-il un moyen de le faire?

40
caarlos0

Vous pouvez utiliser svn:ignore. Vous devez généralement dire à SVN d'appliquer des propriétés spéciales aux fichiers:

svn propset svn:ignore "*.jpg" .

(Notez le point à la fin de la commande.)

Pour plusieurs fichiers, vous pouvez ajouter un caractère de nouvelle ligne.

Tapez exactement comme ici avec des sauts de ligne:

svn propset svn:ignore "file1
file2
file3" dir1

Vérifiez que les fichiers sont ignorés:

svn status --no-ignore

Validez ensuite le code.

Et oui, de nombreuses questions en double sont déjà disponibles.

Vous pouvez vous référer à mon préféré svn cheatguide .

Vous pouvez créer un fichier, svn-ignore.txt, avec vos fichiers et répertoires ignorés:

*.class
*.jar
*.war
*.ear
 target/
.classpath
.settings/
.project
.metadata
 bin/

Essayez maintenant ce qui suit:

svn propset svn:ignore -RF /root/svn-ignore.txt . [dot for current dir]

-R est récursif.

65
Amarpreet Singh

J'ai résolu ce problème d'une manière légèrement différente. Cela ne fonctionnera que si vous utilisez un shell Bash et que Perl est installé, mais c'est à peu près toutes les machines Mac et Linux.

Ajoutez ce qui suit à votre .bashrc et .bash_profile des dossiers:

alias _ss="svn status | egrep -v '`cat .svnignore|Perl -p -e 's/\n/|/'`'"

N'oubliez pas de redémarrer votre terminal ou de faire:

source ~/.bashrc
(or .bash_profile if that's what you used)

Créez maintenant un fichier appelé . Svnignore, et placez-le dans le répertoire où votre référentiel est extrait.

files/to/ignore
another/file
tmp
node_modules

Maintenant, lorsque vous exécutez

_ss

dans le répertoire racine de votre copie de travail, il lira le fichier .svnignore et ignorera tout ce qu'il contient.

Je versionne le fichier .svnignore de la même manière que je versionnerais un fichier .gitignore.

REMARQUE: Cela n'affecte que la commande svn status, et cela ne vous empêchera pas d'ajouter/de valider des fichiers ignorés.

0
Jaybill