subir - tag svn
SVN checkout ignora la carpeta (10)
¿Puedo ignorar una carpeta en svn checkout? Necesito ignorar la carpeta de DOC en el proceso de pago en mi servidor de compilación.
editar: Ignorar externos no es una opción. Tengo algunas cosas externas que necesito.
Como algunos otros han mencionado, puede usar las propiedades svn: externals y luego la opción --ignore-externals cuando finalice la compra. Una cosa a tener en cuenta, sin embargo, es que svn: externals no necesariamente necesita referirse a otro repositorio. Puede ser una referencia a alguna otra carpeta en el mismo repositorio.
Con las versiones anteriores a la 1.5, he descubierto que si solo finaliza la descarga de la carpeta que está en la parte superior y luego la actualiza de forma selectiva, a partir de ese momento las actualizaciones solo afectarán a lo que haya prestado. Es decir.
svn co -N foo
cd foo
svn up -N bar
svn up
El distintivo -N hace que la operación no sea recursiva. Lo anterior no verificará nada más en el nivel foo, ej. dicen que hay una carpeta lala
, la última svn up no verificará esa carpeta, pero actualizará la bar
.
Pero en un momento posterior puede svn up lala
y, por lo tanto, agregarlo a la caja.
Presumiblemente esto también funciona con 1.5.
Encontré esta pregunta buscando una forma de verificar las fuentes de WebKit mientras excluía las pruebas de regresión. Terminé con lo siguiente:
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)
Tenga en cuenta que puede cambiar las exclusiones como mejor le parezca, pero * se recomienda omitir el directorio de trabajo (que ya está actualizado) y todos los directorios .svn.
Esto está en el cliente de TortoiseSVN 1.7.1 (también podría estar disponible en algunas versiones anteriores):
Pago de SVN -> Seleccionar URL del repositorio
Haga clic en "Elementos de pago" (bajo Profundidad de pago) y seleccione solo las carpetas requeridas.
No puede ignorar directamente las carpetas en un proceso de pago, pero puede usar las descargas dispersas en svn 1.5. Por ejemplo:
$ svn co http://subversion/project/trunk my_checkout --depth immediates
Esto verificará los archivos y directorios de la troncal de su proyecto en ''my_checkout'', pero no se repetirá en esos directorios. P.ej:
$ cd my_checkout && ls
bar/ baz foo xyzzy/
Luego, para bajar el contenido de ''barra'':
$ cd bar && svn update --set-depth infinity
No, ignorar es solo para agregar archivos.
Puedes usar checkes dispersos (si usas svn 1.5)
Puede poner la carpeta docs en un repositorio externo y luego usar svn checkout --ignore-externals
.
Recientemente resolví la misma tarea. La idea es obtener la lista inmediata de carpetas / archivos en el repositorio, excluya las entradas que necesita, luego revise las carpetas restantes y actualice los archivos inmediatos, si los hay. Aquí está la solución:
# 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"`
Cambiar al directorio de trabajo de origen. Copia los comandos. Pegar. Cambie la URL apropiada y excluya el patrón. Ejecuta el comando.
Gracias,
Sí, Subversion 1.5 tiene una función llamada cajas dispersas que pueden hacer exactamente este tipo de cosas.
Sí, puedes usar SVN 1.6. Primero deberá realizar un pago y marcar la carpeta para su exclusión y luego eliminar la carpeta no deseada.
svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs
A partir de ahora, las actualizaciones de la copia de trabajo no volverán a llenar la carpeta de documentos.
Ver http://blogs.collab.net/subversion/2009/03/sparse-directories-now-with-exclusion/ y http://subversion.apache.org/docs/release-notes/1.6.html#sparse-directory-exclusion para más detalles.
Tom