¿Puedo ignorar una carpeta en svn checkout? Necesito ignorar la carpeta DOCs al finalizar la compra en mi servidor de compilación.
editar: Ignorar los externos no es una opción. Tengo algunos elementos externos que necesito.
¿Puedo ignorar una carpeta en svn checkout? Necesito ignorar la carpeta DOCs al finalizar la compra en mi servidor de compilación.
editar: Ignorar los externos no es una opción. Tengo algunos elementos externos que necesito.
Respuestas:
No puede ignorar directamente las carpetas en una caja, pero puede usar cajas dispersas en svn 1.5. Por ejemplo:
$ svn co http://subversion/project/trunk my_checkout --depth immediates
Esto verificará los archivos y directorios del tronco de su proyecto en 'my_checkout', pero no recurrirá a esos directorios. P.ej:
$ cd my_checkout && ls
bar/ baz foo xyzzy/
Luego, para bajar el contenido de 'bar':
$ cd bar && svn update --set-depth infinity
svn: Shallowing of working copy depths is not yet supported
Sí, puedes usar SVN 1.6. Primero deberá realizar un pago, luego 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.
Consulte http://blogs.collab.net/subversion/2009/03/sparse-directories-now-with-exclusion/ y http://subversion.apache.org/docs/release-notes/1.6.html#sparse- directorio-exclusión para más detalles.
Tom
Con las versiones anteriores a la 1.5, he descubierto que si comprueba solo la carpeta superior y luego actualiza de forma selectiva, a partir de ese momento, las actualizaciones solo afectarán lo que ha comprobado. Es decir.
svn co -N foo
cd foo
svn up -N bar
svn up
La bandera -N hace que la operación no sea recursiva. Lo anterior no comprobará nada más a nivel foo, por ejemplo. digamos que hay una carpeta lala
, el svn up final no comprobará esa carpeta, pero se actualizará bar
.
Pero en un momento posterior puede svn up lala
y, por lo tanto, agregarlo al pago.
Es de suponer que esto también funciona con 1.5.
Puede poner la carpeta de documentos en un repositorio externo y luego usar svn checkout --ignore-externals
.
external repository
significa. ¿Puedes explicarlo?
Sí, Subversion 1.5 tiene una función llamada Pagos dispersos que puede hacer exactamente este tipo de cosas.
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.
Recientemente he resuelto la misma tarea. La idea es obtener la lista inmediata de carpetas / archivos en el repositorio, excluir las entradas que necesita, luego ver las carpetas restantes y actualizar los archivos inmediatos, si los hay. Esta es la solucion:
# 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"`
Cambie al directorio de trabajo de origen. Copie los comandos. Pegar. Cambie la URL apropiada y excluya el patrón. Ejecute el comando.
Gracias,
No, ignorar es solo para agregar archivos.
Puede usar pagos dispersos (si usa svn 1.5)
Como algunos otros han mencionado, puede usar svn: externals properties y luego la opción --ignore-externals cuando realice el pago. Sin embargo, una cosa a tener en cuenta es que svn: externals no necesita necesariamente referirse a otro repositorio. Puede ser una referencia a alguna otra carpeta en el mismo repositorio.