lo básico de Mercurial

by 2 contributors:

Voy a contarte algunas cosas sobre Mercurial que te evitarán mucha frustación. Esta página es cínica y orientada a la supervivencia, pero aún así sostengo que Mercurial es mucho mejor que CVS. —jorendorff 16:06, 12 May 2008 (PDT)

Expectativas

Mercurial no es CVS. Las órdenes no son las mismas. Los conceptos no son los mismos.

Esta pistola está cargada. Te puedes disparar en el pie. Puedes perder trabajo. La herramienta intenta protegerte, pero aún así puede suceder. Los dos modos de equivocarse más comunes son: (a) ejecutas una orden sin saber lo que va a hacer; (b) ejecutas hg commit o hg qrefresh con una idea equivocada de la situación de tu directorio de trabajo. Así que accidentalmente confirmas cambios que no querías confirmar (commit); o accidentalmente subes una fusión errónea (broken merge); etc. A menudo no es inmediatamente obvio que ha sucedido algo malo.

La advertencia te permite ser precavido. No hagas estas cosas. No ejecutes órdenes sin saber lo que van a hacer —hg help es tu amigo. No confirmes cambios sin hacer primero un diff y pensarlo dos veces. Y no te dejes caer en el "modo diversión" y dejes de prestar atención al hecho de que estás jugando con tu propio trabajo pendiente de subir.

Mercurial no es polvo mágico. Mercurial es flexible, potente, y divertido. Te permite intentar cosas que nunca habrías probado en CVS. Pero, por supuesto, no todo tiene porque acabar siendo una buena idea (por ejemplo, nosotros intentamos compartir colas de parches. Y resultó ser una porquería).

Evitar los problemas

Usa Mercurial 1.0 o posterior (hg version para comprobarlo).

Aprende a manejarte Usa órdenes de sólo-lectura (como hg status, hg head, hg parents, hg log, hg diff) para comprobar el estado de tu repositorio. Ésta es una habilidad fundamental.

Configura un programa de fusión (un merge program) y asegúrate de que sabes cómo usarlo. HAZLO YA. En caso contrario acabarás cargándote tu repositorio en algún momento.

CVS deja marcadores de conflicto en tus archivos en ocasiones. Mercurial no: en su lugar, quiere que corrijas los conflictos inmediatamente, usando un programa de fusión (como kdiff3) que abrirá para ti.

Esto puede favorecer los errores. Por defecto, Mercurial usa el primer programa de fusión que encuentra en tu sistema, y la mayoría de los programas de fusión son bastante difíciles de usar correctamente. Mercurial no hace un buen trabajo detectando las fusiones canceladas y rechazando proseguir, así que limitarse a cerrar una ventana puede ponerte sin querer en una mala situación. Hay historias de hombres maduros que han salido huyendo de árboles hg completos que contenía muchas horas de trabajo, echándole la culpa a un comportamiento inexplicable de hg, debido todo a una fusión errónea.

Si una fusión falla, asegúrate de que Mercurial sabe que ha fallado. Cuando estás comenzando a aprender los fundamentos, las fusiones a menudo salen mal. Podrías ver este mensaje:

0 files updated, 0 files merged, 0 files removed, 1 files unresolved
There are unresolved merges, you can redo the full merge using:
  hg update -C 2
  hg merge 1

Esto significa que algunos conflictos no se resolvieron durante la fusión. Si no sabes exactamente cuáles son y cómo corregirlos, usa esa orden hg update -C para decirle a Mercurial que has desistido de esa fusión.

Si no lo haces, Mercurial no se enterará, y la próxima vez que confirmes cambios, creará un conjunto de cambios (changeset) con la fusión. Esto es mal. El resultado puede parecerse mucho a destruir accidentalmente un puñado de trabajo, pero el daño puede deshacerse.

Si hg parents muestra dos padres, estás fusionando.

Si usas colas de Mercurial (Mercurial Queues), haz una copia de seguridad de tu trabajo. ¡hg qrefresh reemplaza de manera destructiva el parche antiguo con el nuevo! Usa hg qinit -c para crear un repositorio de respaldo separado para tus parches y hg qcommit -m backup regularmente.

No uses colas de Mercurial en un repositorio del que alguien podría descargar.

Recuperarse

¡Vaya! ¡Mercurial te acaba de cortar el brazo!

No pruebes cosas al azar para ver si lo arreglan mágicamente. Recuerda que tienes las de perder, y desconecta la sierra eléctrica mientras aún te quede un brazo bueno.

Consigue ayuda en el IRC. Prueba #hg o #developers en el IRC de Mozilla o #mercurial en freenode.

Etiquetas y colaboradores del documento

Contributors to this page: RickieesES, Mgjbot
Última actualización por: RickieesES,