hgbook
diff es/concepts.tex @ 423:f907df38efef
translated some paragraphs. updated project status info
author | Javier Rojas <jerojasro@devnull.li> |
---|---|
date | Tue Nov 18 22:48:55 2008 -0500 (2008-11-18) |
parents | 59fbfb7e790c |
children | 9221accc2ccc |
line diff
1.1 --- a/es/concepts.tex Mon Nov 17 20:04:37 2008 -0500 1.2 +++ b/es/concepts.tex Tue Nov 18 22:48:55 2008 -0500 1.3 @@ -443,71 +443,77 @@ 1.4 terminan automáticamente, sin requerir la interacción del usuario para 1.5 resolver ningún conflicto. 1.6 1.7 -When you're thinking about what happens when you commit after a merge, 1.8 -once again the working directory is ``the changeset I'm about to 1.9 -commit''. After the \hgcmd{merge} command completes, the working 1.10 -directory has two parents; these will become the parents of the new 1.11 -changeset. 1.12 - 1.13 -Mercurial lets you perform multiple merges, but you must commit the 1.14 -results of each individual merge as you go. This is necessary because 1.15 -Mercurial only tracks two parents for both revisions and the working 1.16 -directory. While it would be technically possible to merge multiple 1.17 -changesets at once, the prospect of user confusion and making a 1.18 -terrible mess of a merge immediately becomes overwhelming. 1.19 - 1.20 -\section{Other interesting design features} 1.21 - 1.22 -In the sections above, I've tried to highlight some of the most 1.23 -important aspects of Mercurial's design, to illustrate that it pays 1.24 -careful attention to reliability and performance. However, the 1.25 -attention to detail doesn't stop there. There are a number of other 1.26 -aspects of Mercurial's construction that I personally find 1.27 -interesting. I'll detail a few of them here, separate from the ``big 1.28 -ticket'' items above, so that if you're interested, you can gain a 1.29 -better idea of the amount of thinking that goes into a well-designed 1.30 -system. 1.31 - 1.32 -\subsection{Clever compression} 1.33 - 1.34 -When appropriate, Mercurial will store both snapshots and deltas in 1.35 -compressed form. It does this by always \emph{trying to} compress a 1.36 -snapshot or delta, but only storing the compressed version if it's 1.37 -smaller than the uncompressed version. 1.38 - 1.39 -This means that Mercurial does ``the right thing'' when storing a file 1.40 -whose native form is compressed, such as a \texttt{zip} archive or a 1.41 -JPEG image. When these types of files are compressed a second time, 1.42 -the resulting file is usually bigger than the once-compressed form, 1.43 -and so Mercurial will store the plain \texttt{zip} or JPEG. 1.44 - 1.45 -Deltas between revisions of a compressed file are usually larger than 1.46 -snapshots of the file, and Mercurial again does ``the right thing'' in 1.47 -these cases. It finds that such a delta exceeds the threshold at 1.48 -which it should store a complete snapshot of the file, so it stores 1.49 -the snapshot, again saving space compared to a naive delta-only 1.50 -approach. 1.51 - 1.52 -\subsubsection{Network recompression} 1.53 - 1.54 -When storing revisions on disk, Mercurial uses the ``deflate'' 1.55 -compression algorithm (the same one used by the popular \texttt{zip} 1.56 -archive format), which balances good speed with a respectable 1.57 -compression ratio. However, when transmitting revision data over a 1.58 -network connection, Mercurial uncompresses the compressed revision 1.59 -data. 1.60 - 1.61 -If the connection is over HTTP, Mercurial recompresses the entire 1.62 -stream of data using a compression algorithm that gives a better 1.63 -compression ratio (the Burrows-Wheeler algorithm from the widely used 1.64 -\texttt{bzip2} compression package). This combination of algorithm 1.65 -and compression of the entire stream (instead of a revision at a time) 1.66 -substantially reduces the number of bytes to be transferred, yielding 1.67 -better network performance over almost all kinds of network. 1.68 - 1.69 -(If the connection is over \command{ssh}, Mercurial \emph{doesn't} 1.70 -recompress the stream, because \command{ssh} can already do this 1.71 -itself.) 1.72 +Cuando considere qué pasa cuando usted hace una consignación después 1.73 +de una fusión, de nuevo el directorio de trabajo es ``el conjunto de 1.74 +cambios que estoy a punto de consignar''. Una vez termina su trabajo 1.75 +el comando \hgcmd{merge}, el directorio de trabajo tiene dos padre; 1.76 +éstos se convertirán en los padres del nuevo conjunto de cambios. 1.77 + 1.78 +Mercurial le permite hacer múltiples fusiones, pero usted debe 1.79 +consignar los resultados de cada fusión sucesivamente. Esto es 1.80 +necesario porque Mercurial sólo monitorea dos padres, tanto para las 1.81 +revisiones como para los directorios de trabajo. Aunque técnicamente 1.82 +es posible fusionar varios conjuntos de trabajo en una sola operación, 1.83 +la posibilidad de confundir al usuario y crear un desorden terrible en 1.84 +la fusión se hace incontenible de inmediato. 1.85 + 1.86 +\section{Otras características de diseño interesantes} 1.87 + 1.88 +En las secciones anteriores, he tratado de resaltar algunos de los 1.89 +aspectos más importantes del diseño de Mercurial, para mostrar que se 1.90 +presta gran cuidado y atención a la confiabilidad y el desempeño. Sin 1.91 +embargo, la atención a los detalles no para ahí. Hay una cantidad de 1.92 +aspectos de la construcción de Mercurial que encuentro interesantes 1.93 +personalmente. Detallaré unos cuantos de ellos aquí, aparte de los 1.94 +elementos ``importantes'' de arriba, para que, si usted está 1.95 +% TODO the amount of thinking => (la cantidad de) esfuerzo mental 1.96 +interesado, pueda obetener una idea mejor de la cantidad de esfuerzo 1.97 +mental invertido en el diseño de un sistema bien diseñado. 1.98 + 1.99 + 1.100 +\subsection{Compresión ingeniosa} 1.101 + 1.102 +Cuando es adecuado, Mercurial almacenará tanto las instantáneas como 1.103 +los deltas en formato comprimido. Lo hace \emph{tratando} siempre de 1.104 +comprimir una instantánea o delta, y conservando la versión comprimida 1.105 +sólo si es más pequeña que la versión sin compresión. 1.106 + 1.107 +Esto implica que Mercurial hace ``lo correcto'' cuando almacena un 1.108 +fichero cuyo formato original está comprimido, como un fichero 1.109 +\texttt{zip} o una imagen JPEG. Cuando estos tipos de ficheros son 1.110 +comprimidos por segunda vez, el fichero resultante usualmente es más 1.111 +grande que la versión comprimida una sola vez, por lo que Mercurial 1.112 +almacenará el fichero \texttt{zip} o JPEG original. 1.113 + 1.114 +Los deltas entre revisiones de un fichero comprimido usualmente son 1.115 +más grandes que las instantáneas del mismo fichero, y Mercurial de 1.116 +nuevo hace ``lo correcto'' en estos casos. Él encuentra que dicho 1.117 +delta excede el umbral respecto al cual se debería almacenar una 1.118 +instantánea completa del fichero, así que almacena la instantánea, 1.119 +ahorrando espacio de nuevo respecto al enfoque simplista de usar 1.120 +únicamente deltas. 1.121 + 1.122 +\subsubsection{Recompresión de red} 1.123 + 1.124 +Cuando almacena las revisiones en disco, Mercurial usa el algoritmo de 1.125 +compresión ``deflación'' (el mismo usado en el popular formato de 1.126 +fichero \texttt{zip}), que provee una buena velocidad con una tasa de 1.127 +compresión respetable. Sin embargo, cuando se transmiten datos de 1.128 +revisiones a través de una conexión de red, Mercurial descomprime los 1.129 +datos comprimidos de las revisiones. 1.130 + 1.131 +Si la conexión es hecha a través de HTTP, Mercurial recomprime el 1.132 +flujo completo de datos usando un algoritmo de compresión que brinda 1.133 +una mejor tasa de compresión (el algoritmo Burrows-Wheeler de el 1.134 +ampliamente usado paquete de compresión \texttt{bzip2}). Esta 1.135 +combinación de algoritmo y compresión del flujo completo de datos 1.136 +(en vez de una revisión a la vez) reduce sustancialmente la cantidad 1.137 +de bytes a transferir, brindando así un mejor desempeño de red sobre 1.138 +casi todo tipo de redes. 1.139 + 1.140 +(Si la conexión se hace sobre \command{ssh}, Mercurial \emph{no} 1.141 +recomprmime el flujo, porque \command{ssh} puede hacer esto por sí 1.142 +mismo.) 1.143 1.144 \subsection{Read/write ordering and atomicity} 1.145