LinuxParty
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.
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.
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 |
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 |
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 |
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!
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.
-
Programación
- Thomas E. Kurtz, coinventor de BASIC, muere a los 96 años
- Profesor de informática del MIT prueba el impacto de la IA en la formación de programadores
- Lanzamiento del IDE de código abierto Qt Creator 14 con soporte para complementos basados en Lua
- Plantillas para Joomla - Episodio 1: Plantillas, marcos y clubes o no...
- Este es el mejor libro que he visto para aprender a programar en Python en castellano desde cero, gratis y online
- ¿Deberían los niños seguir aprendiendo a programar en la era de la IA?
- La 'obsolescencia' de VBScript confirmada por Microsoft y su eventual eliminación de Windows
- El Gran Debate: ¿Deberían los Modelos de Inteligencia Artificial Ser de Código Abierto?
- El lenguaje de programación BASIC cumple 60 años
- El CEO de Nvidia dice que los niños no deberían aprender a programar
- 40 años de Turbo Pascal: recuerdos del dinosaurio codificador que revolucionó los IDE
- Los lenguajes de programación más populares y dónde aprenderlos.
- Top 5 de los principales lenguajes de programación para desarrollar aplicaciones de escritorio Linux
- Qt Creator 12 lanzado con complementos de grabación de pantalla y Explorador de compiladores
- 10 sitios web para practicar problemas de programación