2011-05-10 14 views
6

Solo tengo unos días de experiencia con Git y Mercurial, y no tengo muchas experiencias de programación.Renombrar en Git y Mercurial: Precisión y automaticidad

En los últimos días, leí muchos mensajes que comparaban los dos. Según lo que he leído y mis pruebas, obtengo las siguientes conclusiones:

El cambio de nombre de Git es 100% automático pero no es 100% exacto. Se basa en el algoritmo para adivinar los cambios de nombre. Los usuarios finales no pueden alterar su decisión, incluso si está completamente equivocada.

Supongo que el método de Git podría estar bien para el 99% de los casos, pero ese 1% causará dolores de cabeza. Me hace dudar en refactorizar mi código (cambiando el nombre de clase y el contenido al mismo tiempo), ya que arriesgo perder el historial de archivos si refactorizo ​​demasiado.

Mercurial puede ser 100% automático y 100% exacto, siempre que renombre/mueva mis cosas dentro de Visual Studio y tenga instalado VisualHG, VisualHG debería rastrear y cambiar de forma precisa y automáticamente (actualmente VisualHG tiene un error - File is not renamed when I move it between projects) Y los usuarios finales pueden cambiar su decisión si comete errores.

Si no tengo Visual Studio, aún puedo utilizar la ventana "Detectar copias/cambios de nombre" de TortoiseHg, puedo establecer un porcentaje de similitud, pedir a Mercurial que detecte automáticamente los cambios de nombre. Si comete un error, tengo la oportunidad de corregirlo.

¿Mis conclusiones son correctas o incorrectas?

Referencia:

Git and Mercurial - Compare and Contrast

Respuesta

6

Here puede ver la diferencia explicada, pero la mayoría tiene razón. Mercurial tiene rename y mv comandos que hacen el cambio de nombre "real", mientras que mv de Git solo hace rm y add. También parece que Mercurial puede imitar el comportamiento de Git y adivinar los cambios de nombre, una característica bastante agradable. Por experiencia, el algoritmo de detección de renombrado de Git toma muchas decisiones equivocadas, especialmente si copia un archivo y altera las dos copias un poco, la mayoría de las veces será incorrecto.

4

No creo que la capacidad de Mercurial para hacer un seguimiento de archivos cambia el nombre es casi tan perfecto como parece pensar que podría ser. No tengo mucha experiencia con Git, pero tengo una buena relación con Mercurial, y el cambio de nombre de los archivos parece funcionar bien en algunos contextos (hg view los entiende), siempre y cuando no haya hecho nada demasiado "interesante" (que parece ocurrir con bastante frecuencia).

Y se supone que Git, al menos por reputación, le permite realizar cambios de bajo nivel en el historial si es necesario.