hgbook
diff es/hook.tex @ 435:263a8436d72d
translated more text. Surprise!
author | jerojasro@localhost |
---|---|
date | Mon Dec 01 21:53:26 2008 -0500 (2008-12-01) |
parents | 7e52f0cc4516 |
children | 05bfbe50e7e4 |
line diff
1.1 --- a/es/hook.tex Sat Oct 18 15:44:41 2008 -0500 1.2 +++ b/es/hook.tex Mon Dec 01 21:53:26 2008 -0500 1.3 @@ -1,109 +1,124 @@ 1.4 -\chapter{Handling repository events with hooks} 1.5 +\chapter{Manejo de eventos en repositorios con ganchos} 1.6 \label{chap:hook} 1.7 1.8 -Mercurial offers a powerful mechanism to let you perform automated 1.9 -actions in response to events that occur in a repository. In some 1.10 -cases, you can even control Mercurial's response to those events. 1.11 - 1.12 -The name Mercurial uses for one of these actions is a \emph{hook}. 1.13 -Hooks are called ``triggers'' in some revision control systems, but 1.14 -the two names refer to the same idea. 1.15 - 1.16 -\section{An overview of hooks in Mercurial} 1.17 - 1.18 -Here is a brief list of the hooks that Mercurial supports. We will 1.19 -revisit each of these hooks in more detail later, in 1.20 -section~\ref{sec:hook:ref}. 1.21 - 1.22 -\begin{itemize} 1.23 -\item[\small\hook{changegroup}] This is run after a group of 1.24 - changesets has been brought into the repository from elsewhere. 1.25 -\item[\small\hook{commit}] This is run after a new changeset has been 1.26 - created in the local repository. 1.27 -\item[\small\hook{incoming}] This is run once for each new changeset 1.28 - that is brought into the repository from elsewhere. Notice the 1.29 - difference from \hook{changegroup}, which is run once per 1.30 - \emph{group} of changesets brought in. 1.31 -\item[\small\hook{outgoing}] This is run after a group of changesets 1.32 - has been transmitted from this repository. 1.33 -\item[\small\hook{prechangegroup}] This is run before starting to 1.34 - bring a group of changesets into the repository. 1.35 -\item[\small\hook{precommit}] Controlling. This is run before starting 1.36 - a commit. 1.37 -\item[\small\hook{preoutgoing}] Controlling. This is run before 1.38 - starting to transmit a group of changesets from this repository. 1.39 -\item[\small\hook{pretag}] Controlling. This is run before creating a tag. 1.40 -\item[\small\hook{pretxnchangegroup}] Controlling. This is run after a 1.41 - group of changesets has been brought into the local repository from 1.42 - another, but before the transaction completes that will make the 1.43 - changes permanent in the repository. 1.44 -\item[\small\hook{pretxncommit}] Controlling. This is run after a new 1.45 - changeset has been created in the local repository, but before the 1.46 - transaction completes that will make it permanent. 1.47 -\item[\small\hook{preupdate}] Controlling. This is run before starting 1.48 - an update or merge of the working directory. 1.49 -\item[\small\hook{tag}] This is run after a tag is created. 1.50 -\item[\small\hook{update}] This is run after an update or merge of the 1.51 - working directory has finished. 1.52 -\end{itemize} 1.53 -Each of the hooks whose description begins with the word 1.54 -``Controlling'' has the ability to determine whether an activity can 1.55 -proceed. If the hook succeeds, the activity may proceed; if it fails, 1.56 -the activity is either not permitted or undone, depending on the hook. 1.57 - 1.58 -\section{Hooks and security} 1.59 - 1.60 -\subsection{Hooks are run with your privileges} 1.61 - 1.62 -When you run a Mercurial command in a repository, and the command 1.63 -causes a hook to run, that hook runs on \emph{your} system, under 1.64 -\emph{your} user account, with \emph{your} privilege level. Since 1.65 -hooks are arbitrary pieces of executable code, you should treat them 1.66 -with an appropriate level of suspicion. Do not install a hook unless 1.67 -you are confident that you know who created it and what it does. 1.68 - 1.69 -In some cases, you may be exposed to hooks that you did not install 1.70 -yourself. If you work with Mercurial on an unfamiliar system, 1.71 -Mercurial will run hooks defined in that system's global \hgrc\ file. 1.72 - 1.73 -If you are working with a repository owned by another user, Mercurial 1.74 -can run hooks defined in that user's repository, but it will still run 1.75 -them as ``you''. For example, if you \hgcmd{pull} from that 1.76 -repository, and its \sfilename{.hg/hgrc} defines a local 1.77 -\hook{outgoing} hook, that hook will run under your user account, even 1.78 -though you don't own that repository. 1.79 +Mercurial ofrece un poderoso mecanismo para permitirle a usted 1.80 +automatizar la ejecución de acciones en respuesta a eventos que 1.81 +ocurran en un repositorio. En algunos casos, usted puede controlar 1.82 +incluso la respuesta de Mercurial a dichos eventos. 1.83 + 1.84 +Mercurial usa el término \emph{gancho} para identificar estas 1.85 +acciones. Los ganchos son conocidos como ``disparadores'' en algunos 1.86 +sistemas de control de revisiones, pero los dos nombres se refieren al 1.87 +mismo concepto. 1.88 + 1.89 +\section{Vistazo general de ganchos en Mercurial} 1.90 + 1.91 +A continuación se encuentra una breve lista de los ganchos que 1.92 +Mercurial soporta. Volveremos a cada uno de estos ganchos con más 1.93 +detalle después, en la sección~\ref{sec:hook:ref}. 1.94 + 1.95 +\begin{itemize} 1.96 +\item[\small\hook{changegroup}] Es ejecutado luego de que un grupo de 1.97 + conjuntos de cambios ha sido traído al repositorio desde algún 1.98 + otro sitio. 1.99 +\item[\small\hook{commit}] Es ejecutado después de la creación de 1.100 + un conjunto de cambios en el repositorio local. 1.101 +\item[\small\hook{incoming}] Es ejecutado una vez por cada conjunto de 1.102 + cambios traído al repositorio desde otra ubicación. Note la 1.103 + diferencia respecto al gancho \hook{changegroup}, que es ejecutado 1.104 + una vez por cada \emph{grupo} de conjuntos de cambios que se 1.105 + traiga. 1.106 +\item[\small\hook{outgoing}] Es ejecutado luego de que un grupo de 1.107 + conjuntos de cambios ha sido transmitido desde el repositorio. 1.108 +\item[\small\hook{prechangegroup}] Es ejecutado antes de iniciar la 1.109 + recepción de un grupo de conjuntos de cambios en el repositorio. 1.110 +\item[\small\hook{precommit}] De control. Es ejecutado antes de 1.111 + iniciar una consignación. 1.112 +\item[\small\hook{preoutgoing}] De control. Es ejecutado antes de 1.113 + iniciar la transmisión de un grupo de conjuntos de cambios desde 1.114 + el repositorio. 1.115 +\item[\small\hook{pretag}] De control. Es ejecutado antes de crear una 1.116 + etiqueta. 1.117 +\item[\small\hook{pretxnchangegroup}] De control. Es ejecutado después 1.118 + de haber recibido un grupo de conjuntos de cambios en el 1.119 + repositorio local, pero antes de que la transacción se complete y 1.120 + los cambios sean permanentes dentro del repositorio. 1.121 +\item[\small\hook{pretxncommit}] De control. Es ejecutado luego de la 1.122 + creación de un conjunto de cambios en el repositorio local, pero 1.123 + antes de que la transacción que hace permanente el cambio sea 1.124 + completada. 1.125 +\item[\small\hook{preupdate}] De control. Es ejecutado antes de 1.126 + iniciar una actualización o fusión en el directorio de trabajo. 1.127 +\item[\small\hook{tag}] Es ejecutado después de la creación de una 1.128 + etiqueta. 1.129 +\item[\small\hook{update}] Es ejecutado después de que termina una 1.130 + actualización o una fusión. 1.131 +\end{itemize} 1.132 +Cada uno de los ganchos cuya descripción empieza con la frase 1.133 +``de control'' tiene la facultad de determinar si una actividad puede 1.134 +continuar. Si el gancho se ejecuta con éxito, la actividad puede 1.135 +continuar; si falla, o bien la actividad no es permitida, o se 1.136 +deshacen los cambios que se puedan haber llevado a cabo, dependiendo 1.137 +del gancho involucrado. 1.138 + 1.139 +\section{Ganchos y seguridad} 1.140 + 1.141 +\subsection{Los ganchos se ejecutan con sus privilegios de usuario} 1.142 + 1.143 +Cuando usted ejecuta un comando de Mercurial en un repositorio, y el 1.144 +comando causa la ejecución de un gancho, dicho gancho se ejecuta en 1.145 +\emph{su} sistema, en \emph{su} cuenta de usuario, con \emph{sus} 1.146 +privilegios. Ya que los ganchos son elementos arbitrarios de código 1.147 +ejecutable, usted debería tratarlos con un nivel adecuado de 1.148 +desconfianza. No instale un gancho a menos en que confíe en quien lo 1.149 +creó y en lo que el gancho hace. 1.150 + 1.151 +En algunos casos, usted puede estar expuesto a ganchos que usted no 1.152 +%TODO acá introduzco algo de texto por mi cuenta, por claridad 1.153 +instaló. Si usted usa Mercurial en un sistema extraño, tenga en cuenta 1.154 +que Mercurial ejecutará los ganchos definidos en el fichero \hgrc. 1.155 + 1.156 +Si está trabajando con un repositorio propiedad de otro usuario, 1.157 +Mercurial podrá ejecutar los ganchos definidos en el repositorio de 1.158 +dicho usuario, pero los ejecutará como ``usted''. Por ejemplo, si 1.159 +usted jala (\hgcmd{pull}) desde ese repositorio, y el 1.160 +\sfilename{.hg/hgrc} define un gancho saliente (\hook{outgoing}), 1.161 +dicho gancho se ejecuta bajo su cuenta de usuario, aun cuando usted no 1.162 +es el propietario del repositorio. 1.163 1.164 \begin{note} 1.165 - This only applies if you are pulling from a repository on a local or 1.166 - network filesystem. If you're pulling over http or ssh, any 1.167 - \hook{outgoing} hook will run under whatever account is executing 1.168 - the server process, on the server. 1.169 + Esto sólo aplica si usted está jalando desde un repositorio en un 1.170 + sistema de ficheros local o de red. Si está jalando a través de http 1.171 + o ssh, cualquier gancho saliente (\hook{outgoing}) se ejecutará bajo 1.172 + la cuenta que está ejecutando el proceso servidor, en el servidor. 1.173 \end{note} 1.174 1.175 -XXX To see what hooks are defined in a repository, use the 1.176 -\hgcmdargs{config}{hooks} command. If you are working in one 1.177 -repository, but talking to another that you do not own (e.g.~using 1.178 -\hgcmd{pull} or \hgcmd{incoming}), remember that it is the other 1.179 -repository's hooks you should be checking, not your own. 1.180 - 1.181 -\subsection{Hooks do not propagate} 1.182 - 1.183 -In Mercurial, hooks are not revision controlled, and do not propagate 1.184 -when you clone, or pull from, a repository. The reason for this is 1.185 -simple: a hook is a completely arbitrary piece of executable code. It 1.186 -runs under your user identity, with your privilege level, on your 1.187 -machine. 1.188 - 1.189 -It would be extremely reckless for any distributed revision control 1.190 -system to implement revision-controlled hooks, as this would offer an 1.191 -easily exploitable way to subvert the accounts of users of the 1.192 -revision control system. 1.193 - 1.194 -Since Mercurial does not propagate hooks, if you are collaborating 1.195 -with other people on a common project, you should not assume that they 1.196 -are using the same Mercurial hooks as you are, or that theirs are 1.197 -correctly configured. You should document the hooks you expect people 1.198 -to use. 1.199 +XXX Para ver qué ganchos han sido definidos en un repositorio, use el 1.200 +comando \hgcmdargs{config}{hooks}. Si usted está trabajando en un 1.201 +repositorio, pero comunicándose con otro que no le pertenece 1.202 +(por ejemplo, usando \hgcmd{pull} o \hgcmd{incoming}), recuerde que 1.203 +los ganchos que debe considerar son los del otro repositorio, no los 1.204 +del suyo. 1.205 + 1.206 +\subsection{Los ganchos no se propagan} 1.207 + 1.208 +En Mercurial, no se hace control de revisiones de los ganchos, y no se 1.209 +propagan cuando usted clona, o jala de, un repositorio. El motivo para 1.210 +esto es simple: un gancho es código ejecutable arbitrario. Se ejecuta 1.211 +bajo su identidad, con su nivel de privilegios, en su máquina. 1.212 + 1.213 +Sería extremadamente descuidado de parte de cualquier sistema 1.214 +distribuido de control de revisiones el implementar control de 1.215 +revisiones para ganchos, ya que esto ofrecería maneras fácilmente 1.216 +%TODO subvertir 1.217 +aprovechables de subvertir las cuentas de los usuarios del sistema de 1.218 +control de revisiones. 1.219 + 1.220 +Ya que Mercurial no propaga los ganchos, si usted está colaborando con 1.221 +otras personas en un proyecto común, no debería asumir que ellos están 1.222 +usando los mismos ganchos para Mercurial que usted usa, o que los de 1.223 +ellos están configurado correctamente. Usted debería documentar los 1.224 +ganchos que usted espera que la gente use. 1.225 1.226 In a corporate intranet, this is somewhat easier to control, as you 1.227 can for example provide a ``standard'' installation of Mercurial on an