2010-10-28 53 views
31

He migrado un proyecto de CVS a SVN. Ahora necesito cambiar el nombre de ese proyecto. ¿Cuál puede ser la mejor manera de cambiarle el nombre, manteniendo intacta toda la historia? La carpeta del proyecto contiene unos 100 números de C y sus archivos de encabezado.Renombrar el nombre del proyecto del repositorio SVN

+0

Si está utilizando [VisualSVN Server] (https://www.visualsvn.com/server/), puede simplemente haga clic derecho en un repositorio en el MMC del Administrador de VisualSVN Server y seleccione "Cambiar nombre" –

Respuesta

19

No hay mecanismo incorporado en Subversion para cambiar el nombre de un repositorio.

La mejor opción para mantener la integridad y el historial es realizar un volcado de repositorio del repositorio anterior y luego volver a importar el volcado en un nuevo repositorio.

Escribí una publicación sobre esto aquí: How To Rename an SVN repository.

Usted sólo tendrá que usar la svnadmin utilidad, y luego svnadmin crear un nuevo repositorio, svnadmin dump los contenidos del repositorio anterior y finalmente svnadmin importación el volcado en el nuevo repositorio al que había creado usando svnadmin create.

EDITAR

Si necesita cambiar el nombre de un "proyecto" en el interior del depósito - y por el proyecto supongo que te refieres un directorio - a continuación, sólo hay que utilizar el svn move command. Tenga en cuenta que esto se hace usando el cliente svn, no svnadmin. La sintaxis del comando svn move es svn move SRC DEST y le permite básicamente preformar un cambio de nombre de un archivo o directorio dentro de su repositorio. Se debe preservar toda la historia para ese archivo (o directorio).

+0

realidad tengo repositorio. Eso cantains varios proyectos. Entre esos proyectos, necesito cambiar el nombre de un proyecto no de un repositorio completo. ¿Hay alguna forma de hacerlo? – thetna

+44

@Minky: ¿Es tu blog una broma del 1 de abril? Para cambiar el nombre de un repositorio, simplemente cambie el nombre del directorio donde reposa su repositorio: ej. si su repositorio está en/opt/svn/my_old_name solo aplique: mv/opt/svn/my_old_name/opt/svn/new_name No hay necesidad de volcado /¡recargar! –

+2

@Penter, gracias por iluminarnos .. –

42

Para cambiar el nombre de un repositorio, solo tiene que cambiar el nombre de su directorio raíz y generar un nuevo UUID. Suponiendo que el depósito está en /var/svnroot/my_repo tiene que ejecutar este comando (como root) para cambiar el nombre de un repositorio:

$ mv /var/svnroot/my_repo /var/svnroot/my_new_repo 
$ svnadmin setuuid /var/svnroot/my_new_repo 

Después de eso, se puede acceder a él a través de su protocolo preferido.

+5

No necesita generar un UUID nuevo mientras se esté moviendo (no copiando) el repositorio original. –

+2

¿Hay alguna prueba para esto? No quiero arriesgarme a hacerlo y dañar mi repositorio. – guerda

+2

@guerda Estuve trabajando con este repositorio movido por un año sin ningún problema, pero ahora no estoy trabajando en la misma compañía. Ya sabes, hacer una copia de seguridad antes de cualquier cambio importante en sus datos;) –

18

SVN Book \ 5. Administración del repositorio \ Moving and Removing Repositories: repositorio de datos

Subversion está totalmente contenido dentro del directorio del repositorio . Como tal, puede mover un repositorio de Subversion a algún otro ubicación en el disco, cambiar el nombre de un repositorio, copie un repositorio, o eliminar un repositorio por completo el uso de las herramientas proporcionadas por el sistema operativo para los directorios que manipulan

Renombrar es típico en el mismo servidor, por lo que un simple cambio de nombre/movimiento del directorio del repositorio lo hará. Se requiere la llamada de svnadmin setuuidno, porque no está haciendo una copia y los UUID deben permanecer iguales, por lo que su cliente puede reubicarse fácilmente en la nueva URL del repositorio.

2

SVN 1.1 (old book):

A veces, un administrador puede cambiar la “ubicación de la base” de su repositorio, en otras palabras, el contenido del repositorio no cambia, pero la URL principal que se utiliza para llegar a la raíz del repositorio hace. Por ejemplo, el nombre de host puede cambiar, el esquema de URL o cualquier parte de la URL que conduzca al repositorio en sí. En lugar de verificar una nueva copia de trabajo, puede hacer que el comando svn cambie "reescribir" el comienzo de todas las URL en su copia de trabajo. Use la opción --relocate para hacer la sustitución. No se modifican los contenidos de los archivos ni se contacta con el repositorio. Es similar a ejecutar un script Perl sobre su copia de trabajo .svn/directorios que ejecuta s/OldRoot/NewRoot /.

$ svn checkout file:///tmp/repos test 
A test/a 
A test/b 
… 

$ mv repos newlocation 
$ cd test/ 

$ svn update 
svn: Unable to open an ra_local session to URL 
svn: Unable to open repository 'file:///tmp/repos' 

$ svn switch --relocate file:///tmp/repos file:///tmp/newlocation . 
$ svn update 
At revision 3. 

SVN 1.7 (current book):

SVN reubicar - Reubicar la copia de trabajo para que apunte a una URL raíz del repositorio diferente.

Sinopsis

svn relocate FROM-PREFIX TO-PREFIX [PATH...]

svn relocate TO-URL [PATH]

Descripción

A veces, un administrador puede cambiar la ubicación (o la ubicación aparente, desde la perspectiva del cliente) de un repositorio. El contenido del repositorio no cambia, pero la URL raíz del repositorio sí lo hace. El nombre de host puede cambiar porque el repositorio ahora se está sirviendo desde una computadora diferente. O, quizás, el esquema de URL cambie porque el repositorio ahora se está sirviendo a través de SSL (utilizando https: //) en lugar de a través de HTTP simple. Hay muchos motivos diferentes para este tipo de reubicaciones de repositorios. Pero idealmente, un "cambio de dirección" para un repositorio no debería ocasionar que todas las copias de trabajo que apuntan a ese repositorio se vuelvan para siempre inutilizables. Y afortunadamente, ese no es el caso. En lugar de obligar a los usuarios a verificar una nueva copia de trabajo cuando se reubica un repositorio, Subversion proporciona el comando svn relocate, que "reescribe" los metadatos administrativos de la copia de trabajo para referirse a la nueva ubicación del repositorio.

La primera sintaxis svn relocate le permite actualizar una o más copias de trabajo por lo que básicamente equivale a un descubrimiento y reemplazo dentro de las URL raíz del repositorio registradas en esas copias de trabajo. Subversion reemplazará la subcadena inicial FROM-PREFIX con la cadena TO-PREFIX en esas URL. Estas subcadenas de URL iniciales pueden ser tan largas o cortas como sea necesario para diferenciarlas. Obviamente, para usar este formulario de sintaxis, necesita conocer tanto la URL raíz actual del repositorio al que apunta la copia de trabajo, como la nueva URL de ese repositorio. (Puede usar svn info para determinar el primero.)

La segunda sintaxis no requiere que conozca la URL raíz actual del repositorio con la que está asociada la copia de trabajo, solo la nueva URL del repositorio (TO-URL) a lo que debería estar apuntando. En esta forma de sintaxis, solo una copia de trabajo puede ser reubicada a la vez.

Ejemplos

Vamos a empezar con una copia de trabajo que refleja una URL repositorio local:

$ svn info | grep URL: 
URL: file:///var/svn/repos/trunk 
$ 

Un día, el administrador decide cambiar el nombre del directorio del repositorio en el disco.Nos perdimos la nota, por lo que vemos un error la próxima vez que intentemos actualizar nuestra copia de trabajo.

$ svn up 
Updating '.': 
svn: E180001: Unable to connect to a repository at URL 'file:///var/svn/repos/trunk' 

Después de acorralar al administrador por las máquinas expendedoras, nos enteramos sobre el repositorio que se mueve y se les dice la nueva URL. Sin embargo, en lugar de verificar una nueva copia de trabajo, simplemente le pedimos a Subversion que reescriba los metadatos de la copia de trabajo para que apunte a la nueva ubicación del repositorio.

$ svn relocate file:///var/svn/new-repos/trunk 
$ 

Subversion no nos dice mucho acerca de lo que hizo, pero la operación apogeo libre de error es realmente todo lo que necesitamos, ¿verdad? Nuestra copia de trabajo es funcional para operaciones en línea nuevamente.

$ svn up 
Updating '.': 
A lib/new.c 
M src/code.h 
M src/headers.h 
… 

Por defecto, SVN reubican atravesará todas las copias de trabajo externas anidadas dentro de su copia de trabajo y tratar de reubicación de esas copias de trabajo, también. Use la opción --ignore-externals para deshabilitar este comportamiento.

+0

Buenos detalles, explicaciones e historia. Información muy útil. Incluso si no aborda directamente el OP. –

0
  1. En primer lugar llegar a saber dónde está la carpeta \Repositories con domicilio en, (defaut C:\Repositories)

  2. Después de que cambiar el nombre del repositorio que desea, dentro de esa carpeta /Repositories. (Windows)

  3. Si está utilizando eclipse, deseche la ubicación del repositorio anterior en los repositorios SVN y vaya al New->Repository Location...-> your new repository name. Eso es.

Cuestiones relacionadas