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