2011-05-11 9 views
9

Me postulo un rebase en un conjunto de cambios en Hg. De vez en cuando aparece un mensaje que dice algo así como local changed somefile.cs which remote deleted. use (c)hanged version or (d)elete?Mercurial predeterminado de combinación hg

Supongo que cuando estoy realizando una nueva configuración, quiero seguir lo que hace el control remoto, así que he estado eliminando. Si esto es incorrecto, alguien me detiene.

Sin embargo, aquí es la gran cosa? Me he dado cuenta de que si presiono Enter, parece que avanza. Sin embargo, no tengo idea de lo que está incumpliendo. ¿Alguien sabe?

+0

Asimismo, puesto que siempre elijo las mismas opciones, ninguna manera de simplemente hacer que sucedan de forma automática sería apreciada. – jocull

Respuesta

9

El valor predeterminado es utilizar el (c)hanged version. Rebase usa la lógica de fusión para esta operación.

no hay documentación de esta opción por defecto, pero se decide here:

216     if repo.ui.promptchoice(
    217      _(" local changed %s which remote deleted\n" 
    218      "use (c)hanged version or (d)elete?") % f, 
    219      (_("&Changed"), _("&Delete")), 0): 
    220      act("prompt delete", "r", f) 
    221     else: 
    222      act("prompt keep", "a", f) 

No parece ser una manera de decidir automáticamente la opción que se ha seleccionado.

+0

Gracias! Si solo estoy tratando de seguir una rebase junto con los cambios originales, supongo que no quiero mantener la versión local si el control remoto la eliminó. ¿Estoy al menos en lo correcto allí? – jocull

+0

@jocull: debido a que ambos lados de la fusión tocaron el archivo, Mercurial está tratando de proporcionar un valor predeterminado 'seguro' que no dará como resultado la pérdida de datos. Sin embargo, si pretendía eliminar el archivo en uno de sus conjuntos de cambios reestablecidos (es decir, remotos), no debería conservar la versión local. –

+0

¡Gracias por la referencia del código! 'sí d | hg rebase ... 'seguía resultando en el uso de" cambiado "cada vez (por ejemplo, suministro de c). ¡Cambiar el ', 0' al', 1' funciona! (Sin embargo, ahora tengo dudas sobre lo que estaba haciendo, podría haber estado diciendo "c" y aceptando "d", pero al menos ahora ambos deberían coincidir) – Stephen

Cuestiones relacionadas