revertir repositorio eliminar comandos cambios borrar svn

comandos - eliminar repositorio tortoisesvn



SVN: ¿Puede eliminar directorios de un proceso de pago local solamente(no desde el repositorio)? (5)

Actualización: estoy ejecutando SVN 1.6.11 y pude des-telescopiar usando svn up --set-depth empty dir lugar de tener que exclude el directorio.

Supongamos que tiene un directorio bajo control de subversión, que contiene algunos archivos y montones de subdirectorios, así:

file1.txt file2.txt file3.txt dir1/ dir2/ dir3/ dir4/ : dirXX/

Ahora necesita los archivos y algunos de los directorios, pero no todos. Esto se puede hacer con SVN. Simplemente haga que el pago no sea recursivo:

svn checkout -N <URL>

Esto verifica solo el primer directorio y los archivos dentro. No hay subdirectorios incluidos. Incluso si ingresa al directorio de pago y ejecuta un " svn up ", solo actualizará los archivos prestados previamente, no agregará los directorios. Ahora puede agregar selectivamente los directorios que necesita al actualizarlos explícitamente. Por ejemplo, si solo necesita dir2 y dir4, puede acceder al directorio de comprobación y ejecutar

svn up dir2 svn up dir4

Si ejecuta un " svn up " genérico en el futuro, solo actualizará los archivos y esos dos directorios, no agregará ninguno de los otros directorios.

Ahora el problema: ¿y si decido en algún momento posterior que ya no necesito el directorio2? ¿Como me deshago de esto? Parece que no hay forma de hacerlo, aparte de eliminar todo el proceso de pago y comenzar de cero.

Cuando acaba de eliminar el dir2, el siguiente " svn up " lo traerá de vuelta, ya que " svn status " por supuesto lo muestra como perdido ahora ("!" Delante de su nombre). Ejecutar un " svn remove " lo eliminará, por supuesto, pero en la siguiente confirmación también lo eliminará del repositorio, lo que no debe suceder.

Incluso el nuevo directorio disperso (función de "comprobación superficial") de SVN 1.5 no sirve de nada aquí:

La implementación de subversión de Subversion 1.5 es buena, pero no admite un par de comportamientos interesantes. En primer lugar, no puede des-telescopiar un elemento de copia en funcionamiento. Ejecutar la actualización de svn --set-depth empty en una copia de trabajo de profundidad infinita no tendrá el efecto de descartar todo, excepto el directorio superior: simplemente se producirá un error de salida.
- http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html

¿Es esto completamente imposible con SVN? ¿Alguien alguna vez se le ocurrió un trabajo inteligente para eso?

Simplemente creando el directorio de pago (sin SVN) y luego revisando los subdirectorios individuales del repositorio directamente como subdirectorios a este directorio funcionarán para los directorios: ahora cada directorio es un pago propio, se puede actualizar y ya no se necesita. , puedes simplemente eliminarlo. Sin embargo, ¿cómo obtengo los archivos (por ejemplo, archivo1.txt)? SVN no permite consultar los archivos individuales, solo puede verificar directorios completos.


Con svn 1.6, --set-depth es la respuesta.

Con svn <1.6, puede obtener pagos dispersos abusando del svn switch : cree un directorio vacío en algún lugar de su repositorio, y switch los subdirectorios que no necesita ahora para apuntar a eso en lugar de su URL "real".


Odio responder mis propias preguntas ... me hace sentir tan tonto. Y odio más aún ser el que ofrece la mejor respuesta, pero desafortunadamente, esta es la única respuesta real:

Lo que estoy tratando de hacer no se puede hacer con Subversion 1.4 o Subversion 1.5; Período.
No hay solución alternativa, así es como es.

Sin embargo, se puede hacer con Subversion 1.6.

A diferencia de SVN 1.5, SVN 1.6 puede reducir la profundidad en un directorio

svn up --set-depth exclude dir2

es la solución. Establece la profundidad de dir2 en cero e inmediatamente se desvanecerá de la salida y ninguna actualización lo recuperará, a menos que establezca explícitamente la profundidad de este directorio en un valor (o simplemente realice una actualización sin la opción de profundidad, ya que no dar ninguna profundidad siempre significa infinito, a menos que use no recursivo, lo que significa "archivos").

PROPINA:
En realidad SVN 1.6 realmente no puede reducir la profundidad de la misma manera que puede aumentarla. Puede aumentarlo de cualquier nivel a cualquier nivel superior. Solo puede reducirlo a "excluir" (el nivel más bajo de todos). Si desea reducir de "infinito" (más alto) a "archivos" (en algún lugar en el medio), primero debe reducirlo a "excluir" (haciendo que el directorio desaparezca) y luego aumentarlo de nuevo a "archivos". Esto es un truco, pero funciona muy bien.


Para cualquiera que se encuentre con esto más tarde, y use TortoiseSVN , aquí está cómo hacer lo mismo ...

  1. Haga clic derecho en la carpeta que ya no desea que se desprotege (esta es la carpeta que desea excluir)
  2. Desde el menú contextual, selecciona "TortoiseSVN> Actualizar a revisión ..."
  3. En la ventana emergente, configure el cuadro desplegable "Actualizar profundidad" en "Excluir"
  4. Haga clic en Aceptar". SVN eliminará automáticamente ese directorio de tu disco ahora.

(Nota: Esto se hizo con TortoiseSVN 1.7.5, y puede variar para otras versiones).


Puede probar este trick involucra un repositorio local y declaraciones svn: externals .

Aunque no lo he probado yo solo.