Estoy comenzando con SVN y muchas fuentes dicen que la fusión es muy difícil en SVN en comparación con las herramientas DVCS. Las preguntas más recientes que pude encontrar aquí sobre SE son de 2012.
A veces se menciona que la razón es que SVN anterior a v1.5 no tenía metadatos, pero SVN está en la versión 1.8.9 ahora.
Dado que SVN ahora es mucho más maduro que v1.5, y especialmente el hecho de que no usamos SVN 1.5 para no sufrir la falta de metadatos mencionada, ¿hay todavía mucha validez en esos argumentos contra SVN?
Entiendo que DVCS tiene un enfoque completamente diferente que a menudo es más deseable, pero para aquellos que "deben" demandar a SVN por cualquier razón, la fusión ya no es realmente un "infierno", ¿verdad?
version-control
svn
merging
Torben Gundtofte-Bruun
fuente
fuente
Respuestas:
Funciona bien si se atiene a los casos simples , pero hay algunos complejos que no lo hacen.
Las limitaciones que se me ocurren:
Solo puede encontrar el antepasado más reciente si está en una de las ramas involucradas. Así que si se crea
branches/this
ybranches/that
tanto desdetrunk
y luego tratar de fusionarbranches/this
abranches/that
, no sabrá qué hacer. Lo que significa que solo puede fusionar una rama hacia o desde su padre. Puede encontrarse con esto si inicia dos ramas de características y luego se da cuenta de que las características son interdependientes y necesitan combinarlas.Si bien afirma que puede rastrear los cambios de nombre, la fusión de ramas cuando los archivos se movieron por un lado y se modificaron por el otro no siempre encuentra los archivos correctos para fusionar y arreglarlos manualmente es algo tedioso, ya que no deja la información necesaria en ningún lado mano.
Los archivos agregados a veces causan conflictos espurios en fusiones posteriores.
Dado que la subversión no tiene un concepto separado de rama, puede fusionar solo un subárbol de un proyecto y eso puede conducir a un gran desorden con bastante rapidez. Se recomienda encarecidamente combinar siempre ramas completas. Desafortunadamente, por alguna razón, a veces las propiedades de información de fusión aparecen en subdirectorios incluso si parecen superfluas y la fusión se realizó correctamente en toda la rama.
Por último, pero no menos importante, es lento . Las fusiones en un proyecto de cualquier tamaño serio a menudo toman minutos donde la mayoría de los DVCS pueden hacerlo en menos de un segundo.
fuente
Desde mi experiencia, la fusión en SVN fue 'arreglada' en la versión 1.6. Trabajo tanto en Mercurial como en SVN, y desde la versión 1.6 de SVN, la fusión parece ser la misma cantidad de trabajo en ambas plataformas. La única excepción podría ser que debe recordar proporcionar la
--reintegrate
opción al fusionar desde una rama nuevamente en el tronco usando SVN.Esta es solo mi experiencia operativa. No sé nada sobre los aspectos internos de SVN.
fuente