recreando el repositorio svn


8

después de una falla importante del servidor, el repositorio svn fue destruido y mi versión de trabajo es la más actual,

¿Cuál es la forma de recrear el repositorio svn desde mi versión de trabajo?

después de instalar svn en un nuevo servidor y probar mi copia de trabajo

 svn switch NEW_SVN_PATH .

me sale un error

 Repository UUID '1c604742-6b16-462b-86e4-cc8bce959242' doesn't match expected UUID '6df69aeb-a72c-450d-8102-24036a3855f7'

Respuestas:


2

Después de inicializar el nuevo repositorio svn

  1. en el cliente realice una exportación svn del directorio de trabajo actual a una ubicación diferente
  2. desde la ubicación exportada, haga una importación de svn a la nueva url de svn
  3. ahora haga una reubicación de svn al nuevo repositorio creado.

Si bien esto podría funcionar, creo que en lugar de una reubicación, un nuevo pago podría ser bueno


2

Tuve que lidiar con esto. Utilizo subversion alojada, hice un volcado y luego importé. Su proceso de importación no transfirió el UUID del repositorio anterior al nuevo, por lo que obtuve el mismo error que el OP. Todas las respuestas en los sitios de Stack Exchange solo le dicen cómo lidiar con esto usando "svnadmin setuuid", pero esa no era una opción para mí ya que uso un servicio alojado (y, por lo tanto, svnadmin no tendrá acceso al repositorio ) Podría haber ingresado un ticket pero no quería lidiar con la espera, así que así es como lo solucioné, actualizando manualmente el UUID de mi copia de trabajo :

Advertencia: solo intente esto si está seguro de que la copia de trabajo y el repositorio al que vuelve a apuntar están absolutamente sincronizados. No estoy seguro de lo que sucederá si no lo son.

El proceso consiste básicamente en reemplazar el UUID antiguo con el nuevo UUID en los archivos denominados "entradas" en las carpetas svn ocultas (carpetas denominadas .svn o _svn) de su copia de trabajo. Una vez hecho esto, puede utilizar la "reubicación" de TortoiseSVN para apuntar el directorio de trabajo a la nueva URL del repositorio.

  1. En la ventana de la consola, cd a la raíz de su carpeta de trabajo.
  2. Ejecute el comando para eliminar recursivamente el atributo "solo lectura" de los archivos de "entradas": attrib -R entries /S
  3. Use la función "reemplazar en archivos" de un editor de texto para reemplazar el UUID antiguo con el nuevo UUID. Utilicé Visual Studio con las siguientes configuraciones: Buscar en: PATH_TO_WORKING_FOLDER_ROOT / Incluir subcarpetas: marcado / Ver estos tipos de archivos: entradas
  4. Deshacer el paso 2: attrib +R entries /S
  5. Copia de trabajo "Reubicar" a nueva URL. Usé TortoiseSVN: haga clic derecho en la carpeta de trabajo, TortoiseSVN-> Relocate.

Creo que todo el paso 5 es reemplazar las URL en los archivos de "entradas", por lo que podría hacerlo manualmente si lo desea. También es posible con la herramienta de línea de comandos "svn", pero no conozco el comando en la parte superior de mi cabeza.


Esto es intenso ¿Es eso realmente necesario? Solo estoy tratando de resolverlo ya que mi proveedor aparentemente movió nuestros repositorios y obtengo el mismo error.
Hasta el

0

Puede configurar el UUID en un repositorio vacío. Luego importa los archivos que tienes. Perderá su historial (no se guarda en la copia de trabajo). Pero, al configurar el UUID para que coincida con su antiguo repositorio, evita el mensaje de error en el interruptor svn.

$ svnlook uuid /var/svn/repos
cf1b8d31-acb6-02dc-bc7c-16e92ce6dbec
$ svnadmin setuuid /var/svn/repos   # generate a new UUID
$ svnlook uuid /var/svn/repos
4c2c49fe-acc1-23dc-acbc-2b28ff0c9e6c
$ svnadmin setuuid /var/svn/repos 1c604742-6b16-462b-86e4-cc8bce959242  # restore the old UUID
$ svnlook uuid /var/svn/repos 1c604742-6b16-462b-86e4-cc8bce959242

mi versión de servidor de svnadmin no tenía un subcomando setuuid, supongo que es uno de los comandos más nuevos. Entonces me encontré con un archivo db / UUID al repositorio, pero después de modificar el número en ella, SVN todavía se quejaba de que no es el mismo repositorio
Pavel K.

0

Tuve el mismo problema, pero como utilizamos una opción alojada, tampoco pude svnadmin.

Este fue un externo que utilicé en otro proyecto, e hice esto para solucionarlo:

  1. Copia de seguridad de todos mis cambios locales.
  2. rm -rf el directorio (el externo está registrado)
  3. eliminar svn:external(y confirmar eso)
  4. svn up
  5. agregue de svn:externalnuevo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.