Pregunta

He escuchado muchas cosas buenas sobre los sistemas DVCS, en particular sobre Bazaar.Aparte del concepto de repositorio distribuido, veo que se promocionan dos ventajas principales:la fusión está mejor automatizada y el cambio de nombre se maneja correctamente.

¿Podría alguien indicarme algún texto que explique cómo funcionan exactamente las mejoras?¿Cómo sabe Bazaar que cambié el nombre de un archivo?¿Qué pasa si cambio el nombre de dos archivos como parte de la misma confirmación?¿Qué sucede cuando refactorizo ​​colocando la mitad del contenido del archivo en un archivo nuevo, volviendo a sangrar todo y perdiendo algunos espacios en blanco en casi todas las líneas?

En otras palabras, me gustaría saber de personas que usan Bazaar (u otro DVCS) en la vida real, o de personas que saben cómo funciona.¿La fusión es realmente mucho mejor?¿Y cómo se consigue?


Pregunta relacionada, con una respuesta útil:

¿Por qué es más fácil bifurcar y fusionar en Mercurial que en Subversion?

¿Fue útil?

Solución

La fusión no es intrínsecamente mejor en DVCS, es sólo que serían prácticamente muy difíciles de usar si la rama/fusión no funcionara correctamente (podría decirse que svn no implementa la rama/fusión correctamente), porque en lugar de realizar un pago, estás creando una nueva rama cada vez que comienzas a trabajar en un proyecto a partir de un código existente.Creo que algunos SCS centralizados y propietarios manejan la fusión/bifurcación correctamente.

La forma en que funciona para todos ellos es registrar cada confirmación en un gráfico directamente acíclico (DAG) y, a partir de ahí, tiene diferentes estrategias de combinación disponibles.Aquí puedes encontrar más información:

http://revctrl.org/CategoryMergeAlgorithm

Al menos hg, bzr y git pueden usar utilidades de combinación externas.

Otros consejos

DVCS logra mejores fusiones mediante el seguimiento de las revisiones principales de las fusiones.En Subversion, cuando fusionas una rama con otra, pierdes información sobre dónde se originó la fusión.En un DVCS como Bazaar o Git, la revisión "fusionada" termina con dos revisiones principales.

El cambio de nombre se maneja de forma diferente entre los DVCS.Git, por ejemplo, no realiza ningún seguimiento del cambio de nombre porque no era importante para Linus.Mercurial los registra como "copiar el archivo antiguo al nuevo, eliminar el antiguo". Según Mark Shuttleworth, fundador de Canonical, Darcs y Bazaar son los únicos DVCS que manejan el cambio de nombre de archivos correctamente.

¿Cómo sabe Bazaar que cambié el nombre de un archivo?

Los cambios de nombre los especifica el usuario, al igual que agregar o eliminar archivos.Utilizar el "bzr rename <old> <new>"comando para marcar archivos o directorios para cambiarles el nombre.Si ya ha cambiado el nombre de un archivo en el árbol, puede utilizar el botón "--after" opción.

¿Qué pasa si cambio el nombre de dos archivos como parte de la misma confirmación?

Luego escribes "bzr rename <old> <new>" una vez para cada archivo.Bazaar no intenta adivinar qué archivos han cambiado de nombre.

¿Qué sucede cuando refactorizo ​​colocando la mitad del contenido del archivo en un archivo nuevo, volviendo a sangrar todo y perdiendo algunos espacios en blanco en casi todas las líneas?

Luego escribes "bzr add" en el nuevo archivo, ya que en realidad no le estás cambiando el nombre.

La siguiente es una discusión sobre cómo darcs (http://darcs.net) se ocupa de parches - http://darcs.net/manual/node9.html.

No estoy familiarizado con Bazaar, pero git no realiza un seguimiento de los cambios de nombre de los archivos.Para Git, esto parece una eliminación y una adición.Sin embargo, git es lo suficientemente inteligente como para ver que el contenido del archivo ya existe en su repositorio y rastreará su posición en el sistema.Si divide archivos o los fusiona, es lo suficientemente inteligente como para realizar un seguimiento de los segmentos de código (blobs) y almacenar esa información también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top