Mercurial: fusionándose desde una 'twig' divergente desconocida

Intento trabajar en un proyecto llamado NS-3, pero mi problema no es específico del proyecto, así que pensé en preguntar aquí y en la list de correo relevante.

Básicamente, se hizo una copy del código del proyecto actual y un nuevo repository de ese código. Se trabajó tanto en la versión 'bifurcada' como en la troncal.

Así que cloné la fuente bifurcada, cd in, y hg pull <latest-dev> , hg merge , y si bien no fue una combinación perfecta, los cambios que no se podían fusionar estaban todos relacionados con un cambio de biblioteca, tan fácilmente corregidos (en teoría ) Naturalmente, este bash optimista no se pudo build.

Ahora no estoy seguro de a dónde ir, soy nuevo en DCVS, por favor; ideas dirigidas a un niño de 5 años!

¿Cómo puedo averiguar qué set de cambios de la versión bifurcada se fusionó por última vez con el tronco de desarrollo ya que están separados pero con repositorys relacionados?

El caso donde comenzó con una copy No es un clon:

Si esto es lo que sucedió:

  1. Proyecto existe
  2. Copia (no clonar) del proyecto está hecho
  3. hg init se ejecuta en cada copy por separado, creando dos repositorys no relacionados
  4. el trabajo se realiza en ambas copys

Luego, para fusionarlos, quiere hacer esto en el más nuevo de los dos repos sin relación :

  1. hg update 0 , que salta el repository a su punto más temprano, el punto donde parecía idéntico al otro
  2. copyr en los contenidos del directory de trabajo del otro repository
  3. hg commit , que crea una nueva cabeza
  4. hg merge , que fusiona las dos cabezas y también proporciona una revisión base , que ayuda al process de fusión.

La key es conseguir una revisión base involucrada si es posible. Lo que los sistemas DVCS aportan a la table que CVS y SVN no tienen es que cada fusión es una combinación de 3 vías entre dos cabezas y el ancestro común más reciente. Fingiendo que ese ancestro común creó la nueva cabecera del último punto, los dos repos parecían iguales (revisión 0 en la copy) simula una revisión base.

El caso donde comenzó con un clon no es una copy

Este es el caso clásico de DVCS y no debería haber mucho que deba hacer. Simplemente entra en uno de los clones, hg pull de la otra y dispara la hg merge . Si la fusión requiere input, usará hg resolve para proporcionarla, y cuando hg commit .

Si en este punto su código no se está comstackndo / ejecutando, entonces solo necesita iniciar la debugging. Use hg blame para ver qué se estaba haciendo cerca de las líneas que no se comstackrán e intente descubrir qué se estaba haciendo y cómo trabajar en él.

El process de fusión es mucho más fácil cuanto más lo haces. Ingrese los cambios de flujo ascendente todos los días, no mensualmente.

Puede activar la extensión GraphLog y usar el command hg log -G para ver el punto en el que las dos líneas de desarrollo divergieron, pero al final la fusión es el desarrollo, y solo necesita acercarse a una fusión no construida como lo haría cualquier otro defecto de software.