web-dev-qa-db-fra.com

Ignorer un dossier lors des mises à jour SVN

Si je svn: ignorer un très gros dossier améliorera-t-il les performances lors des mises à jour SVN?

J'ai ce dossier vraiment énorme (> 600 Mo) dans mon projet. Les fichiers de ce dossier ne devraient pas être modifiés du tout. Le problème est que chaque fois que j'appelle "mise à jour svn", cela prend une éternité. Existe-t-il un moyen d'ignorer ce dossier lors des mises à jour pour accélérer le processus de mise à jour?

37

Le svn:ignore est uniquement pour les fichiers qui ne sont pas déjà dans le référentiel Subversion. Ce dossier l'est déjà.

Vous pouvez utiliser le svn update --set-depth excludefolderName pour supprimer ce dossier de votre répertoire de travail:

$ svn update --set-depth exclude bigFolder  #Removes "bigFolder" from workdir
D bigFolder

$

La prochaine fois que vous effectuerez une mise à jour, bigFolder n'apparaîtra pas dans votre répertoire de travail. Si vous le souhaitez, vous devrez réinitialiser la profondeur:

$ svn update --set-depth infinity
U bigFolder
U bigFolder/File1
U bigFolder/File2
...
53
David W.

Vous pouvez faire une mise à jour svn et mentionner spécifiquement tous les autres répertoires, par exemple.

svn update dir1 dir2 dir3

Ou, grep -v sur ce que vous ne voulez pas.

svn update `ls | grep -v big_dir`

Ou, svn mv le big_dir dans un autre dossier et changez votre système de construction pour obtenir le contenu de l'autre répertoire.

10
Bill Brasky

Faites juste:

svn up `svn ls | grep -v big_dir`

Utilisation de "svn ls" Vous pouvez mettre à jour non seulement les répertoires et fichiers existants localement, mais également les nouveaux fichiers du référentiel. La mise à jour est donc plus complète que d'exclure. Et vous n'avez pas besoin de supprimer les fichiers déjà existants, comme le fait apparemment "--set-depth exclude".

9
Fedir RYKHTIK

En dehors de ce qu'a dit @Bill Brasky, une suggestion est de déplacer l'énorme dossier vers un fichier externe. De cette façon, vous pouvez faire svn up --ignore-externals

Si vous ne voulez pas l'énorme dossier dans votre copie de travail, vous pouvez jeter un œil aux extractions clairsemées:

svn checkout repo . --depth empty
svn up other dirs
3
manojlds