SVN checkout ignore le dossier
-
08-07-2019 - |
Question
Puis-je ignorer un dossier sur svn checkout? Je dois ignorer le dossier DOCs lors du paiement sur mon serveur de construction.
modifier: ignorer les externes n'est pas une option. J'ai quelques externals dont j'ai besoin.
La solution
Vous ne pouvez pas ignorer directement les dossiers lors d'une extraction, mais vous pouvez utiliser des extractions clairsemées dans svn 1.5. Par exemple:
$ svn co http://subversion/project/trunk my_checkout --depth immediates
Ceci vérifiera les fichiers et les répertoires de votre dossier de projet dans "my_checkout", mais pas les renvoyer dans ces répertoires. Par exemple:
$ cd my_checkout && ls
bar/ baz foo xyzzy/
Ensuite, pour extraire le contenu de 'bar':
$ cd bar && svn update --set-depth infinity
Autres conseils
Oui, vous pouvez utiliser SVN 1.6. Vous devrez d'abord effectuer une extraction, puis marquer le dossier comme étant à 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 repeupleront pas le dossier docs.
Voir http: //blogs.collab. net / subversion / 2009/03 / sparse-directory-now-with-exclusion / et http://subversion.apache.org/docs/release-notes/1.6.html#sparse-directory-exclusion pour plus de détails.
Tom
Avec les versions antérieures à la version 1.5, j’ai constaté que, si vous extrayez uniquement le dossier situé le plus haut, puis que vous mettez à jour de manière sélective, les mises à jour ultérieures n’affectent que ce que vous avez emprunté. C'est-à-dire.
svn co -N foo
cd foo
svn up -N bar
svn up
L’option -N rend l’opération non récursive. Ce qui précède ne vérifie rien d’autre au niveau foo, par exemple. disons qu'il y a un dossier lala
, le dernier svn up ne le verra pas, mais il mettra à jour la barre
.
Mais vous pourrez plus tard svn up lala
et ainsi l'ajouter à la caisse.
Vraisemblablement, cela fonctionne également avec la version 1.5.
Cela se trouve dans le client TortoiseSVN 1.7.1 (pourrait également être disponible dans certaines versions antérieures):
-
Paiement SVN - > Sélectionner l'URL du référentiel
-
Cliquez sur "Options de paiement". (sous Profondeur de la caisse) et sélectionnez uniquement le dossiers requis!
Vous pouvez placer le dossier docs dans un référentiel externe, puis utiliser svn checkout --ignore-externals
.
Oui, la La sous-version 1.5 dispose d'une fonctionnalité appelée Les caisses clairsemées pouvant faire exactement ce genre de chose.
J'ai trouvé cette question à la recherche d'un moyen de vérifier les sources WebKit tout en excluant les tests de régression. Je me suis retrouvé 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 il 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 du référentiel, exclure les entrées dont vous avez besoin, puis extraire les dossiers restants et 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 '^.*[^/]
Changer de répertoire de travail source. Copiez les commandes. Coller. Modifier l'URL appropriée et exclure le modèle. Exécutez la commande.
Merci,
` && \
# Get list of folders out of filtered - they need to be 'coed'
folders=`echo $filtered | sed 's| |\n|g' | egrep '^.*[/]
Changer de répertoire de travail source. Copiez les commandes. Coller. Modifier l'URL appropriée et exclure le modèle. Exécutez la commande.
Merci,
` && \
# 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"`
Changer de répertoire de travail source. Copiez les commandes. Coller. Modifier l'URL appropriée et exclure le modèle. Exécutez la commande.
Merci,
Non, ignore sert uniquement à l'ajout de fichiers.
Vous pouvez utiliser des caisses éparses (si vous utilisez svn 1.5)
Comme d'autres l'ont déjà mentionné, vous pouvez simplement utiliser les propriétés svn: externals, puis l'option --ignore-externals lors de votre commande. Il convient toutefois de noter que svn: externals ne doit pas nécessairement se référer à un autre référentiel. Il peut s'agir d'une référence à un autre dossier du même référentiel.