Cómo actualizar v2 a v3 Sistema de archivos de subversión FSFS

9

En primer lugar, estoy tratando de reintegrar una rama con el tronco (usando TortoiseSVN) pero recibo el mensaje de error "La consulta de información de fusión requiere la versión 3 del esquema del sistema de archivos FSFS; el sistema de archivos E: / MyRepository / usa solo la versión 2".

¿Realmente no era posible reintegrar ramas en versiones anteriores de subversion? ¿O hay otra forma de hacer esto?

De todos modos, ¿cómo puedo actualizar el sistema de archivos de la versión 2 a la versión 3?

cbp
fuente

Respuestas:

6

No especificó la versión de Subversion que está ejecutando su servidor. Pero según el mensaje que proporcionó en la pregunta, es probable que sea una versión 1.4.xo anterior. No recuerdo si se proporcionó un comando de actualización o no para la conversión de 1.4.x a 1.5.x, pero la forma segura de obtener su repositorio de la versión 2 a la versión es volcar y cargar. Pero eso no importa mucho, querrás instalar 1.6.x de todos modos para ir con la última versión. Entonces, estos son los pasos que debe seguir:

  • Actualice a Subversion 1.6.x si aún no lo ha hecho
  • Volcar su repositorio existente usando svnadmin dump
  • Crea un nuevo repositorio, llámalo _nuevo
  • Cargue su nuevo repositorio con el volcado del anterior usando svnadmin load
  • Copie el archivo uuid del antiguo repositorio al nuevo repositorio
  • cambiar el nombre del antiguo repositorio a _old
  • cambiar el nombre del nuevo repositorio a

Consulte también Preguntas frecuentes sobre Subversion http://subversion.apache.org/faq.html#dumpload para ver un ejemplo concreto.

Eso debería ayudarlo a usted y el archivo uuid evitará que sus clientes se vuelvan locos. Sin embargo, haga una actualización de svn para estar seguro.

jgifford25
fuente
2
del svnadmin help loadmensaje: --force-uuid : set repos UUID to that found in stream, if any. En resumen: no es necesario jugar con archivos
Hubert Kario
@Hubert Kario: Sí, la línea de comando tiene esa opción. Pero no todos los clientes GUI lo hacen. Y, si puede hacerlo en el lado del servidor, eso hace que sea más fácil para los usuarios. Pero tendré en cuenta ese cambio la próxima vez que me encuentre con ese problema. ¡Gracias por el consejo!
jgifford25
Al crear su nuevo repositorio, tenga cuidado al configurar los permisos. Por ejemplo, si está accediendo al repositorio a través de apache mod_svn, apache se ejecuta con el usuario "www", el grupo "www" y está conectado como "fred", probablemente necesitará algo como: sudo chown -R fred:www myrepositoryseguido de un sudo chmod g+wto myrepository/db/repcache.dbymyrepository/db/uuid
xgretsch
8

No es necesario volcar / cargar para actualizar los repositorios de Subversion. Utilice el comando de actualización svnadmin:

svnadmin upgrade <path-to-repos>

NOTA: la actualización de svnadmin "realiza solo la cantidad mínima de trabajo necesaria para lograr esto sin dejar de mantener la integridad del repositorio. Mientras que un volcado y una carga posterior garantizan el estado de repositorio más optimizado, la actualización de svnadmin no". - vea también la documentación de actualización de svnadmin

Ivan Zhakov
fuente
1
TENGA EN CUENTA, sin embargo, que esto "realiza solo la cantidad mínima de trabajo necesaria para lograr esto sin dejar de mantener la integridad del repositorio. Si bien un volcado y una carga posterior garantizan el estado del repositorio más optimizado, la actualización de svnadmin no". - vea también svnbook.red-bean.com/en/1.7/svn.ref.svnadmin.c.upgrade.html
Jörg
1
TENGA EN CUENTA, además, que "siempre debe hacer una copia de seguridad de su repositorio antes" usando la actualización de svnadmin, mientras que con dump / load tiene una copia de seguridad implícita.
Jörg
5

Ivan tiene un buen consejo que funciona, lo probé y es muy simple.

svnadmin upgrade <path-to-repos>

Una cosa que me perdí en el ejemplo de Ivans que puede ser útil para otros son:

Ex.

<path-to-repos> = C:\repos\theRepo
(ie. NOT C:\repos\theRepo\db)

No apunte svnadmin al directorio db, sino al directorio que contiene el directorio db.

Por G
fuente