TortoiseSVN Foreign Repository Copy

He estado leyendo twigs de proveedores con subversión. No estoy muy cómodo con la command-line de subversión y he estado utilizando TortoiseSVN y Subclipse como clientes SVN en mi cuadro de Windows 7.

En la documentation de Vendor Branches para subversión, discuten sobre cómo hacer una "copy de repository extranjera", pero no he podido encontrar cómo hacerlo con TortoiseSVN. Cuando busqué en Internet cómo hacer esto con TortoiseSVN, encontré artículos que sugerían usar svn:externals lugar. La documentation para Vendor Branches no dice usar svn:externals y en su lugar dice usar una copy de repository extranjera.

¿Alguien sabe cómo puedo hacer una copy de este tipo con TortoiseSVN? Si no es posible, ¿ svn:externals me da el mismo resultado?

EDITAR:

Aquí está mi flujo de trabajo:

  1. Creé una nueva carpeta de nivel raíz en mi repository llamado vendor . Este es un hermano de trunk .
  2. myrepo/vendor a una nueva copy de trabajo.
  3. myvendorrepo/trunk unir two different trees usando TortoiseSVN desde myvendorrepo/trunk hasta myrepo/vendor . Esto devolvió un error diciéndome que myvendorrepo/trunk debe estar en el mismo repository que myrepo/vendor .

La documentation de Vendor Branch habla específicamente de una foreign repository copy , pero no parece posible con TortoiseSVN.

  1. "copy de repository externo" no se puede hacer con TortoiseSVN (o cualquier otro cliente SVN , es tarea / parte de /) administración de repository ). Y solo se puede usar si SVN-client no puede acceder al código de flujo ascendente (no tiene versión alguna, está almacenado en SCM, lo que SVN-client no comprende)
  2. Ha malinterpretado y utilizado mal "fusión de URL 2" (leer svn help merge ): este tipo de fusión no se utiliza en la split de proveedores, utilizada de manera diferente y para diferentes objectives: svn merge URL1 URL2 se combinará en WC de URL3 cambios paralelos independientes de URL1 + URL2

"Foreign Copy" y Externals Vendor Branching in Sample

Imaginemos:

  • Código externo colocado en VENDOR/PATH/TO/LIBRARY
  • Nuestra copy del código de MY/VENDORS/VENDOR/LIBRARY ascendente – en MY/VENDORS/VENDOR/LIBRARY (nodo intermediario MY/VENDORS/VENDOR/LIBRARY adicional es la pieza de trabajo para el futuro, cuando puede aparecer más de 1 proveedor)
  • El trabajo local ocurre en MY/trunk

Estilo "copy extranjera"

  • pregunte a SVN-admin, que tiene acceso al sistema de files del repository, cree un volcado del repository completo de VENDOR con el svnadmin dump y transmita el volcado a usted, después de filtrar solo /PATH/TO/LIBRARY nodo /PATH/TO/LIBRARY con svndumpfilter
    • Otra forma es usar svnrdump URL , que tiene algunos beneficios: puede volcar cualquier repository remoto, para lo cual tiene acceso de lectura, puede volcar solo parte del repository (y eliminar el dolor de cabeza svndumpfilter) – svnrdump dump VENDOR/PATH/TO/LIBRARY > dumpfile
  • el volcado preparado (de cualquier forma) debe cargarse en MY repository: svnadmin load /PATH/TO/MY < dumpfile con algunas adiciones:
    • porque es un volcado de otro repository, no se necesita la opción --ignore-uuid (en caso de que MY no esté vacío), pero se puede usar para security
    • porque queremos cambiar el punto de assembly del directory desde /PATH/TO/LIBRARY a /VENDORS/VENDOR/LIBRARY opción adicional --parent-dir /VENDORS/VENDOR/ es una necesidad (TBT !!!) Escribo especificaciones padre de memory )

Después de estas operaciones, tendrá un nodo en su repository local, que es una copy exacta del nodo remoto, pero no relacionado con el control remoto de ninguna manera: tiene que monitorear los cambios remotos y sincronizar con su copy a mano ( svn up VENDOR/PATH/TO/LIBRARY en WC separado, copie los cambios a su WC, confirme los cambios)

Estilo externo

  • Crear nodo físico /VENDORS/VENDOR/ en MY repository ( svn mkdir --parents /VENDORS/VENDOR )
  • defina el subdirectory LIBRARY de / VENDORS / VENDOR / como externos (con o sin PEG-revision en URL, como prefiera – sin será más fácil mantener las actualizaciones / operación cero /, pero más difícil / imposible / resore más viejo, estado histórico de su repository, con PEG tiene que mantener la realidad del enlace a mano / editar la revisión PEG, cuando sea necesario /, pero el historial se almacena siempre correctamente de manera automática), mapeado a VENDEDOR / RUTA / A / BIBLIOTECA

Para ambos styles, la integración de la cadena ascendente a su código será solo una fusión periódica / VENDEDORES / VENDEDOR / BIBLIOTECA al tronco

PD : para los elementos externos, primero la creación de una instantánea inicial en el tronco (en el caso de un tronco vacío) y la primera fusión al tronco pueden ser problemáticas y no obvias. AFAICR, no podrá fusionar / VENDEDORES / VENDEDOR / BIBLIOTECA en el enlace troncal vacío (y svn copy también): obtendrá (no puede recuperar el text) el error y no fusionará | copyrá en absoluto. No puedo hacer reference a The Right Way, pero solo copio files en Working Copy de la twig de proveedor al trunk y commit trunk para tener BASE y en este caso en first merge (y solo primero) de BIBLIOTECA en trunk para fusionar sin relación (para Subversion) nodes add --ignore-ancestry option: later trunk y LIBRARY ya están relacionados