comparison es/undo.tex @ 487:9fdb45b994d4

Finished backing out section
author Igor TAmara <igor@tamarapatino.org>
date Sun, 02 Nov 2008 21:00:40 -0500
parents 7864f2264e28
children b7d4d66c3ae5
comparison
equal deleted inserted replaced
486:7864f2264e28 487:9fdb45b994d4
244 \hgcmd{backout} le ofrecerá un editor de texto para escribir el 244 \hgcmd{backout} le ofrecerá un editor de texto para escribir el
245 mensaje de la consignación, para dejar un registro de por qué está 245 mensaje de la consignación, para dejar un registro de por qué está
246 retrocediendo. En este ejemplo, colocamos un mensaje en la 246 retrocediendo. En este ejemplo, colocamos un mensaje en la
247 consignación usando la opción \hgopt{backout}{-m} . 247 consignación usando la opción \hgopt{backout}{-m} .
248 248
249 \subsection{Retroceder el conjunto de cambios tip} 249 \subsection{Retroceder el conjunto de cambios punta}
250 250
251 Comenzamos retrocediendo el último conjunto de cambios que consignamos. 251 Comenzamos retrocediendo el último conjunto de cambios que consignamos.
252 \interaction{backout.simple} 252 \interaction{backout.simple}
253 Puede ver que la segunda línea de \filename{myfile} ya no está 253 Puede ver que la segunda línea de \filename{myfile} ya no está
254 presente. La salida de \hgcmd{log} nos da una idea de lo que la orden 254 presente. La salida de \hgcmd{log} nos da una idea de lo que la orden
265 \grafix{undo-simple} 265 \grafix{undo-simple}
266 \caption{Retroceso de un cambio con la orden \hgcmd{backout}} 266 \caption{Retroceso de un cambio con la orden \hgcmd{backout}}
267 \label{fig:undo:backout} 267 \label{fig:undo:backout}
268 \end{figure} 268 \end{figure}
269 269
270 \subsection{Retroceso de un cambio que no es tip} 270 \subsection{Retroceso de un cambio que no es la punta}
271 271
272 Si desea retrocede un cambio distinto al último que ha consignado, use 272 Si desea retrocede un cambio distinto al último que ha consignado, use
273 la opción \hgopt{backout}{--merge} a la orden \hgcmd{backout}. 273 la opción \hgopt{backout}{--merge} a la orden \hgcmd{backout}.
274 \interaction{backout.non-tip.clone} 274 \interaction{backout.non-tip.clone}
275 Que resulta en un retroceso de un conjunto de cambios ``en un sólo 275 Que resulta en un retroceso de un conjunto de cambios ``en un sólo
294 % TODO: to me it looks like mercurial doesn't commit the second merge automatically! 294 % TODO: to me it looks like mercurial doesn't commit the second merge automatically!
295 295
296 \begin{figure}[htb] 296 \begin{figure}[htb]
297 \centering 297 \centering
298 \grafix{undo-non-tip} 298 \grafix{undo-non-tip}
299 \caption{Retroceso automatizado de un cambio a algo que no es tip con la orden \hgcmd{backout}} 299 \caption{Retroceso automatizado de un cambio a algo que no es la punta con la orden \hgcmd{backout}}
300 \label{fig:undo:backout-non-tip} 300 \label{fig:undo:backout-non-tip}
301 \end{figure} 301 \end{figure}
302 302
303 El resultado es que usted termina ``donde estaba'', solamente con un 303 El resultado es que usted termina ``donde estaba'', solamente con un
304 poco de historia adicional que deshace el efecto de un conjunto de 304 poco de historia adicional que deshace el efecto de un conjunto de
305 cambios que usted quería evitar. 305 cambios que usted quería evitar.
306 306
307 \subsubsection{Always use the \hgopt{backout}{--merge} option} 307 \subsubsection{Use siempre la opción \hgopt{backout}{--merge}}
308 308
309 In fact, since the \hgopt{backout}{--merge} option will do the ``right 309 De hecho, dado que la opción \hgopt{backout}{--merge} siempre hara lo
310 thing'' whether or not the changeset you're backing out is the tip 310 ``correcto'' esté o no retrocediendo el conjunto de cambios punta
311 (i.e.~it won't try to merge if it's backing out the tip, since there's 311 (p.e.~no tratará de fusionar si está retrocediendo la punta, dado que
312 no need), you should \emph{always} use this option when you run the 312 no es necesario), usted debería usar \emph{siempre} esta opción cuando
313 \hgcmd{backout} command. 313 ejecuta la orden \hgcmd{backout}.
314 314
315 \subsection{Gaining more control of the backout process} 315 \subsection{Más control sobre el proceso de retroceso}
316 316
317 While I've recommended that you always use the 317 A pesar de que recomiendo usar siempre la opción
318 \hgopt{backout}{--merge} option when backing out a change, the 318 \hgopt{backout}{--merge} cuando está retrocediendo un cambio, la orden
319 \hgcmd{backout} command lets you decide how to merge a backout 319 \hgcmd{backout} le permite decidir cómo mezclar un retroceso de un
320 changeset. Taking control of the backout process by hand is something 320 conjunto de cambios. Es muy extraño que usted necestite tomar control
321 you will rarely need to do, but it can be useful to understand what 321 del proceso de retroceso de forma manual, pero puede ser útil entender
322 the \hgcmd{backout} command is doing for you automatically. To 322 lo que la orden \hgcmd{backout} está haciendo automáticamente para
323 illustrate this, let's clone our first repository, but omit the 323 usted. Para ilustrarlo, clonemos nuestro primer repositorio, pero
324 backout change that it contains. 324 omitamos el retroceso que contiene.
325 325
326 \interaction{backout.manual.clone} 326 \interaction{backout.manual.clone}
327 As with our earlier example, We'll commit a third changeset, then back 327 Como en el ejemplo anterior, consignaremos un tercer cambio, después
328 out its parent, and see what happens. 328 haremos retroceso de su padre, y veremos qué pasa.
329 \interaction{backout.manual.backout} 329 \interaction{backout.manual.backout}
330 Our new changeset is again a descendant of the changeset we backout 330 Nuestro nuevo conjunto de cambios es de nuevo un descendiente del
331 out; it's thus a new head, \emph{not} a descendant of the changeset 331 conjunto de cambio que retrocedimos; es por lo tanto una nueva cabeza,
332 that was the tip. The \hgcmd{backout} command was quite explicit in 332 \emph{no} un descendiente del conjunto de cambios que era la punta. La
333 telling us this. 333 orden \hgcmd{backout} fue muy explícita diciéndolo.
334 \interaction{backout.manual.log} 334 \interaction{backout.manual.log}
335 335
336 Again, it's easier to see what has happened by looking at a graph of 336 De nuevo, es más sencillo lo que pasó viendo una gráfica de la
337 the revision history, in figure~\ref{fig:undo:backout-manual}. This 337 historia de revisiones, en la figura~\ref{fig:undo:backout-manual}.
338 makes it clear that when we use \hgcmd{backout} to back out a change 338 Esto nos aclara que cuando usamos \hgcmd{backout} para retroceder un
339 other than the tip, Mercurial adds a new head to the repository (the 339 cambio a algo que no sea la punta, Mercurial añade una nueva cabeza al
340 change it committed is box-shaped). 340 repositorio (el cambio que consignó está encerrado en una caja).
341 341
342 \begin{figure}[htb] 342 \begin{figure}[htb]
343 \centering 343 \centering
344 \grafix{undo-manual} 344 \grafix{undo-manual}
345 \caption{Backing out a change using the \hgcmd{backout} command} 345 \caption{Retroceso usando la orden \hgcmd{backout}}
346 \label{fig:undo:backout-manual} 346 \label{fig:undo:backout-manual}
347 \end{figure} 347 \end{figure}
348 348
349 After the \hgcmd{backout} command has completed, it leaves the new 349 Después de que la orden \hgcmd{backout} ha terminado, deja un nuevo
350 ``backout'' changeset as the parent of the working directory. 350 conjunto de cambios de ``retroceso'' como el padre del directorio de trabajo.
351 \interaction{backout.manual.parents} 351 \interaction{backout.manual.parents}
352 Now we have two isolated sets of changes. 352 Ahora tenemos dos conjuntos de cambios aislados.
353 \interaction{backout.manual.heads} 353 \interaction{backout.manual.heads}
354 354
355 Let's think about what we expect to see as the contents of 355 Reflexionemos acerca de lo que esperamos ver como contenidos de
356 \filename{myfile} now. The first change should be present, because 356 \filename{myfile}. El primer cambio debería estar presente, porque
357 we've never backed it out. The second change should be missing, as 357 nunca le hicimos retroceso. El segundo cambio debió desaparecer,
358 that's the change we backed out. Since the history graph shows the 358 puesto que es el que retrocedimos. Dado que la gráfica de la historia
359 third change as a separate head, we \emph{don't} expect to see the 359 muestra que el tercer camlio es una cabeza separada, \emph{no}
360 third change present in \filename{myfile}. 360 esperamos ver el tercer cambio presente en \filename{myfile}.
361 \interaction{backout.manual.cat} 361 \interaction{backout.manual.cat}
362 To get the third change back into the file, we just do a normal merge 362 Para que el tercer cambio esté en el archivo, hacemos una fusión usual
363 of our two heads. 363 de las dos cabezas.
364 \interaction{backout.manual.merge} 364 \interaction{backout.manual.merge}
365 Afterwards, the graphical history of our repository looks like 365 Después de eso, la historia gráfica de nuestro repositorio luce como
366 figure~\ref{fig:undo:backout-manual-merge}. 366 la figura~\ref{fig:undo:backout-manual-merge}.
367 367
368 \begin{figure}[htb] 368 \begin{figure}[htb]
369 \centering 369 \centering
370 \grafix{undo-manual-merge} 370 \grafix{undo-manual-merge}
371 \caption{Manually merging a backout change} 371 \caption{Fusión manual de un retroceso}
372 \label{fig:undo:backout-manual-merge} 372 \label{fig:undo:backout-manual-merge}
373 \end{figure} 373 \end{figure}
374 374
375 \subsection{Why \hgcmd{backout} works as it does} 375 \subsection{Por qué \hgcmd{backout} hace lo que hace}
376 376
377 Here's a brief description of how the \hgcmd{backout} command works. 377 Esta es una descripción corta de cómo trabaja la orden \hgcmd{backout}.
378 \begin{enumerate} 378 \begin{enumerate}
379 \item It ensures that the working directory is ``clean'', i.e.~that 379 \item Se asegura de que el directorio de trabajo es ``limpio'', esto
380 the output of \hgcmd{status} would be empty. 380 es, que la salida de \hgcmd{status} debería ser vacía.
381 \item It remembers the current parent of the working directory. Let's 381 \item Recuerda el padre actual del directorio de trabajo. A este
382 call this changeset \texttt{orig} 382 conjunto de cambio lo llamaremos \texttt{orig}
383 \item It does the equivalent of a \hgcmd{update} to sync the working 383 \item Hace el equivalente de un \hgcmd{update} para sincronizar el
384 directory to the changeset you want to back out. Let's call this 384 directorio de trabajo con el conjunto de cambios que usted quiere
385 changeset \texttt{backout} 385 retroceder. Lo llamaremos \texttt{backout}
386 \item It finds the parent of that changeset. Let's call that 386 \item Encuentra el padre del conjunto de cambios. Lo llamaremos
387 changeset \texttt{parent}. 387 \texttt{parent}.
388 \item For each file that the \texttt{backout} changeset affected, it 388 \item Para cada archivo del conjunto de cambios que el
389 does the equivalent of a \hgcmdargs{revert}{-r parent} on that file, 389 \texttt{retroceso} afecte, hará el equivalente a
390 to restore it to the contents it had before that changeset was 390 \hgcmdargs{revert}{-r parent} sobre ese fichero, para restaurarlo a
391 committed. 391 los contenidos que tenía antes de que el conjunto de cambios fuera
392 \item It commits the result as a new changeset. This changeset has 392 consignado.
393 \texttt{backout} as its parent. 393 \item Se consigna el resultado como un nuevo conjunto de cambios y
394 \item If you specify \hgopt{backout}{--merge} on the command line, it 394 tiene a \texttt{backout} como su padre.
395 merges with \texttt{orig}, and commits the result of the merge. 395 \item Si especifica \hgopt{backout}{--merge} en la línea de comandos,
396 se fusiona con \texttt{orig}, y se consigna el resultado de la
397 fusión.
396 \end{enumerate} 398 \end{enumerate}
397 399
398 An alternative way to implement the \hgcmd{backout} command would be 400 Una vía alternativa de implementar la orden \hgcmd{backout} sería usar
399 to \hgcmd{export} the to-be-backed-out changeset as a diff, then use 401 \hgcmd{export} sobre el conjunto de cambios a retroceder como un diff
400 the \cmdopt{patch}{--reverse} option to the \command{patch} command to 402 y después usar laa opción \cmdopt{patch}{--reverse} de la orden
401 reverse the effect of the change without fiddling with the working 403 \command{patch} para reversar el efecto del cambio sin molestar el
402 directory. This sounds much simpler, but it would not work nearly as 404 directorio de trabajo. Suena mucho más simple, pero no funcionaría
403 well. 405 bien ni de cerca.
404 406
405 The reason that \hgcmd{backout} does an update, a commit, a merge, and 407 La razón por la cual \hgcmd{backout} hace una actualización, una
406 another commit is to give the merge machinery the best chance to do a 408 consignación, una fusión y otra consignación es para dar a la
407 good job when dealing with all the changes \emph{between} the change 409 maquinaria de fusión la mayor oportunidad de hacer un buen trabajo
408 you're backing out and the current tip. 410 cuando se trata con todos los cambios \emph{entre} el cambio que está
409 411 retrocediendo y la punta actual.
410 If you're backing out a changeset that's~100 revisions back in your 412
411 project's history, the chances that the \command{patch} command will 413 Si está retrocediendo un conjunto de cambios que está a unas ~100
412 be able to apply a reverse diff cleanly are not good, because 414 atrás en su historia del proyecto, las posibilidades de que una orden
413 intervening changes are likely to have ``broken the context'' that 415 \command{patch} sea capaz de ser aplicada a un diff reverso,
414 \command{patch} uses to determine whether it can apply a patch (if 416 claramente no son altas, porque los cambios que intervienen podrían
415 this sounds like gibberish, see \ref{sec:mq:patch} for a 417 ``no coincidir con el contexto'' que \command{patch} usa para
416 discussion of the \command{patch} command). Also, Mercurial's merge 418 determinar si puede aplicar un parche (si esto suena como cháchara,
417 machinery will handle files and directories being renamed, permission 419 vea una discusión de la orden \command{patch} en \ref{sec:mq:patch}).
418 changes, and modifications to binary files, none of which 420 Adicionalmente, la maquinaria de fusión de Mercurial manejará ficheros
419 \command{patch} can deal with. 421 y directorios renombrados, cambios de permisos, y modificaciones a
422 archivos binarios, nada de lo cual la orden \command{patch} puede manejar.
420 423
421 \section{Changes that should never have been} 424 \section{Changes that should never have been}
422 \label{sec:undo:aaaiiieee} 425 \label{sec:undo:aaaiiieee}
423 426
424 Most of the time, the \hgcmd{backout} command is exactly what you need 427 Most of the time, the \hgcmd{backout} command is exactly what you need