Je ne souhaite pas qu'un répertoire nommé build
ou dist
entre dans mon SVN, quelle que soit sa profondeur dans l'arborescence.
Est-ce possible? En git je viens de mettre
build
dist
dans mon .gitignore
à la racine et il ignore de manière récursive. Comment puis-je faire cela avec svn? S'il vous plaît ne me dites pas de faire un propset sur chaque dir de parent ...
Depuis Subversion 1.8, il y a maintenant le svn:global-ignores
propriété qui fonctionne comme svn:ignore
mais de manière récursive (donc définissez ceci sur votre répertoire de niveau supérieur)
svn propset
prend --recursive
en option, vous pouvez donc le faire avec deux inconvénients:
svn:ignore
propriété chaque fois que vous ajoutez un nouveau répertoireCe n'est pas possible de faire cela. Il n'y a que deux mécanismes ignorés dans Subversion, svn:ignore
(qui est non récursif) et global-ignores
(qui n'est pas spécifique à un référentiel).
Cela fonctionne pour moi:
svn propset --recursive svn:ignore *.Zip <dir_tree_with_no_zips>
ajoutez à votre fichier ~/.Subversion/config ou/etc/Subversion/config:
[miscellany]
global-ignores = build dist
Il est possible d'ignorer les répertoires build et dist en supprimant les répertoires du contrôle de version. L'astuce consiste à utiliser l'option --keep-local pour laisser le répertoire dans la copie de travail. Par exemple:
svn rm dist --keep-local
svn ci -m'removed build directory from version control'
Le répertoire ne sera plus suivi par Subversion mais il sera toujours présent dans votre copie de travail pour contenir la sortie du compilateur, etc.
à bientôt, joe
Par exemple, la structure du dossier:
Project/
Project/dist/
cd Project
svn propset svn:ignore '*' dist/
svn ci -m "content of dist ignored"
Il est bon de supprimer svn du contenu dist avant la commande ignore. Ainsi, dist sera vide pour les branches.
Travaillé pour moi, testé aujourd'hui. Voici la page l'expliquant un pe
Vous devez d'abord vous déplacer vers le dossier principal de votre copie de travail et créer un fichier (par exemple, .svnignore) dans lequel vous devez placer tous les motifs que vous souhaitez ignorer, par exemple (pour un projet Android):
bin
gen
proguard
.classpath
.project
local.properties
Thumbs.db
*.apk
*.ap_
*.class
*.dex
Ensuite, vous exécutez la commande suivante (souvenez-vous que vous devez être dans le dossier supérieur de votre copie de travail):
svn propset svn:ignore -R -F .svnignore .
Cela ne fonctionnera que pour les dossiers et les fichiers qui ne sont pas encore sous contrôle de version. Si vous souhaitez qu'un dossier (ou un fichier) en cours de traitement commence également à être ignoré, supprimez-le du contrôle de version en exécutant la commande suivante:
svn rm --keep-local <path>
Vous avez tout cela dans cet article qui explique tout: http://superchlorine.com/2013/08/getting-svn-to-ignore-files-and-directories/
Pour ignorer tous ces fichiers dans tous les référentiels, vous pouvez ajouter un fichier global-ignores
dans votre fichier de configuration par utilisateur.
Sur les systèmes de type Unix, cette zone apparaît sous la forme d'un répertoire nommé. Subversion dans le répertoire personnel de l'utilisateur. Sur les systèmes Win32, Subversion crée un dossier nommé Subversion, généralement situé dans la zone Données d'application du répertoire de profil de l'utilisateur.
Malheureusement, il n'y a pas d'option par référentiel pour faire cela. C'est fondamentalement par utilisateur, ou par répertoire, donc le multiple svn:ignores
est probablement la voie à suivre, aussi agaçante qu’elle puisse être.
Dans Subversion 1.8 ci-dessus, il est possible de définir global-ignores pour le référentiel actuel.
svn propset svn:global-ignores build .
svn propset svn:global-ignores dist .
Vous pouvez également créer un dossier nommé .svnignore et des conditions d'écriture.
build
dist
rappelez-vous une condition par ligne, les configurations build/* ou dist/debug sont vaines. Ensuite, faites la commande:
svn propset svn:global-ignores -F .svnignore .
Créez un fichier et ajoutez-y vos ignores
ingore-list:
file1
directory1
file2
etc...
puis appliquez la commande suivante
for n in directory; do svn propset svn:ignore -F ignore-list $n; done
répertoire est le nom de votre répertoire, vous pouvez également sous-catégoriser répertoire/sous-répertoire. Ou utilisez * pour noter le répertoire actuel dans lequel vous vous trouvez.
Ceci suppose que vous utilisez bash comme shell
svn propset --recursive svn:ignore svn_ignore_rules .
où svn_ignore_rules est un fichier contenant les règles de non-respect - un par ligne
Bien sûr, vous devez le réexécuter chaque fois que vous ajoutez un nouveau répertoire à votre référentiel.
svn_ignore_rules peut également être considéré comme archivé dans le référentiel, pour pouvoir être réutilisé par d'autres utilisateurs disposant d'un accès en écriture au référentiel.
cd parent_dir #le répertoire contenant le dossier à ignorer récursivement svn propedit svn: ignore. #will ouvrir svn-prop.tmp enrôler un (des) dossier (s) ^ X Y commettre -m 'ignorer le répertoire ciblé'
Une solution consisterait à ajouter une sorte de vérification au point d'ancrage avant ou après validation, mais la note est simple si vous ne possédez pas le serveur de référentiel.
Comme il semble n'y avoir aucune solution à ce problème probablement commun, je voudrais partager notre solution. Comme les autres l’ont déjà indiqué, vous pouvez utiliser le svn:ignore
propriété, cela s’applique à un seul répertoire (et donc pas aux nouveaux), ou vous utilisez global-ignores
qui s'applique à un seul utilisateur (mais n'appartient pas au référentiel).
Pour rendre la vie un peu plus facile, j'ai créé un fichier reg nommé Settings.Svn.reg
et l'a ajouté à la racine du référentiel. Maintenant, tout le monde peut double-cliquer sur ce fichier de configuration une fois, et les réglages sont effectués.
REGEDIT4
[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany]
"global-ignores"="obj *.suo *.bak *.pdb *.user *.Cache*"
J'apprécierais vraiment une solution dans le référentiel SVN, alors si quelqu'un le sait, voudriez-vous la partager?