Mercurial > hgbook
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 |