2012-10-12 48 views
7

Estoy tratando de configurar svn:externals con TortoiseSVN en una máquina con Windows. Tengo dos proyectos y ya se han creado ambos repositorios en la misma máquina local.Configuración de SVN: Externo con TortoiseSVN en Windows

La estructura actual tiene este aspecto. Creé repoA, repoB para repositorios y workA y workB para directorios de trabajo (cajas).

repositorios

Z: \ repos \ REPOA

Z: \ repos \ repoB

directorios de trabajo

Z: \ Projects \ workA \ trunk \ core.php

Z: \ Proyectos \ Worka \ trunk \ lib \ lib01.php

Z: \ Projects \ workB \ trunk \ core_mod.php

Z: \ Proyectos \ workB \ trunk \ lib \

(hay tags y branches carpetas, pero se omiten mantener la cuestión simple.)

lo que me gustaría lograr es el archivo (s) bajo workA\trunk\lib\ en este caso lib01.php para ser copiado automáticamente en el directorio workB\trunk\lib\.

Para configurar esto, lo que he hecho es el siguiente:

  1. marchamos workA y le asignó a repoA y desprotegido workB y le asignó a repoB
  2. Comitted la carpeta workA\trunk entonces el repoA está actualizado.
  3. En oreder para asignar una ubicación de importación para workB\trunk\lib, haga clic derecho en la carpeta workB y elija TortoiseSVN -> Properties.
  4. hecho clic en New -> Externals y hace clic New...
  5. mecanografiadas ./trunk/lib en el campo Local path formulario. Para el campo URL, tipeado file:///Z:/repos/repoA/trunk/lib. Al presionar el botón ..., se abrió el repo-browser y ayudó a seleccionar la carpeta de destino.

    enter image description here

    enter image description here

  6. hecho clic Ok un par de veces para cerrar la ventana de configuración. Supuse que la configuración externa estaba hecha.

  7. crea un archivo, Z:\Projects\workB\trunk\core_mod.php
  8. se pulsa sobre Z:\Projects\workB\trunk\ y seleccionados SVN Comit al Comit el workB a repoB.

Esperaba que en este punto, el lib01.php se importaría automáticamente en la carpeta Z:\Projects\workB\trunk\lib pero no se copió nada. También probé SVN Update haciendo clic derecho en la carpeta workB\trunk. Pero la carpeta workB\trunk\lib se mantuvo vacía.

Sospecho que la ruta relativa ./trunk/lib debe confundirse. No lo sé. Si puede señalar lo que estoy haciendo mal, lo agradecería.

actualización

6a - Observar cambió de Trabajo Copia WorkB a repo

Este fue un punto ciego para mí. Hice clic derecho en Z:\Projects\workB y seleccioné SVN Commit... y me dio el siguiente error.

enter image description here

Después de hacer clic en el botón Aceptar de inmediato que tiene una ventana de diálogo que pregunta si desea actualizar la carpeta y hacer clic en OK. Entonces TortoiseSVN comenzó a actualizar Z:\Projects\workB y obtuve este error. Pero después de esto, cuando volví a comprometerme Z:\Projects\workB, se realizó sin ningún error.

enter image description here

("tronco/lib" en su caso habrá más de balas, supongo).

Gracias, cuando vuelve a seleccionar la carpeta de PropertyworkB y hacer clic en el botón Edit para la svn:externals, TortoiseSVN ajusta automáticamente ./trunk/lib-trunk/lib. Ahora está configurado para ser así.

6b - prueba con repobrowser en RepoB (justo manera más rápida), que es la definición correcta

hace clic derecho en Z:\repos\repoB y eligió TortoiseSVN -> repo-browser y navegado hasta la carpeta tronco. Se ve de la siguiente manera. ¿Se ve bien? Realmente no lo sé ya que nunca había trabajado en esta tarea. La carpeta lib en la carpeta troncal está vacía en el repo-navegador.

enter image description here

La carpeta Z:\Projects\workB\trunk\lib sigue vacío. El mensaje de error sugiere reubicar 'Z: \ Projects \ workB', pero no estoy seguro de lo que significa.

+0

Repo-Broswer mostrar dos carpetas lib ** ** dentro del tronco - uno externo y uno real (no es necesario) - es un problema. Pruebe la verificación nueva del tronco (completamente recursivo, con elementos externos) para ver el estado actual del repositorio. –

+0

'Repo-Broswer muestra dos carpetas de lib dentro del tronco, una externa y otra real (no es necesario) - es un problema. - Esto fue . Gracias. Eliminé la carpeta real 'lib' en el navegador repo,' Z: \ Projects \ workB \ trunk \ lib', y realicé 'SVN Update' en' Z: \ Projects \ workB'. Ahora 'Z: \ Projects \ workB \ trunk \ lib \ lib01.php' se creó automáticamente. Este fue un viaje realmente largo para resolver. – Teno

Respuesta

3

se le olvidó al menos una acción obligatoria

6a - commit cambió de Trabajo Copia WorkB a repo

y uno puesto de control opcional

6b - prueba con repobrowser en RepoB (justo manera más rápida), que la definición es correcta

No puedo recordar por qué, pero nunca uso ./ en path-spec para URL en TSVN ("trunk/lib" en su caso será más a prueba de balas, supongo). Y los hábitos personales puros - Me definen externa en el punto de montaje, incluso si como resultado consigo múltiples definiciones dentro de recompra lugar uno agrega en la raíz

Repo-navegador con externa en el árbol y definición mostrado

Repo-Browser

+0

Gracias. Actualicé la pregunta. – Teno

0

Para cualquiera que se encuentre con este problema, el directorio de trabajo de workB no necesitó la carpeta de importación.

Z: \ Projects \ Worka \ trunk \ core.php

Z: \ Proyectos \ Worka \ trunk \ lib \ lib01.php

Z: \ Proyectos \ workB \ trunk \ core_mod .php

Z: \ Proyectos \ workB \ trunk \ lib \

tenía que haber

Z: \ Proyectos \ Worka \ trunk \ core.php

Z: \ Proyectos \ Worka \ trunk \ lib \ lib01.php

Z: \ Proyectos \ workB \ trunk \ core_mod.php

Z: \ Proyectos \ workB \ trunk \

(sin Z: \ Proyectos \ workB \ trunk \ lib)

+0

realmente * puede * (en teoría, soy demasiado perezoso para probar) tiene la carpeta ** lib * y ** externos ** es la raíz, si: 1. creará una definición externa para la carpeta LIB 2. El camino de montaje será "." –

+0

Interesante. Sin embargo, suena un poco complicado para mi nivel de comprensión actual. Probablemente la información sería útil para otros usuarios avanzados. Gracias por tu contribución. – Teno

Cuestiones relacionadas