Pregunta

¿Puedo ignorar una carpeta en svn checkout? Necesito ignorar la carpeta DOCs al finalizar la compra en mi servidor de compilación.

editar: Ignorar externos no es una opción. Tengo algunos elementos externos que necesito.

¿Fue útil?

Solución

No puede ignorar directamente las carpetas en un pago, pero puede usar pagos escasos 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 se repetirá en esos directorios. Por ejemplo:

$ cd my_checkout && ls
bar/ baz foo xyzzy/

Luego para bajar el contenido de 'bar':

$ cd bar && svn update --set-depth infinity

Otros consejos

Sí, puedes usar SVN 1.6. Primero deberá realizar un pago, luego marcar la carpeta para 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

De ahora en adelante, cualquier actualización de la copia de trabajo no repoblará la carpeta de documentos.

Ver http: //blogs.collab. net / subversion / 2009/03 / sparse-directorios-now-with-exclusion / y http://subversion.apache.org/docs/release-notes/1.6.html#sparse-directory-exclusion para más detalles.

Tom

Con las versiones anteriores a la 1.5, descubrí que si desprotege solo la carpeta superior y luego actualiza selectivamente, a partir de entonces las actualizaciones solo afectan lo que ha desprotegido. Es decir.

svn co -N foo
cd foo
svn up -N bar
svn up

El indicador -N hace que la operación no sea recursiva. Lo anterior no verificará nada más a nivel foo, por ejemplo. digamos que hay una carpeta lala , el svn up final no comprobará esa carpeta, pero actualizará la bar .

Pero más adelante puede svn up lala y, por lo tanto, agregarlo al pago.

Presumiblemente esto también funciona con 1.5.

Esto está en TortoiseSVN client 1.7.1 (también puede estar disponible en algunas versiones anteriores):

  • pago SVN - > Seleccionar URL del repositorio

  • Haga clic en " Artículos de pago " (en Profundidad de pago) y seleccione solo carpetas requeridas!

Puede colocar la carpeta docs en un repositorio externo y luego usar svn checkout --ignore-externals .

Sí, Subversion 1.5 tiene una función llamada Comprobaciones dispersas que pueden hacer exactamente este tipo de cosas.

Encontré esta pregunta buscando una forma de verificar las fuentes de WebKit y excluir 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 resolví la misma tarea. La idea es obtener la lista inmediata de carpetas / archivos en el repositorio, excluir las entradas que necesita, luego verifique 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 '^.*[^/]

Cambiar al directorio de trabajo de origen. Copia los comandos. Pegar. Cambie la URL apropiada y excluya el patrón. Ejecute el comando.

Gracias,

` && \ # Get list of folders out of filtered - they need to be 'coed' folders=`echo $filtered | sed 's| |\n|g' | egrep '^.*[/]

Cambiar al directorio de trabajo de origen. Copia los comandos. Pegar. Cambie la URL apropiada y excluya el patrón. Ejecute el comando.

Gracias,

` && \ # 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. Ejecute el comando.

Gracias,

No, ignorar es solo para agregar archivos.
Puede usar pagos escasos (si usa svn 1.5)

Como algunos otros han mencionado, puede usar svn: propiedades externas y luego la opción --ignore-externals cuando finaliza la compra. Sin embargo, una cosa a tener en cuenta es que svn: externals no necesariamente necesita referirse a otro repositorio. Puede ser una referencia a alguna otra carpeta en el mismo repositorio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top