Por lo tanto, ya estoy familiarizado con esto:
http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html¿Cuál es la mejor manera de manejar ramas de sucursales de proveedores en SVN?
Mi pregunta es ¿cómo manejar una rama de proveedor que tiene tanto una versión estable y una rama de alfa/beta que desea integrar?
Por lo tanto, supongamos que sigue el ejemplo original del libro SVN. Tendrías:
svn: // localhost/home/svn/vendedor/libcomplex/corriente
SVN: //localhost/home/svn/vendor/libcomplex/1.0
svn: // localhost/home /svn/vendor/libcomplex/1.1 (igual que el actual)
Ahora, supongamos que tiene dos versiones de su propia 'calc' aplicación:
Calc (esto es esencialmente tronco == Calc 2.0)
Calc -1.0 (lanzado al público)
Digamos que calc-1.0 usa libcomplex 1.0 y calc (en el tronco) utilizan libcomplex 1.1, que aún se está desarrollando.
Hay un error en libcomplex 1.0 y se lanza una nueva versión para corregir ese error: libcomplex 1.0.1. Los mantenedores libcomplex también han incluido esta corrección de error en libcomplex 1.1.
No está listo para lanzar Calc 2.0, por lo que necesita integrar libcomplex 1.0.1 en su sucursal de proveedor y luego actualizar calc-1.0 para hacer una versión de corrección de errores.
¿A dónde va?
No puede ponerlo en svn: // localhost/home/svn/vendor/libcomplex/current porque 1.1 vive actualmente allí.
¿Copias svn: //localhost/home/svn/vendor/libcomplex/1.0 a svn: //localhost/home/svn/vendor/libcomplex/1.0.1 y luego traes la nueva versión? De esta forma, puede usar svn para fusionar la diferencia entre 1.0 y 1.0.1 con calc-1.0.
En mi ejemplo anterior, tengo una rama para mi versión: calc 1.0. Las carpetas de proveedores no están contenidas en calc. ¿Sugiere que/vendor también esté ramificado? Para que quede claro aquí está el ejemplo que estoy describiendo: /vendor/libcomplex/ /calc/trunk/ /calc/branches/1.0/ Su sugerencia de no utilizar "actual" y simplemente utilizar las estructuras de carpetas no permitirá adecuadamente la fusión de los cambios entre las versiones en el enlace troncal, frustrando así el propósito. Necesita este historial de cambios para permitir la fusión de cambios en el tronco donde ha modificado la fuente original del proveedor. –
Mi enfoque es para trabajos cuando todo lo que haces es usar versiones lanzadas. Si también está modificando la fuente, puede ser útil tratar el código del proveedor como su propio código (es decir, incluirlo en la rama de su troncal en lugar de tener al proveedor como una carpeta separada). Sin embargo, su enfoque también tiene sentido. Cree la rama de proveedor/libcomplex/1.0.1, combine cualquier personalización y actualice la versión de calc 1.0 para que apunte a vendor/libcomplex/1.0.1, luego libere calc 1.0.1. Siempre que esté listo libcomplex 1.1, fusione personalizaciones, cree calc2.0 y estará listo. El tronco nunca apunta a 1.0.1 –