2011-02-01 9 views
24

¿Hay alguna manera de degradar una copia de trabajo de subversión de la versión 1.7 a la versión 1.6x?Cómo degradar un árbol de subversión de v1.7 a v1.6?

La versión 1.7 usa una sola carpeta raíz .svn y sqlite para los metadatos, por lo que la secuencia de comandos python de conversión de tigris.org no funciona.

¿Conoces una solución que no implique hacer una comprobación limpia en v1.6 y copiar sobre los archivos modificados?

+0

¿Ya está disponible la versión 1.7? ¿Qué cliente lo está apoyando? – eckes

+0

Para Windows, las versiones beta están disponibles en el sitio de construcciones nocturnas TortoiseSVN en http://nightlybuilds.tortoisesvn.net/latest/ – ccpizza

Respuesta

18

Hay un script para hacer las degradaciones de copia de trabajo.

Sin embargo, esto no admite la degradación del formato 1.7 al formato 1.6, ni lo admitirá en el futuro. Los comentarios en el guión nos dicen por qué esto es imposible:

# Downgrading from format 11 (1.7-dev) to format 10 is not possible, 
    # because 11 does not use has-props and cachable-props (but 10 does). 
    # Naively downgrading in that situation causes properties to disappear 
    # from the wc. 
+0

Disculpe por -1 voto. Pero, ¿cómo puede ser esta una respuesta válida? – fishbone

+2

@fishbone: supongo que quiere decir que una de las otras respuestas debería votarse por encima de esta. Tenga en cuenta que esas respuestas en realidad no conservarán el estado de su copia de trabajo. Por poner un ejemplo, si hubiera hecho una "svn mv foo bar", después de la degradación, vería que foo "falta" y la barra "no está versionada". Las modificaciones de la propiedad SVN no confirmadas se perderán por completo. Entonces IMO "no se puede hacer" sigue siendo una respuesta válida. –

+1

Lo siento, mi culpa, tengo que eliminar el voto en negativo. Me sonó como "¿Cómo puedo degradar de 1.7 a 1.6?" - "Conozco un guión que no puede hacer eso": D. No entendí los comentarios del guión, que son el verdadero punto de tu respuesta. Editar: No puedo quitar el voto hasta que se edite esta respuesta :( – fishbone

5

Mi solución sucia era crear una salida más limpia usando v1.6 y luego copiar sólo las .svn carpetas a la copia de trabajo existente mediante un pequeño script bash:

#!/usr/bin/env bash 
    target=/projects/working-copy-dir 

    svn_dirs=`find . -type d -iname .svn` 

    for svn_dir in $svn_dirs; do 
     tosvn_dir=$target${svn_dir/\.\//} # strip the extra './' path component 
     cp -r $svn_dir $tosvn_dir 
    done 

Esto supone que el script se ejecuta desde el directorio de comprobación limpio. Target es la copia de trabajo modificada. El dir de nivel superior v1.7 .svn debe eliminarse/renombrarse antes de ejecutar el script.

ps. No voy a marcar esto como una respuesta por el momento, porque la solución anterior es una solución y en realidad no convierte el proyecto de 1.7 a 1.6. Entonces la pregunta permanece abierta.

14

Encontré la mejor manera de eliminar la carpeta .svn de la copia de trabajo 1.7 y luego verifiqué la 1.6 en la parte superior. Me funcionó, podría funcionar para usted también. (Con el uso de TortoiseSVN cliente 1.6.x)

+0

Esto funcionó bastante bien para mí. Pude guardar los cambios que había hecho localmente. Algunos archivos adicionales aparecieron modificados pero pude revertirlos. – Speck

+0

Mi razón para tener que bajar de categoría es así que puedo copiar un pago de 30 gb desde una estación de trabajo con 1.7 a una estación de trabajo con 1.6 (desde Ubuntu 12.10 a 12.04). No lo he intentado, pero esto parece una solución muy plausible. ¡Gracias! –

2

(suponiendo que los archivos en el servidor son correctos) mejor manera que he encontrado hasta ahora:

  1. cerrar el IDE
  2. eliminar archivos locales
  3. svn remove 1.7
  4. instalar SVN 1.6
  5. archivos de pago y envío
+1

Haría esto también pero la pregunta era cómo evitar esto. –

0

Este enfoque utiliza el administrador de paquetes sináptico, por lo tanto, asegúrese de que esté instalado.

  1. añada la siguiente línea a /etc/apt/sources.list:

    deb http://us.archive.ubuntu.com/ubuntu precise main 
    

    Esto asegurará que haya al menos dos versiones para elegir, es decir 1,7 y 1,6.

  2. Run

    sudo apt-get update 
    
  3. Ir al gestor de paquetes, buscar subversion y seleccionarlo.

  4. Desde el menú de selección de paquete ->vigor versión 1.6 seleccionar o clic derecho -> propiedades -> seleccionar la versión 1.6 .

  5. instalar el paquete

  6. Seleccione el paquete de nuevo, entonces menú ->versión de bloqueo.

    Esto es para evitar actualizaciones automáticas a versiones superiores.

Esto es todo. Buena suerte.

Cuestiones relacionadas