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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top