2009-11-29 19 views
18

He reinstalado mi servidor SVN y la ruta de acceso ha cambiado desde SVN: //192.168.1.35/DDL2/trunk/DD _... a SVN: //192.168.1.35/trunk/DD _.... Realicé varios cambios en la copia de trabajo y deseo hacerlo en el servidor, así que necesito cambiar la ruta/url sin afectando la copia de trabajo.SVN ¿Cambiar de ubicación o cambiar?

He tratado de usar la función Reubicar de TortoiseSVN pero he obtenido "Reubicar solo puede cambiar la parte del repositorio de una URL", tal vez debería usar Cambiar, pero me preocupa la revisión de copia de trabajo.


svn info svn://192.168.1.35/

Path: 192.168.1.35 
URL: svn://192.168.1.35 
Repository Root: svn://192.168.1.35 
Repository UUID: 259834e4-a888-4201-9858-aaacfe621d8e 
Revision: 58 
Node Kind: directory 
Last Changed Author: rize 
Last Changed Rev: 58 
Last Changed Date: 2009-11-02 18:33:09 +0100 (po, 02 11 2009) 

svn info D:\Programy\Eclipse Workspace\LDD_L2DP

Path: D:\Programy\Eclipse Workspace\LDD_L2DP 
URL: svn://192.168.1.35/DDL2/trunk/DD_L2DP 
Repository Root: svn://192.168.1.35 
Repository UUID: 259834e4-a888-4201-9858-aaacfe621d8e 
Revision: 21 
Node Kind: directory 
Schedule: normal 
Last Changed Author: rize 
Last Changed Rev: 17 
Last Changed Date: 2009-10-21 19:22:41 +0200 (st, 21 10 2009) 

estructura antigua:

svn://192.168.1.35/DDL2 
svn://192.168.1.35/DDL2/trunk/DD_L2DP 

Nueva estructura

svn://192.168.1.35/ 
svn://192.168.1.35/trunk/DD_L2DP 

Respuesta

6

EDITAR - Basado en su salida anterior, creo que es necesario tomar un enfoque diferente. Parece que el repositorio original se creó como /data/repository con una carpeta llamada DDL2 en el repositorio. Esto se puede ver mirando el valor "Raíz de depósito" de su copia de trabajo.

Usted no será capaz de simplemente empujar la raíz del repositorio hasta un nivel usando svn switch. En su lugar, deberá usar svn move para reorganizar su repositorio alrededor de la nueva raíz deseada. Esto significa que continuará atendiendo a su repositorio desde el /data/repository, pero moverá todos los archivos de DDL2 al nivel superior.

Por supuesto, mover un montón de archivos puede ser un dolor si usted tiene ediciones locales. Me gustaría comprometer todos tus cambios, luego hacer el movimiento como una única confirmación. Tendrá que cambiar sus argumentos svnserve antes de que pueda hacer esto.

+0

Hm, me pregunto qué estoy haciendo mal. Cuando hago clic derecho en la copia de trabajo y elijo TortoiseSVN -> Reubicar, veo la URL anterior.Después de la corrección de URL elijo Aceptar y recibí el mensaje: "Parece que estás tratando de reubicar tu copia de trabajo en una ruta diferente dentro del mismo repositorio ... ¿Realmente quieres reubicarte?", Sí y ... "Reubicar solo puede cambiar la parte del repositorio de una URL "como escribí en la primera publicación. – RiZe

+0

¿Crees que creaste un repositorio nuevo (vacío) en 'svn: // 192.168.1.35 /' en lugar de migrar el antiguo? Además, ¿el antiguo repositorio estaba enraizado en '/ DDL2' o en la raíz de la URL antes de actualizar? – jheddings

+0

Hm, creo que acabo de copiar el repositorio pero cambié los argumentos de svnserve a: svnserve -d --listen-host = 192.168.1.35 -r/data/repository/DDL2 – RiZe

20

This question tiene la respuesta. Specifically:

svn switch --relocate http://svn.example.com/path/to/repository/path/within/repository http://svnnew.example.com/new/repository/path/within/repository 
1
switch (sw): Update the working copy to a different URL. 
usage: 1. switch URL[@PEGREV] [PATH] 
     2. switch --relocate FROM TO [PATH...] 

    1. Update the working copy to mirror a new URL within the repository. 
    This behavior is similar to 'svn update', and is the way to 
    move a working copy to a branch or tag within the same repository. 
    If specified, PEGREV determines in which revision the target is first 
    looked up. 

    If --force is used, unversioned obstructing paths in the working 
    copy do not automatically cause a failure if the switch attempts to 
    add the same path. If the obstructing path is the same type (file 
    or directory) as the corresponding path in the repository it becomes 
    versioned but its contents are left 'as-is' in the working copy. 
    This means that an obstructing directory's unversioned children may 
    also obstruct and become versioned. For files, any content differences 
    between the obstruction and the repository are treated like a local 
    modification to the working copy. All properties from the repository 
    are applied to the obstructing path. 

    Use the --set-depth option to set a new working copy depth on the 
    targets of this operation. Currently, the depth of a working copy 
    directory can only be increased (telescoped more deeply); you cannot 
    make a directory more shallow. 

    2. Rewrite working copy URL metadata to reflect a syntactic change only. 
    This is used when repository's root URL changes (such as a scheme 
    or hostname change) but your working copy still reflects the same 
    directory within the same repository. 
14

La reubicación se usa si tiene pensado cambiar de servidor. Por ejemplo, si desea que una copia de trabajo ya no haga referencia a svn: //192.168.1.35/DDL2/trunk/DD_L2DP a favor de svn: //192.168.1.127/DDL2/trunk/DD_L2DP, debería usar la reubicación.

interruptor se utiliza si desea cambiar lo directorio en el repositorio de su copia de trabajo se refiere. Creo que este es el caso que quieres. Esta operación no afecta el número de revisión de los repositorios: solo actualiza la URL de la copia de trabajo.

svn move se usa si actualmente tiene svn://192.168.1.35/trunk/DDL2DP y desea crear svn://192.168.1.35/DD_L2DP/trunk pero todavía no existe en su repositorio.

Cuestiones relacionadas