
igor@487: \chapter{Referencia de las Colas de Mercurial}
jerojasro@336: \label{chap:mqref}
jerojasro@336: 
igor@500: \section{Referencia de órdenes MQ}
jerojasro@336: \label{sec:mqref:cmdref}
jerojasro@336: 
igor@500: Si desea dar un vistazo a las órdenes que ofrece MQ, use la orden
jerojasro@336: \hgcmdargs{help}{mq}.
jerojasro@336: 
igor@487: \subsection{\hgxcmd{mq}{qapplied}---imprimir los parches aplicados}
igor@487: 
igor@487: La orden \hgxcmd{mq}{qapplied} imprime la pila actual de parches
igor@500: aplicados.  Los parches se imprimen en orden de antigüedad, primero
igor@500: los más antiguos y después los más recientes, por lo tanto el último
igor@500: parche de la lista es el que está en el ``tope''.
igor@487: 
igor@487: \subsection{\hgxcmd{mq}{qcommit}---consignar cambios en la cola del repositorio}
igor@487: 
igor@487: La orden \hgxcmd{mq}{qcommit} consigna cualquier cambio sobresaliente
igor@487: en el repositorio \sdirname{.hg/patches}.  Esta orden solamente
igor@487: funciona si el directorio \sdirname{.hg/patches} es un repositorio,
igor@500: p.e.~usted creó el directorio con
igor@500: \hgcmdargs{qinit}{\hgxopt{mq}{qinit}{-c}} o ejecutó
igor@500: \hgcmd{init} en el directorio después de correr \hgxcmd{mq}{qinit}.
igor@487: 
igor@487: Esta orden es un atajo para \hgcmdargs{commit}{--cwd .hg/patches}.
igor@487: 
igor@488: \subsection{\hgxcmd{mq}{qdelete}---eliminar un parche del fichero
igor@487:   \sfilename{series}}
igor@487: 
igor@487: La orden \hgxcmd{mq}{qdelete} elimina la entrada del fichero
igor@487: \sfilename{series} para el parche en el directorio
igor@487: \sdirname{.hg/patches}.  No sca el parche si ha sido aplicado.  De
igor@500: forma predeterminada no borra el fichero del parche; use la opción
igor@487: \hgxopt{mq}{qdel}{-f} para hacerlo.
igor@487: 
igor@487: Opciones:
igor@487: \begin{itemize}
igor@487: \item[\hgxopt{mq}{qdel}{-f}] Elimina el fichero del parche.
igor@487: \end{itemize}
igor@487: 
igor@500: \subsection{\hgxcmd{mq}{qdiff}---imprimir la diferencia del último
igor@487:   parche aplicado}
igor@487: 
igor@500: La orden \hgxcmd{mq}{qdiff} imprime un diff del parche más
igor@487: recientemente aplicado.  Es equivalente a \hgcmdargs{diff}{-r-2:-1}.
igor@487: 
igor@488: \subsection{\hgxcmd{mq}{qfold}---fusionar (``integrar'') varios parches en
igor@487:   uno solo}
igor@487: 
igor@500: La orden \hgxcmd{mq}{qfold} fusiona muchos parches en el último parche
igor@500: aplicado, de tal forma que el último parche aplicado es la unión de
igor@500: todos los cambios de los parches en cuestión.
igor@487: 
igor@487: Los parches a fusionar no deben haber sido aplicados;
igor@500: \hgxcmd{mq}{qfold} saldrá indicando un error si alguno ha sido
igor@487: aplicado.  El orden en el cual los parches se pliegan es
igor@487: significativo; \hgcmdargs{qfold}{a b} significa ``aplique el parche
igor@500: más reciente, seguido de \texttt{a}, y seguido de \texttt{b}''.
igor@487: 
igor@488: Los comentarios de los parches integrados se colocan al final de los
igor@487: comentarios del parche destino, con cada bloque de comentarios
igor@500: separado con tres asteriscos(``\texttt{*}'').  Se usa la opción
igor@500: \hgxopt{mq}{qfold}{-e} para editar el mensaje de consignación para el
igor@500: conjunto de cambios/parches después de completarse el pliegue.
igor@500: 
igor@500: Opciones:
igor@500: \begin{itemize}
igor@500: \item[\hgxopt{mq}{qfold}{-e}] Edita el mensaje de consignación y la
igor@500:   descripción del parche del parche que se ha integrado.
igor@487: \item[\hgxopt{mq}{qfold}{-l}] Usa los contenidos del fichero dado como
igor@500:   el nuevo mensaje de consignación y descripción del parche para el
igor@488:   parche a integrar.
igor@487: \item[\hgxopt{mq}{qfold}{-m}] Usa el texto dado como el mensaje de
igor@500:   consignación y descripción del parche para el parche integrado.
igor@500: \end{itemize}
igor@500: 
igor@500: \subsection{\hgxcmd{mq}{qheader}---desplegar el encabezado/descripción
igor@488:   de un parche}
igor@488: 
igor@500: La orden \hgxcmd{mq}{qheader} imprime el encabezado o descripción de
igor@500: un parche.  De forma predeterminada, imprime el encabezado del último
igor@488: parche aplicado. Si se da un argumento, imprime el encabezado del
igor@488: parche referenciado.
igor@488: 
igor@488: \subsection{\hgxcmd{mq}{qimport}---importar el parche de un tercero en
igor@488:   la cola}
igor@488: 
igor@500: La orden \hgxcmd{mq}{qimport} añade una entrada de un parche externo
igor@488: al fichero \sfilename{series} y copia el parche en el directorio
igor@500: \sdirname{.hg/patches}.  Añade la entrada inmediatamente después del
igor@500: último parche aplicado, pero no introduce el parche.
igor@488: 
igor@488: Si el directorio \sdirname{.hg/patches} es un repositorio, 
igor@500: \hgxcmd{mq}{qimport} automáticamente hace un \hgcmd{add} del parche
igor@488: importado.
igor@488: 
igor@488: \subsection{\hgxcmd{mq}{qinit}---preparar un repositorio para trabajar
igor@488:   con MQ}
igor@488: 
igor@488: La orden \hgxcmd{mq}{qinit} prepara un repositorio para trabajar con
igor@488: MQ.  Crea un directorio llamado \sdirname{.hg/patches}.
igor@488: 
igor@488: Opciones:
igor@488: \begin{itemize}
igor@488: \item[\hgxopt{mq}{qinit}{-c}] Crea \sdirname{.hg/patches} como un
igor@500:   repositorio por sí mismo.  También crea un fichero
igor@500:   \sfilename{.hgignore} que ignorará el fichero \sfilename{status}.
igor@500: \end{itemize}
igor@500: 
igor@500: Cuando el directorio \sdirname{.hg/patches} es un repositorio, las órdenes
igor@488: \hgxcmd{mq}{qimport} y \hgxcmd{mq}{qnew} hacen \hgcmd{add}
igor@500: automáticamente a los parches nuevos.
igor@488: 
igor@488: \subsection{\hgxcmd{mq}{qnew}---crear un parche nuevo}
igor@488: 
igor@488: La orden \hgxcmd{mq}{qnew} crea un parche nuevo.  Exige un argumento,
igor@500: el nombre que se usará para tal parche.  El parche recién creado está
igor@500: vacío inicialmente.   Se añade al fichero \sfilename{series} después
igor@500: del último parche aplicado, y se introduce en el tope de ese parche.
igor@488: 
igor@488: Si \hgxcmd{mq}{qnew} encuentra ficheros modificados en el directorio
igor@500: de trabajo, rehusará crear un parche nuevo a meos que se emplee
igor@500: \hgxopt{mq}{qnew}{-f} la opción(ver más adelante).  Este
igor@500: comportamiento le permite hacer \hgxcmd{mq}{qrefresh} al último parche
igor@488: aplicado antes de aplicar un parche nuevo encima de este.
igor@488: 
igor@488: Opciones:
igor@488: \begin{itemize}
igor@488: \item[\hgxopt{mq}{qnew}{-f}] Crea un parche nuevo si los contenidos
igor@500:   del directorio actual han sido modificados.  Cualquier modificación
igor@500:   significativa se añade al parche recientemente creado,  de tal forma
igor@500:   que al finalizar la orden, el directorio de trabajo no lucirá
igor@488:   modificado.
igor@488: \item[\hgxopt{mq}{qnew}{-m}] Usa el texto dado como el mensaje de
igor@500:   consignación.  Este texto se almacenará al principio del fichero del
igor@488:   parche, antes de los datos del parche.
jerojasro@336: \end{itemize}
jerojasro@336: 
igor@500: \subsection{\hgxcmd{mq}{qnext}---imprimir el nombre del próximo parche}
igor@493: 
igor@493: La orden \hgxcmd{mq}{qnext} imprime el nombre del siguiente parche en
igor@500: el fichero \sfilename{series} a continuación del último parche
igor@500: aplicado.  Este parche sería el próximo parche a aplicar si se
igor@493: ejecutara la orden \hgxcmd{mq}{qpush}.
igor@493: 
igor@493: \subsection{\hgxcmd{mq}{qpop}---sustraer parches de la pila}
igor@493: 
igor@493: La orden \hgxcmd{mq}{qpop} elimina los parches aplicados del tope de
igor@493: la pila de parches aplicados.  De forma predeterminada solamente
igor@493: remueve un parche.
igor@493: 
igor@493: Esta orden elimina los conjuntos de cambios que representan los
igor@500: parches sustraídos del repositorio, y actualiza el directorio de
igor@493: trabajo para deshacer los efectos de los parches.
igor@493: 
igor@493: Esta orden toma un argumento opcional, que usa como el nombre o el
igor@500: índice del parche que desea sustraer.  Si se da el nombre, sustraerá
igor@500: los parches hasta que el parche nombrado sea el último parche
igor@500: aplicado.  Si se da un número, \hgxcmd{mq}{qpop} lo trata como un
igor@500: índice dentro del fichero \sfilename{series},  contando desde
igor@500: cero(no cuenta las líneas vacías o aquellas que sean únicamente
igor@493: comentarios).  Sustrae los parches hasta que el parche identificado
igor@500: por el índice sea el último parche aplicado.
igor@493: 
igor@493: La orden \hgxcmd{mq}{qpop} no lee o escribe parches en el fichero
igor@493: \sfilename{series}.  \hgxcmd{mq}{qpop} se constituye por tanto en una
igor@493: forma segura de sustraer un parche del fichero \sfilename{series} o un
igor@493: parche que ha eliminado o renombrado completamente.  En los dos
igor@500: últimos casos, use el nombre del parche tal como lo hizo cuando lo
igor@500: aplicó.
igor@500: 
igor@500: De forma predeterminada, la orden \hgxcmd{mq}{qpop} no sustraerá
igor@493: parche alguno si el directorio de trabajo ha sido modificado.  Puede
igor@500: modificar este comportamiento con la opción \hgxopt{mq}{qpop}{-f}, que
igor@493: revierte todas las modificaciones del directorio de trabajo.
igor@493: 
igor@493: Opciones:
igor@493: \begin{itemize}
igor@493: \item[\hgxopt{mq}{qpop}{-a}] Sustrae todos los parches aplicados.
igor@493:   Restaura el repositorio al estado antes de haber aplicado parche alguno.
igor@493: \item[\hgxopt{mq}{qpop}{-f}] Revertir forzadamente cualquier
igor@500:   modificación del directorio de trabajo cuando se hace sustracciones.
igor@493: \item[\hgxopt{mq}{qpop}{-n}] Sustraer un parche de la cola dado un nombre.
igor@493: \end{itemize}
igor@493: 
igor@500: La orden \hgxcmd{mq}{qpop} elimina una línea del final del fichero
igor@493: \sfilename{status} por cada parche que se sustrae.
igor@493: 
igor@493: \subsection{\hgxcmd{mq}{qprev}---imprimir el nombre del parche anterior}
igor@493: 
igor@493: La orden \hgxcmd{mq}{qprev} imprime el nombre del parche en el fichero
igor@500: \sfilename{series} que está antes del último parche aplicado.   Este
igor@500: se volverá el último parche aplicado si ejecuta \hgxcmd{mq}{qpop}.
igor@499: 
igor@499: \subsection{\hgxcmd{mq}{qpush}---introducir parches a la pila}
jerojasro@336: \label{sec:mqref:cmd:qpush}
jerojasro@336: 
igor@500: La orden \hgxcmd{mq}{qpush} añade parches a la pila.  De forma
igor@500: predeterminada añade solamente un parche.
igor@499: 
igor@499: Esta orden crea un conjunto de cambios que representa cada parche
igor@499: aplicado y actualiza el directorio de trabajo aplicando los efectos de
igor@499: los parches.
igor@499: 
igor@499: Los datos predeterminados cuando se crea un conjunto de cambios
igor@499: corresponde a:
igor@499: \begin{itemize}
igor@500: \item La fecha de consignación y zona horaria corresponden a la hora
igor@499:   actual de la zona.  Dado que tales datos se usan para computar la
igor@499:   identidad de un conjunto de cambios, significa que si hace
igor@499:   \hgxcmd{mq}{qpop} a un parche y \hgxcmd{mq}{qpush} de nuevo, el
igor@500:   conjunto de cambios que introduzca tendrá una identidad distinta a
igor@499:   la del conjunto de cambios que sustrajo.
igor@499: \item El autor es el mismo que el predeterminado usado por la orden
igor@499:   \hgcmd{commit}.
igor@500: \item El mensaje de consignación es cualquier texto del fichero del
igor@499:   parche que viene antes del primer encabezado del diff.  Si no hay
igor@499:   tal texto, un mensaje predeterminado se sua para identificar el
igor@499:   nombre del parche.
igor@499: \end{itemize}
igor@499: Su un parche contiene un encabezado de parche de Mercurial (XXX add
igor@500: link), la información en el encabezado del parche tiene precedencia
igor@499: sobre el predeterminado.
igor@499: 
igor@499: Opciones:
igor@499: \begin{itemize}
igor@499: \item[\hgxopt{mq}{qpush}{-a}] Introduce todos los parches que no han
igor@499:   sido aplicados del fichero \sfilename{series} hasta que no haya nada
igor@500:   más para introducir.
igor@500: \item[\hgxopt{mq}{qpush}{-l}] Añade el nombre del parche al final del
igor@500:   mensaje de consignación
igor@499: \item[\hgxopt{mq}{qpush}{-m}] Si un parche no se aplica limpiamente,
igor@499:   usa la entrada para un parche en otra cola almacenada para computar
igor@500:   los parámetros en una fusión de tres, y aplica una fusión de tres
igor@500:   fuentes usando la maquinaria usual de Mercurial.  Usa la resolución
igor@500:   de la fusión como el contenido del parche nuevo.
igor@500: \item[\hgxopt{mq}{qpush}{-n}] Usa la cola mencionada si se está
igor@500:   fusionando en la introducción.
igor@499: \end{itemize}
igor@499: 
igor@499: La orden \hgxcmd{mq}{qpush} lee, pero no modifica el fichero
igor@500: \sfilename{series}.  Añade al final del fichero \hgcmd{status} una
igor@500: línea por cada parche que se introduce.
igor@500: 
igor@500: \subsection{\hgxcmd{mq}{qrefresh}---actualiza el último parche aplicado}
igor@500: 
igor@500: La orden \hgxcmd{mq}{qrefresh} actualiza el último parche aplicado.
igor@500: Modifica el parche, elimina el último conjunto de cambios que
igor@500: representó el parche, y crea un nuevo conjunto de cambios para
igor@499: representar el parche modificado.
igor@499: 
igor@499: La orden \hgxcmd{mq}{qrefresh} busca las siguientes modificaciones:
igor@499: \begin{itemize}
igor@500: \item Los cambios al mensaje de consignación, p.e.~el texto antes del
igor@499:   primer encabezado de diff en el fichero del parche, se replejan en
igor@499:   el nuevo conjunto de cambios que representa el parche.
igor@499: \item Las modificaciones a los ficheros a los que se les da
igor@500:   seguimiento en el directorio de trabajo se añade al parche.
igor@499: \item Los cambios a los archivos a los que se les da seguimiento con
igor@499:   \hgcmd{add}, \hgcmd{copy}, \hgcmd{remove}, o \hgcmd{rename}.  Se
igor@500:   añaden al parche los ficheros añadidos, copiados y renombrados,
igor@499:   mientras que los ficheros eliminados y las fuentes renombradas se
igor@499:   eliminan.
igor@499: \end{itemize}
igor@499: 
igor@499: Incluso si \hgxcmd{mq}{qrefresh} no detecta cambios, de todas maneras
igor@499: recrea el conjunto de cambios que representa el cambio.  Esto causa
igor@499: que la identidad del conjunto de cambios difiera del conjunto de
igor@500: cambios previo que identificó al parche.
igor@500: 
igor@500: Opciones:
igor@500: \begin{itemize}
igor@500: \item[\hgxopt{mq}{qrefresh}{-e}] Modificar la descripción de la
igor@500:   consignación y el parche con el editor de texto preferido.
igor@500: \item[\hgxopt{mq}{qrefresh}{-m}] Modificar el mensaje de consignación
igor@500:   y la descripción del parche con el texto dado.
igor@500: \item[\hgxopt{mq}{qrefresh}{-l}] Modificar el mensaje de consignación
igor@500:   y la descripción del parche con el texto del fichero dado.
igor@499: \end{itemize}
igor@499: 
igor@499: \subsection{\hgxcmd{mq}{qrename}---renombrar un parche}
igor@499: 
igor@499: La orden \hgxcmd{mq}{qrename} renombra un parche y cambia la entrada
igor@499: del parche en el fichero \sfilename{series}.
igor@499: 
igor@500: Con un argumento sencillo, \hgxcmd{mq}{qrename} renombra el último
igor@499: parche aplicado.  Con dos argumentos, renombra el primer argumento con
igor@499: el segundo.
igor@499: 
igor@499: \subsection{\hgxcmd{mq}{qrestore}---restaurar el estado almacenado de
igor@499:   la cola}
jerojasro@336: 
jerojasro@336: XXX No idea what this does.
jerojasro@336: 
igor@499: \subsection{\hgxcmd{mq}{qsave}---almacena el estado actual de la cola}
jerojasro@336: 
jerojasro@336: XXX Likewise.
jerojasro@336: 
igor@499: \subsection{\hgxcmd{mq}{qseries}---imprime la serie completa de parches}
igor@499: 
igor@499: La orden \hgxcmd{mq}{qseries} imprime la serie completa de parches del
igor@499: fichero \sfilename{series}.  Imprime solamente los nombres de los
igor@500: parches sin las líneas en blanco o comentarios.  Imprime primero el
igor@500: primero y de último, el último aplicado.
igor@499: 
igor@499: \subsection{\hgxcmd{mq}{qtop}---imprime el nombre del parche actual}
igor@499: 
igor@500: \hgxcmd{mq}{qtop} imprime el nombre del último parche aplicado.
igor@500: 
igor@500: \subsection{\hgxcmd{mq}{qunapplied}---imprimir los parches que aún no
igor@499:   se han aplicado}
igor@499: 
igor@499: La orden \hgxcmd{mq}{qunapplied} imprime los nombres de los parches
igor@500: del fichero \sfilename{series} que todavía no han sido aplicados.  Los
igor@500: imprime de acuerdo al orden en el cual serían introducidos.
igor@500: 
igor@500: \subsection{\hgcmd{strip}---remover una revisión y sus descendientes}
igor@500: 
igor@500: La orden \hgcmd{strip} remueve una revisión, y todos sus descendientes
igor@499: del repositorio.  Deshace los efectos de las revisiones removidas del
igor@499: repositorio, y actualiza el directorio de trabajo hasta el primer
igor@500: padre de la revisión removida.
igor@499: 
igor@499: La orden \hgcmd{strip} almacena una copia de segurida de los conjuntos
igor@499: de cambios en un agrupamiento, de forma tal que puedan ser reaplicados
igor@500: en caso de que se hayan removido por equivocación.
igor@499: 
igor@499: Opciones:
igor@499: \begin{itemize}
igor@499: \item[\hgopt{strip}{-b}] Almacenar conjuntos de cambios no
igor@499:   relacionados que se han mezclado con los conjuntos de cambios que
igor@500:   están en franjas con el agrupamiento de copia de seguridad.
igor@499: \item[\hgopt{strip}{-f}] Si una rama tiene varias ramas principales
igor@499:   remueve todos los frentes. XXX This should be renamed, y usa
igor@499:   \texttt{-f} para desagrupar revisiones cuando hay cambios pendientes.
igor@499: \item[\hgopt{strip}{-n}] No almacene la copia de seguridad agrupada.
igor@499: \end{itemize}
igor@499: 
igor@499: \section{Referencia de ficheros de MQ}
igor@499: 
igor@499: \subsection{El fichero \sfilename{series}}
igor@499: 
igor@499: El fichero \sfilename{series} contiene una lista de los nombres de
igor@499: todos los parches que MQ puede aplicar.  Se representa como una lista
igor@500: de nombres, uno por línea.  Se ignora el espacio en blanco al
igor@499: principio y al final.
igor@499: 
igor@500: Las líneas pueden contener comentario.  Un comentario comienza con el
igor@500: caracter ``\texttt{\#}'', y va hasta el final de la línea.  Se ignoran
igor@500: las líneas vacías y las que solamente contengan comentarios.
igor@500: 
igor@500: En algún momento podría editar el fichero \sfilename{series} a mano,
igor@500: por tal motivo se admiten comentarios y líneas en blanco como se
igor@499: menciono anteriormente.  Por ejemplo, puede poner en comentario un
igor@500: parche temporalmente y \hgxcmd{mq}{qpush} omitirá tal parche cuando
igor@500: los aplique.  También puede cambiar el orden en el cual se aplican los
igor@499: parches, reordenando las entradas en el fichero \sfilename{series}.
igor@499: 
igor@500: También es posible colocar el fichero \sfilename{series} bajo control
igor@500: de revisiones;  también es favorable colocar todos los parches que refiera
igor@499: bajo control de revisiones.  Si crea un directorio de parches con la
igor@500: opción \hgxopt{mq}{qinit}{-c} de \hgxcmd{mq}{qinit}, esto se hará
igor@500: automáticamente.
igor@499: 
igor@499: \subsection{El fichero \sfilename{status}}
igor@499: 
igor@499: El fichero \sfilename{status} contiene los nombres y los hashes de los
igor@499: conjuntos de cambios de todos los parches que MQ ha aplicado.  A
igor@500: diferencia del fichero \sfilename{series}, este NO ha sido diseñado
igor@500: para ser editado.  No debería colocar este fichero bajo el control de
igor@499: revisiones o modificarlo de forma alguna.  MQ lo usa estrictamente
igor@500: para administración interna.
jerojasro@336: 
jerojasro@336: %%% Local Variables: 
jerojasro@336: %%% mode: latex
jerojasro@336: %%% TeX-master: "00book"
jerojasro@336: %%% End: 




