web-dev-qa-db-fra.com

SVN checkout ignore le dossier

Puis-je ignorer un dossier sur svn checkout? Je dois ignorer le dossier DOCs à la caisse sur mon serveur de build.

edit: Ignorer les externes n'est pas une option. J'ai quelques externals dont j'ai besoin.

97
Zote

Vous ne pouvez pas ignorer directement les dossiers à la caisse, mais vous pouvez utiliser des caisses fragmentées 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 coffre de projet dans "my_checkout", mais pas les renfermer 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
103
Jon Topper

Oui, vous pouvez utiliser SVN 1.6. Vous devrez d'abord effectuer une extraction, puis marquer le dossier pour exclusion, puis supprimer le dossier indésirable.

svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs

Dorénavant, les mises à jour de la copie de travail ne repeupleront pas 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-directory-exclusion pour plus de détails.

À M

77
tommy_turrell

Avec les versions antérieures à la version 1.5, j’ai constaté que si vous extrayez uniquement le dossier le plus haut, puis mettez à jour de manière sélective, à partir de ce moment-là, les mises à jour n’affecteront que ce que vous avez emprunté. 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é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 le mettra à jour bar.

Mais plus tard, vous pourrez svn up lala et ajoutez-le ainsi à la caisse.

Vraisemblablement, cela fonctionne aussi avec 1.5.

9
mxcl

C’est dans le client TortoiseSVN 1.7.1 (peut-être aussi disponible dans certaines versions plus anciennes):

  • SVN checkout -> Select URL of repository

  • Cliquez sur "Checkout Items" (sous Checkout Depth) et sélectionnez uniquement les dossiers requis!

5
gammay

Oui, Subversion 1.5 a une fonctionnalité appelée contrôle clairsemé qui peut faire exactement ce genre de chose.

4
Greg Hewgill

Vous pouvez placer le dossier docs dans un référentiel externe, puis utiliser svn checkout --ignore-externals.

4
John Millikin

J'ai trouvé cette question à la recherche d'un moyen de vérifier 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 à votre guise, mais que. * Est recommandé d'ignorer le répertoire de travail (qui est déjà à jour) et tous les répertoires .svn.

3
rgov

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 '^.*[^/]$'` && \
    # 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"`

Passez au répertoire de travail source. Copiez les commandes. Coller. Modifier l'URL appropriée et exclure le modèle. Exécutez la commande.

Merci,

2
bv.

Non, ignore est uniquement pour l'ajout de fichiers.
Vous pouvez utiliser des caisses éparses (si vous utilisez svn 1.5)

1
Peter Parker

Comme d'autres l'ont mentionné, vous pouvez simplement utiliser les propriétés svn: externals, puis l'option --ignore-externals lors de votre commande. Une chose à noter, cependant, est que svn: externals ne pas doit nécessairement faire référence à un autre référentiel. Il peut s'agir d'une référence à un autre dossier du même référentiel.

1
Nik Reiman