LinuxParty

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 
Resumen: La gestión del código fuente para un proyecto de desarrollo de software no es menos importante que la escritura en sí, en primer lugar. UNIX® y Linux® ofrecen una amplia selección de paquetes para los sistemas de control de versiones (VCS), cada uno de ellos tiene un enfoque ligeramente diferente. Este artículo se centra en el sistema de gestión de código fuente Mercurial, más comúnmente conocida como hg. Mercurial ofrece una solución potente, moderna y ligera para el control del código fuente que facilita a los desarrolladores trabajar y depurar sus cambios en un proyecto de software, mientras que el mantenimiento de un repositorio estable, centralizando el código fuente que todos los miembros del proyecto pueden depender.

Gestión de código fuente de UNIX y Linux

La Identificación y el seguimiento de los cambios realizados por varios desarrolladores y su fusión en una sola, la actualización del código hace visible la colaboración entre varios desarrolladores. Los VCS software, también conocida como la Revisión de Sistemas de Control (RCS) o de Gestión de Código Fuente (SCM), permiten a varios usuarios enviar los cambios a los mismos archivos o proyectos sin que uno de ellos sobrescriba accidentalmente los cambios respectivos.

Linux® y UNIX® son ágiles en los VCS, que van desde los dinosaurios, como el RCS y el Concurrent Versions System (CVS) a los sistemas más modernos, como Arch, Bazaar, Git, Subversion y Mercurial. Como Git, Mercurial comenzó su vida como un reemplazo de fuente abierta para un sistema de gestión de fuentes comerciales de código llamado BitKeeper, que fue utilizado para mantener y gestionar el código fuente del kernel de Linux. Desde su creación, Mercurial se ha convertido en un popular sistema de VCS que es utilizado por muchas fuentes abiertas y proyectos comerciales. El uso de Mercurial incluyen proyectos como Mozilla, IcedTea, y el wiki MoinMoin. Ver Recursos para los enlaces a estos y muchos ejemplos más.

Los sistemas VCS generalmente se refieren a cada colección de código fuente que pueden realizar cambios y el seguimiento como un depósito. Cómo los desarrolladores interactúan con un repositorio es la diferencia clave entre los sistemas VCS más tradicionales, como CVS y Subversion, que son los sistemas centralizados de VCS más conocidos, y los sistemas VCS más flexibles, Mercurial y Git, que se conocen como sistemas distribuidos VCS. Los desarrolladores interactuan con los sistemas centralizados de VCS con un modelo cliente/servidor, donde los cambios en la copia local del código fuente sólo pueden ser enviados de nuevo al repositorio central. Con los sistemas distribuidos de VCS utilizan un modelo peer-to-peer, donde cualquier copia de un repositorio central en sí es un repositorio para que los cambios se puedan cometer y de la que se puede compartir con ninguna otra copia. Los sistemas distribuidos de VCS en realidad no tienen la noción de una central, repositorio principal, pero casi siempre se definen en la política para que exista un único repositorio para crear, probar y mantener una versión maestra de su software.

¿Por qué Mercurial?

Mercurial es un sistema distribuido VCS pequeño y potente en el que es fácil de empezar a trabajar con, sin dejar de ofrecer los comandos avanzados que los usuarios de VCS puede ser necesario para su uso. La Naturaleza distribuida de Mercurial hace que sea fácil trabajar en proyectos a nivel local, el seguimiento y la gestión de los cambios a través de locales y compromete a impulsar los cambios en repositorios remotos siempre que sea necesario.

Entre los sistemas VCS modernos y distribuidos, el sistema más cercano a Mercurial VCS es Git. Algunas diferencias entre Mercurial y Git son los siguientes:

  • Múltiple, una función de deshacer las operaciones: Mercurial revert , backout y rollback son comandos que hacen fácil volver a las versiones anteriores de archivos de los cambios confirmados. Git proporciona un único integrado comando "revert" con su típicoal rocket-scientist-only syntax.
  • Incorporada en el servidor web: Mercurial ofrece un simple, servidor web integrado que hace que sea fácil para albergar un depósito de forma rápida para que otros los puedan sacar. Sacarlos requiere seguridad ignorando o una configuración más compleja que soporta Secure Sockets Layer (SSL).
  • Preservación de la historia durante las operaciones de copiar / mover: Los comandos de Mercurial copy y move conservan la información de la historia completa, mientras que Git no conserva la historia en ambos casos.
  • Branches (sucursales): Mercurial comparte automáticamente todas las ramas, mientras que Git requiere que cada repositorio creado sus propias oficinas (ya sea la creación de forma local o mediante la asignación a sectores específicos en un repositorio remoto).
  • Variables globales y locales: Mercurial soporta variables globales que se comparten entre los repositorios, que hacen más fácil compartir información acerca de puntos específicos en el desarrollo de código sin ramificaciones.
  • El soporte nativo en plataformas Windows: Mercurial está escrito en Python, que es compatible con Microsoft® Windows®. Mercurial es por lo tanto disponible como un ejecutable de Windows (ver Recursos ). Git en Windows es más complejo, sus opciones son msysgit, usando git estándar bajo Cygwin, o utilizando un sistema basado en web hosting y repositorio.
  • Automatic repository packing (Embalaje depósito automático): Git requiere que usted mismo empaquete y recoja sus depósitos, mientras que Mercurial realiza sus operaciones equivalentes de forma automática. Sin embargo, los repositorios de Mercurial tienden a ser más grandes que los repositorios Git para el mismo código base.


Los aficionados a Mercurial y Git también estarían felices de discutir sobre la curva de aprendizaje, los méritos y la capacidad de uso del conjunto de comandos de cada sistema de VCS. Nuestro limitado espacio impide la discusión aquí, pero una búsqueda en Internet sobre este tema se proporciona un montón de material de lectura interesante.

Creación y uso de repositorios de Mercurial

Mercurial ofrece dos formas básicas para crear un repositorio local para el código fuente de un proyecto: ya sea de forma explícita la creación de un repositorio o mediante la clonación de un repositorio existente, a distancia:

  • Para crear un repositorio local, utilice el comando hg init [REPO-NAME]. Proporcionando el nombre de un repositorio al ejecutar este comando crea un directorio para el repositorio en la ubicación especificada. No proporcionar el nombre de un depósito se convierte en el directorio actual de trabajo como un repositorio. Esto último es muy útil cuando se crea un repositorio de Mercurial para una base de código existente.
  • Para clonar un repositorio existente, utilice el hg clone REPO-NAME [LOCALNAME]. Mercurial soporta la transferencia de hipertexto (HTTP) y el protocolo Secure Shell (SSH) para acceder a repositorios remotos. Listado 1 muestra un ejemplo del comando hg y el resultado que produce cuando la clonación de un repositorio a través de SSH.

  • Listado 1. La clonación de un repositorio de Mercurial a través de SSH
    	
    	$ hg clone ssh://codeserver//home/wvh/src/pop3check 
    	wvh@codeserver's password: 
    	destination directory: pop3check
    	requesting all changes
    	adding changesets
    	adding manifests
    	adding file changes
    	added 1 changesets with 12 changes to 12 files
    	updating to branch default
    	12 files updated, 0 files merged, 0 files removed, 0 files unresolved
    	remote: 1 changesets found
          

Nota: La configuración para poder utilizar el protocolo HTTP para acceder a repositorios Mercurial, debe iniciar el servidor web interno de Mercurial en el repositorio ( hg serve -d ) o el uso del script Mercurial hgweb.cgi integra Mercurial con un servidor Web, como Apache. Cuando la clonación a través de HTTP, lo normal es que desee especificar un nombre para tu repositorio local.

Después de crear o clonar un repositorio y hacer que el depósito de su directorio de trabajo, esté listo para comenzar a trabajar con el código que contiene, agregue los nuevos archivos, y así sucesivamente.

Obtener ayuda en Mercurial

El Comando principal de Mercurial es hg , que admite un conjunto de sub-comandos que son similares a los de otros sistemas de VCS. Para ver una lista de los comandos más comunes, ejecutar el hg sin argumentos, que muestra un resultado similar al mostrado en el Listado 2 .
Listado 2. Comandos básicos prestados por Mercurial

    
     Mercurial SCM distribuido

     comandos básicos:

    add        add the specified files on the next commit
    annotate   show changeset information by line for each file
    clone      make a copy of an existing repository
    commit     commit the specified files or all outstanding changes
    diff       diff repository (or selected files)
    export     dump the header and diffs for one or more changesets
    forget     forget the specified files on the next commit
    init       create a new repository in the given directory
    log        show revision history of entire repository or files
    merge      merge working directory with another revision
    pull       pull changes from the specified source
    push       push changes to the specified destination
    remove     remove the specified files on the next commit
    serve      export the repository via HTTP
    status     show changed files in the working directory
    summary    summarize working directory state
    update     update working directory

    usar "hg help" para la lista completa de comandos o "hg -v" para más detalles
  

Esta lista muestra sólo los comandos básicos de Mercurial. Para obtener una lista completa, ejecute el hg help.

Comprobación del estado del repositorio

El registro de los cambios es la operación más común en cualquier sistema VCS. Usted puede utilizar el hg status para ver todos los cambios pendientes a los archivos en su repositorio. Por ejemplo, después de crear un archivo nuevo o modificar uno ya existente, se ve una salida como la mostrada en el Listado 3 .
Listado 3. Estado de la salida de Mercurial

    
    $ hg status
    M Makefile
    ? hgrc.example
  
En este caso, el archivo Makefile es un archivo existente que ha sido modificado (indicado por la letra M en el principio de la línea), mientras que el archivo hgrc.example es un nuevo archivo que no se está siguiendo (indicado por la pregunta marca ? ) al principio de la línea.

Agregar archivos a un repositorio

Para agregar el archivo hgrc.example a la lista de archivos que están siendo rastreados en este repositorio, utilice el hg add. Especificando uno o más nombres de archivo como argumentos añade explícitamente los archivos a la lista de archivos que están siendo seguidos por Mercurial. Si no se especifica ningún archivo, todos los nuevos archivos se añaden al repositorio, como se muestra en el Listado 4 .
Listado 4. Agregar un archivo a su repositorio

    
     $ hg add
     añadiendo hgrc.example
  

Sugerencia: Para agregar de forma automática todos los archivos nuevos y marcar los archivos que se han eliminado para el retiro permanente, puede utilizar el comando de Mercurial hg addremove.

Para la comprobación del estado del repositorio muestra que el archivo se ha añadido (indicado por la letra A al principio de la línea), como se muestra en el Listado 5 .
Listado 5. Repositorio de estado después de las modificaciones

    
     $ hg status
     M Makefile
     A hgrc.example
  

Registrando cambios.

El registro de los cambios es la operación más común en cualquier sistema VCS. Después de hacer y probar los cambios, ya está listo para confirmar esos cambios en el repositorio local.

Antes de confirmar los cambios, por primera vez

Si este es su primer proyecto de Mercurial, debe proporcionar cierta información básica para que Mercurial puede identificar al usuario que está cometiendo esos cambios. Si no lo hace, aparecerá un mensaje en la línea de abort: no username supplied... cuando intenta confirmar los cambios, y los cambios no se comprometen.

Para añadir su información de usuario, crear un archivo llamado. hgrc en su directorio personal. Este archivo es el archivo de configuración personal Mercurial. Es necesario agregar por lo menos la información básica del usuario se muestra en el Listado 6 de este archivo.
Listado 6. Información obligatoria en el archivo. Hgrc de un usuario

    
    [ui]
    username = Firstname Lastname 
  

Vuelva a colocar nombre y apellido con su nombre y apellido; reemplazar Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. con su dirección de correo electrónico, guardar el archivo modificado.

Puede configurar los valores por defecto de configuración de Mercurial que se aplican a todos los usuarios (que no debe incluir información específica del usuario) en el archivo /etc/mercurial/hgrc en sistemas Linux y UNIX y en el archivo Mercurial.ini en sistemas Microsoft Windows, donde este archivo se encuentra en el directorio de la instalación de Mercurial.

El estándar de proceso de confirmación

. Después de crear o verificar su archivo ~/.hgrc, puede confirmar sus cambios con e comando hg commit, identificando los archivos específicos que desea para commit or committing todos los cambios pendientes, de suministrar un argumento, como en el ejemplo siguiente:

    $ hg commit
    Makefile
    hgrc.example
    committed changeset 1:3d7faeb12722
  

Como se muestra en esta salida de ejemplo, Mercurial se refiere a todos los cambios que están asociados con una única confirmación como un conjunto de cambios.

Cuando confirme los cambios, Mercurial inicia el editor por defecto para que pueda añadir un mensaje de confirmación. Para evitar esto, se puede especificar un mensaje de confirmación en la línea de comandos mediante la opción -m "Message..". Para utilizar un editor diferente, se puede añadir un editor entrada de la sección [ui] del archivo ~ /. hgrc, especificando el editor que deseas utilizar y las opciones de línea de comandos asociados. Por ejemplo, después de añadir una entrada para el uso de emacs en ningún modo de ventana como mi editor por defecto, mi archivo ~/.hgrc parece que se muestra en el Listado 7 .
Listado 7. Personalización adicional en el archivo .hgrc de un usuario

    
    [ui]
    username = William von Hagen 
    editor = emacs -nw
  

Sugerencia: Para maximizar la cantidad de información que Mercurial ofrece sobre sus actividades, puede agregar verbose = True en la entrada [ui] del archivo de configuración de Mercurial.

Enviando los cambios a un repositorio remoto

Si está utilizando un clon de un repositorio remoto, usted quiere empujar esos cambios para que el repositorio después de confirmar los cambios a tu repositorio local. Para ello, el uso del comando de Mercurial hg push, como se muestra en el Listado 8 .
Listado 8. Empujando los cambios a través de SSH

        $ hg push
    wvh@codeserver's password: 
    pushing to ssh://codeserver//home/wvh/src/pop3check
    searching for changes
    1 changesets found
    remote: adding changesets
    remote: adding manifests
    remote: adding file changes
    remote: added 1 changesets with 2 changes to 2 files
  

Cambios tirando de un repositorio remoto

Si está utilizando un clon de un repositorio remoto y otros usuarios que también están usando mismo repositorio, que desea recuperar los cambios que han realizado y llevado a ese repositorio. Para ello, el uso de Mercurial hg pull de comandos, como se muestra en el Listado 9 .
Listado 9. Pulling los cambios a través de SSH

    
    $ hg pull
    wvh@codeserver's password: 
    pulling from ssh://codeserver//home/wvh/src/pop3check
    searching for changes
    adding changesets
    adding manifests
    adding file changes
    added 1 changesets with 0 changes to 0 files
    (run 'hg update' to get a working copy)
    remote: 1 changesets found
  

Como se muestra en la salida de este comando, este comando sólo recupera información acerca de los cambios a distancia-que debe ejecutar la hg update comando para mostrar los cambios asociados en el repositorio local. Este comando identifica las formas en el repositorio ha sido actualizado, como se muestra en el Listado 10 .
Listado 10. La actualización de su depósito para mostrar los cambios

    
     $ hg update
     0 archivos actualizados, 0 archivos combinados, uno los archivos eliminados, 0 archivos sin resolver
  

Deshacer cambios en Mercurial

Mercurial ofrece los siguientes comandos integrados que hacen que sea fácil de deshacer los cambios realizados:

  • hg backout CHANGESET : Deshace un conjunto de cambios específicos y crea un conjunto de cambios que se deshace de cambios. Menos que se especifique el --merge opción al ejecutar este comando, usted tiene que combinar ese conjunto de cambios en su versión actual para empujarlo de nuevo a un repositorio remoto.
  • hg revert : Devuelve a las versiones anteriores de uno o más archivos, especificando sus nombres o regresar a la versión anterior de todos los archivos de la especificación --all opciones de línea de comandos.
  • hg rollback : Deshace la última operación de Mercurial, que es comúnmente un commit , pull de un repositorio remoto, o un push a este repositorio. Sólo se puede deshacer una sola transacción.

Consulte la ayuda en línea para todos estos comandos antes de tratar de usar!

Resumen

Mercurial y otros sistemas distribuidos de administración de código fuente son la ola del futuro. Mercurial es un software de código abierto, y pre-compilados de versiones Mercurial están disponibles para Linux, UNIX, Microsoft Windows y Mac OS ® X sistemas. En este artículo se destaca el uso de Mercurial para llevar a cabo una serie de tareas comunes de VCS, que muestra lo fácil que es para empezar a usar Mercurial. Para propósitos más avanzados, Mercurial ofrece muchos más comandos avanzados y opciones de configuración para ayudarle a manejar su código fuente y personalizar su interacción con una instalación de Mercurial.

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política