Puis-je ignorer un dossier sur svn checkout? Je dois ignorer le dossier DOCs lors du paiement sur mon serveur de build.
edit: Ignorer les externes n'est pas une option. J'ai besoin de certains externes.
Puis-je ignorer un dossier sur svn checkout? Je dois ignorer le dossier DOCs lors du paiement sur mon serveur de build.
edit: Ignorer les externes n'est pas une option. J'ai besoin de certains externes.
Réponses:
Vous ne pouvez pas ignorer directement les dossiers lors d'une extraction, mais vous pouvez utiliser des extractions éparses dans svn 1.5. Par exemple:
$ svn co http://subversion/project/trunk my_checkout --depth immediates
Cela vérifiera les fichiers et les répertoires de votre tronc de projet dans «my_checkout», mais ne reviendra pas dans ces répertoires. Par exemple:
$ cd my_checkout && ls
bar/ baz foo xyzzy/
Ensuite, pour obtenir le contenu de 'bar':
$ cd bar && svn update --set-depth infinity
svn: Shallowing of working copy depths is not yet supported
Oui, vous pouvez utiliser SVN 1.6. Vous devrez d'abord effectuer une extraction, puis marquer le dossier à exclure, puis supprimer le dossier indésirable.
svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs
Désormais, les mises à jour de la copie de travail ne rempliront plus le dossier docs.
Voir http://blogs.collab.net/subversion/2009/03/sparse-directories-now-with-exclusion/ et http://subversion.apache.org/docs/release-notes/1.6.html#sparse- exclusion de répertoire pour plus de détails.
À M
Avec les versions antérieures à 1.5, j'ai constaté que si vous ne récupérez que le dossier le plus haut, puis mettez à jour de manière sélective, à partir de là, les mises à jour n'affectent que ce que vous avez extrait. C'est à dire.
svn co -N foo
cd foo
svn up -N bar
svn up
L'indicateur -N rend l'opération non récursive. Ce qui précède ne vérifiera rien d'autre au niveau foo, par exemple. disons qu'il y a un dossier lala
, le dernier svn up ne retirera pas ce dossier, mais il sera mis à jour bar
.
Mais plus tard, vous pouvez svn up lala
et donc l'ajouter à la caisse.
Vraisemblablement, cela fonctionne également avec 1.5.
Vous pouvez placer le dossier docs dans un référentiel externe, puis utiliser svn checkout --ignore-externals
.
external repository
signifie. Pouvez-vous l'expliquer?
Oui, Subversion 1.5 a une fonctionnalité appelée Checkouts Sparse qui peut faire exactement ce genre de chose.
J'ai trouvé cette question à la recherche d'un moyen de consulter les sources WebKit tout en excluant les tests de régression. J'ai fini avec ce qui suit:
svn checkout http://svn.webkit.org/repository/webkit/trunk WebKit \
--depth immediates
cd WebKit
find . \
-maxdepth 1 -type d \
-not -name '.*' \
-not -name '*Tests' \
-not -name 'Examples' \
-not -name 'Websites' \
| (while read SUBDIR; do svn update --set-depth infinity "$SUBDIR"; done)
Notez que vous pouvez modifier les exclusions comme bon vous semble, mais. * Est recommandé d'ignorer le répertoire de travail (qui est déjà à jour) et tous les répertoires .svn.
J'ai récemment résolu la même tâche. L'idée est d'obtenir la liste immédiate des dossiers / fichiers sous le référentiel en excluant les entrées dont vous avez besoin, puis de vérifier les dossiers restants et de mettre à jour les fichiers immédiats le cas échéant. Voici la solution:
# Path to the svn repository to be checked out
rpath=https://svn-repo.company.com/sw/trunk/ && \
# This files are to be excluded (folders are ending with '/')
# this is a regex pattern with OR ('|') between enties to be excluded
excludep='docs_folder/tests_folder/|huge_folder/|file1|file2' && \
# Get list of the files/folders right under the repository path
filtered=`svn ls $rpath | egrep -v $excludep` && \
# Get list of files out of filtered - they need to be 'uped'
files=`echo $filtered | sed 's| |\n|g' | egrep '^.*[^/]$'` && \
# Get list of folders out of filtered - they need to be 'coed'
folders=`echo $filtered | sed 's| |\n|g' | egrep '^.*[/]$'` && \
# Initial nonrecursive checkout of repository - just empty
# to the current (./) working directory
svn co $rpath ./ --depth empty && \
# Update the files
svn up $files &&\
# Check out the all other folders finally.
svn co `echo $folders | sed "s|\<|$rpath|g"`
Accédez au répertoire de travail source. Copiez les commandes. Pâte. Modifiez l'URL appropriée et excluez le modèle. Exécutez la commande.
Merci,
Non, ignorer sert uniquement à ajouter des fichiers.
Vous pouvez utiliser des extractions éparses (si vous utilisez svn 1.5)
Comme quelques autres l'ont mentionné, vous pouvez simplement utiliser les propriétés svn: externals, puis l'option --ignore-externals lorsque vous passez à la caisse. Une chose à noter, cependant, est que svn: externals n'a pas nécessairement besoin de faire référence à un autre référentiel. Il peut s'agir d'une référence à un autre dossier du même dépôt.