Ver Mensaje Individual
  #2  
Antiguo 03-04-2012
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Reputación: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Eso depende de la profundidad y divergencia de los cambios. Una alternativa es manejar las variaciones por medio de un sistema de plugins.

El problema es que tu concepto de branching esta limitado por los problemas de SVN. Por ejemplo, es muy normal que al hacer cambio en un branch no solo aplique para tu cliente, sino tambien para toda la aplicacion. Si manualmente tienes que administrar y copiar/pegar los cambios entre los branchs, no esta sirviendote de mucho el usar un SCM.

Debes combinar, en mi opinion, un esquema que te permita aislar el codigo volatil del estable. Esto se logra tanto nivel de la arquitectura del codigo como del soporte de la herramienta de SCM.

P.D> Subversion al igual que todos los SCM centralizados tiene un soporte mediocre al concepto de branching y peor de merge.


Cita:
“The trouble with distributed version control is that it makes it too easy to branch,” I said, “and branching always causes problems.” Turns out this was wrong, too. I was on a streak.

Branching causes problems in Subversion because Subversion doesn’t store enough information to make merging work. In Mercurial, merging is painless and easy, and so branching is commonplace and harmless.
En ese aspecto, absolutamente te recomiendo que te muevas a mercurial o git. En estos, hacer branching y merge es algo tan natural y casi sin complicaciones en su proceso.

El problema con SVN es mas acentuado mientras mas gentes este tocando codigo y mientras mas tiempo pase entre el branch & merge, o mas radical los cambios (como mover archivos, borrar, y cambiar decenas). Con mercurial (el que uso) eso no es problema. De hecho, cada vez que se modifcan el arbol luego de un commit es un branch, y cada commit es un merge. Asi de natural es el proceso de esto en los SCM distribuidos.

Esto es lo que hago.

Tengo una rama que es la estable (la por defecto). Hago un branch para la linea de desarrollo donde hago los cambios de forma regular, que luego aplico a la estable. Luego tengo N ramas por cada cambio radical, que representa una gran divergencia (por ejemplo, mientras actualizo del iPhone al iPad) pero aislado de la linea de desarrollo (que representa los cambios del dia a dia). Estos al final se integran a la linea de desarrollo, y esta eventualmente a la estable. Cuando un cambio que aplico a una rama la necesito en estable, puedo aplicar SOLO ESOS CAMBIOS y casi sin problemas (osea, no mas que un hora de ajustes) los tengo en la estable sin necesidad de traer toda la rama que esta aun incompleta.

De nuevo, reitero que absolutamente te deberias de mover a mercurial o git si vas a hacer branching de forma significativa. Mi experiencia con SVN en todos los casos que intente de hacer merge fue traumatica, y es por eso que en SVN es algo "raro" usar branch. Por el contrario, en mercurial y git es algo totalmente natural.

Por eso, el soporte de tu SCM terminaria forzandote a seguir un camino u otro.


P.D Git es mas popular estos dias, pero recomiendo mucho mas mercurial. Es mas simple, tiene mejor soporte en windows (como se refleja en esta pregunta que hice)

Puedes ver el tutorial:

http://hginit.com/

O usar git. Igual con ambas no hay pierde.
__________________
El malabarista.
Responder Con Cita