En términos generales, la rebase es el acto de incorporar cambios ascendentes en una rama de características, antes de fusionar la rama de características nuevamente en la rama ascendente.
En git, el proceso es aún más sofisticado, porque los cambios que se han realizado desde que se creó la bifurcación se quitan y almacenan temporalmente, se aplican los cambios ascendentes y luego se aplican los cambios almacenados. La conclusión aquí es fusionar el enlace troncal en una rama característica, no es una rebase en términos git, hay mucho más. El enfoque git tiene una serie de ventajas, pero no se puede implementar de forma muy clara en svn ya que todas las confirmaciones deben almacenarse en el servidor (svn no se distribuye), sin embargo, puede hacerse en svn.
Un 'rebase svn' (la forma GIT) podría ser algo como esto
svn cp trunk feature
- se compromete a presentar & tronco
svn cp trunk feature-rebase
svn co feature-rebase
cd feature-rebase
svn merge feature
svn commit
svn rm feature
svn mv feature-rebase feature
- (de nuevo WC función de rebase)
svn switch feature
Entonces, finalmente, en una copia de trabajo del tronco, svn merge --reintegrate feature
Ves la diferencia de la simple fusionando el tronco a la rama de características? En este ejemplo, comienza con lo último de la línea de enlace ascendente, luego combina los cambios de la función en eso.
Imagine que algunas de las confirmaciones en el tronco podrían provenir de una fusión de otra rama de características en el tronco, por lo que no estoy abogando por comprometerse directamente con el tronco.
Soy vcs noob. Tengo curiosidad: ¿qué tipo de conflictos serían estos? Si fusiona trunk @ r1 a través de trunk @ r2 en branch, y fusiona el resultado nuevamente en trunk, entonces no debería haber ningún cambio debido a trunk. ¿Puede dar un ejemplo? –
Lo que sugiere en su pregunta es la solución correcta ;-) Debería funcionar como se esperaba, no puedo ver ningún efecto secundario. – ymajoros