<para>&kompare; es un programa &GUI; que muestra las diferencias entre archivos fuente y permite fusionarlos. &kompare; puede utilizarse para comparar diferencias en los archivos o en los contenidos de las carpetas. &kompare; soporta varios formatos diff y proporciona muchas opciones para personalizar el nivel de información que se muestra.</para>
<para>Este documento describe la versión &version; de &kompare;.</para>
<para>Cuando dos o más personas están trabajando sobre un archivo y lo van utilizando alternativamente, puede ser difícil ver qué cambios se han hecho en una nueva versión o copia del archivo. Abrir la copia nueva y el original enfrentándolas en la aplicación utilizada para crearlas puede ser una solución, pero muy laboriosa, consume tiempo y puede inducir a errores. Es en este punto donde un programa que muestre las diferencias puede ser útil.</para>
<para>Como se podría esperar, un nombre adecuado para un programa de este tipo podría ser «diff». Como puede comprobar, el programa diff está instalado en la mayor parte de los sistemas basados en &Linux; y se utiliza para este propósito. Los desarrolladores utilizan diff con frecuencia, como una herramienta de línea de órdenes, para mostrar las diferencias entre versiones de un archivo de código fuente. Sin embargo, el uso de diff no está limitado a mostrar las diferencias en los archivos de código fuente, y puede utilizarse también en muchos tipos de archivo basados en texto.</para>
<para>Utilizar diff desde la línea de órdenes puede ser confuso, aprender la sintaxis de la orden diff y descifrar la salida puede desconcertar a mucha gente. Es aquí donde &kompare; entra en juego. Proporciona una interfaz gráfica para el programa diff. La interfaz muestra los archivos fuente y destino uno al lado del otro con todas las diferencias resaltadas de forma automática. Desde este punto de partida, los cambios en un archivo puede aplicarse secuencialmente en el otro archivo en una base selectiva y controlada. No todos los cambios tienen porqué aplicarse y si aplica un cambio siempre puede 'deshacerse'. Cuando se hayan aplicado todos los cambios necesarios, podrán guardarse y se mostrarán de la forma habitual en la aplicación original utilizada para crear el archivo.</para>
<para>Además de mostrar las diferencias entre los archivos fuente y destino, &kompare; puede utilizar para crear y ver un archivo especial llamado un 'diff'. Este archivo captura las diferencias entre las dos fuentes en un solo archivo que puede utilizarse para ver y aplicar cambios a cualquier otra copia del archivo. Por ejemplo, si dos personas están editando un documento. La primera persona desea hacer cambios y enviar los cambios hechos a la segunda persona. Normalmente, la primera persona enviará una copia completa del documento modificado a la segunda persona, quien debería comparar el documento modificado situándolo al lado de la versión sin modificar. El proceso para ésto es más parecido al que hemos descrito en el párrafo anterior. Con &kompare; la primera persona debería hacer una copia local del archivo que se quiere modificar y a continuación realizar los cambios y comparar el original y la copia modificada. Ahora, utilizando &kompare; puede crearse un archivo diff que contendrá solo los cambios efectuados. Éste puede enviarse a la segunda persona en lugar de un archivo completo que contenga los cambios.</para>
<para>Utilizando &kompare; la segunda persona puede ver el archivo diff, compararlo con la copia local del documento y aplicar los cambios realizados por la primera persona. De esta forma el proceso puede realizarse para muchas versiones del documento, de forma que cada persona pueda hacer cambios, crear los diffs, distribuirlos y aplicarlos. Este proceso es lo que se suele llamar «parcheado», un término que se toma del programa llamado «patch» (parche, en inglés) que es otra herramienta de la línea de órdenes especialmente diseñada con el objetivo de aplicar los archivos diff.</para>
<para>A veces sucede que varias personas editan un archivo a la vez. En esta situación es probable que estas personas hagan cambios en el documento exactamente al mismo tiempo. Ésto crea un problema porque, sino se aplican con cuidado, unas personas pueden sobreescribir el trabajo de otras en el momento de aplicar los cambios que reciben. Afortunadamente los desarrolladores de los programas diff y patch tuvieron ésto en cuenta y por ello estas herramientas no permiten que estos cambios se apliquen sin intervención manual. Cuando se alcanza este estado, se produce lo que se conoce como «conflicto». &kompare; mostrará los conflictos que puede resolver manualmente, decidiendo qué cambios deberían aplicarse a qué archivo.</para>
<para>&kompare; es también un gran programa para la comparación de cambios en archivos a nivel de carpeta. Cuando se utilizan para comparar carpetas, &kompare; examina recursivamente las subcarpetas y los archivos que contengan para encontrar diferencias. En esta situación, cada archivo en el que se encuentren diferencias se abre automáticamente y se lista en &kompare;, permitiéndose una navegación sencilla entre los diferentes archivos.</para>
<para>Un acceso rápido para iniciar &kompare; se puede encontrar en el menú K en el grupo Desarrollo: <menuchoice><guimenu>Desarrollo</guimenu><guimenuitem>Kompare</guimenuitem></menuchoice>.</para>
<para>Cuando &kompare; se inicia, lo primero que hace es mostrar un diálogo desde el que puede seleccionar los archivos que desea comparar. Se pueden seleccionar también configuraciones especiales para las propiedades del diff, así como para el aspecto. En el formulario del archivo es posible seleccionar los archivos fuente y destino para compararlos. Éstos pueden ser dos archivos cualesquiera o un &URL; y un archivo. Una vez que se hayan seleccionado los archivos fuente y destino pulse el botón <guibutton>Comparar</guibutton>.</para>
<para>Una vez que &kompare; haya descubierto las diferencias se mostrarán en la interfaz principal. Cuando se comparan dos archivos o un url y un archivo el proceso tan solo dura unos segundos. Sin embargo, cuando se comparan carpetas con muchos archivos y subcarpetas, el proceso puede durar bastante.</para>
<para>Para obtener más información sobre las opciones disponibles para el diff y el aspecto de los formularios consulte <xref linkend="configure-preferences"/>.</para>
<para>&kompare; proporciona una interfaz con la que se puede interactuar a través de los menús. Para obtener una explicación más detallada de los elementos del menú y sus opciones consulte <xref linkend="command-reference"/>.</para>
<para>La barra de herramientas de &kompare; proporciona accesos rápidos a las operaciones diff y de fusionado usadas con más frecuencia. La orientación de la barra de herramientas, posicionamiento del texto, propiedades del tamaño de los iconos y que iconos de accesos rápidos se mostrarán pueden personalizarse desde el menú contextual de la barra de herramientas que aparece cuando se pulsa sobre ella con el botón derecho del ratón. La barra de herramientas también incluye un menú que le permite activarla u ocultarla. Si la barra de herramientas está oculta y desea mostrarla, seleccione <menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Mostrar barra de herramientas</guimenuitem></menuchoice>.</para>
<para>Los paneles de las carpetas fuente y destino muestran las carpetas de las que se ha realizado la comparación de archivos. Cuando se incluyen muchas subcarpetas en la comparación, seleccionando una carpeta se mostrará el primer documento en la carpeta que contenga diferencias entre el fuente y el destino.</para>
<para>El panel de archivos fuente y destino muestran los archivos en los que se encontraron diferencias entre la carpeta fuente y la de destino. Cuando una carpeta contiene varios documentos con diferencias, se listan todos los documentos con diferencias. Se mostrará el documento seleccionado.</para>
<para>Los cambios del panel de línea fuente y destino resumen las diferencias encontradas entre la fuente actual y los documentos de destino. Seleccionar un registro dentro del panel resalta y selecciona la diferencia. Es una forma práctica de navegar e inspeccionar documentos grandes con muchas diferencias.</para>
<para>Las vista fuente y destino conforman el espacio de trabajo principal de &kompare;. Aquí se muestran los contenidos y se resaltan las diferencias entre los archivos fuente y destino junto los números de línea.</para>
<para>La vista <guilabel>Vista de texto</guilabel> no se muestra de forma predeterminada. Puede abrirse seleccionando <menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Mostrar vista de texto</guimenuitem></menuchoice>.</para>
<para>La barra de estado proporciona un resumen de los archivos o carpetas fuente y destino que se estén comparando. La barra de estado también informa del número de cambios encontrados en el documento actual y cuenta las diferencias que se hayan aplicado. Además la barra de estado muestra el número global de documentos que contienen diferencias y el número de documentos seleccionados de este conjunto. Por ejemplo, una comparación que se ejecuta sobre dos carpetas puede devolver 1890 archivos con diferencias. El documento seleccionado es el número 18 de 1890.</para>
<title>Administración de la disposición de la pantalla</title>
<para>&kompare; muestra los archivos fuente y destino utilizando el mismo porcentaje del área de trabajo de la vista de la interfaz principal. Éste área de la vista proporciona algunas características que le ayudan a optimizar el uso de la disposición de la pantalla mientras observa las diferencias, incluyendo:</para>
<listitem><para>La funcionalidad más obvia es que existen barras de desplazamiento en la parte derecha e izquierda del área de vista. Utilizando las barras de desplazamiento es posible moverse rápidamente a través de la comparación.</para></listitem>
<listitem><para>El espacio vertical entre la vista fuente y la de destino no solo hace posible una vista más clara que permite ver el principio y el fin de las líneas de cada panel, sino que también permite manejar el ajuste del porcentaje ocupado por las vista de fuente y destino que comprenden la vista del panel. Para cambiar el tamaño del panel para una de estas vistas, mantenga el puntero del ratón sobre el manejador del espacio y a continuación mantenga pulsado el botón del ratón y arrástrelo a izquierda y derecho. naturalmente, incrementar el área de uno de los paneles reducirá el área disponible para el panel opuesto del área de la vista de paneles.</para></listitem>
<listitem><para>El espacio de trabajo puede desempotrarse del interfaz principal pulsando el botón <guibutton>desempotrar</guibutton> situado en la parte superior derecha del panel del espacio de trabajo principal. Ésto abre el espacio de trabajo principal en una ventana independiente, lo que permitirá maximizarla y redimensionarla a lo largo de la pantalla.</para></listitem>
<para>La barra de estado del panel de vista puede activarse o desactivarse seleccionando <menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Ocultar/Mostrar barra de estado</guimenuitem></menuchoice>.</para>
<title>Intercambiar vistas fuente y destino</title>
<para>Algunas veces puede ser práctico tener en cuenta a qué archivo se le aplicarán las diferencias y qué archivo se considerará fuente. Por ejemplo, cuando se comparan dos versiones modificadas de un arhcivo y se descubre que uno de los archivos tienen muchas más modificaciones que el otro. El archivo con más cambios podría ser una mejor fuente, mientras que aquel con pocas diferencias podría ser al que se aplicasen las diferencias.</para>
<para>En este caso seleccione <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Intercambiar fuente y destino</guimenuitem></menuchoice>. Ésta opción intercambiará los archivos mostrados en todos los paneles de &kompare;.</para>
<title>Mostrar estadísticas de las diferencias</title>
<para>Para dar un vistazo rápido a las diferencias, seleccione <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Mostrar estadísticas</guimenuitem></menuchoice>. Ésto mostrará el diálogo <guilabel>Estadísticas de diff</guilabel>. Se proporcionará la siguiente información</para>
<listitem><para>El nombre del archivo que suele ser habitualmente el archivo de destino o el archivo que no se ha modificado y al qué se aplicarán las diferencias.</para></listitem>
<para>El número de bloques que se han encontrado en la diferencia.</para>
<para>Un bloque es un «conjunto» de líneas que contienen diferencias entre la fuente el destino y pueden incluir líneas contextuales dependiendo del valor de las <guilabel>líneas de contexto</guilabel> del formato diff (consulte <xref linkend="diff-format"/>).</para></listitem>
<term><guilabel>Número de diferencias</guilabel></term>
<listitem><para>El número actual de diferencias encontradas, no de bloques. Un bloque puede contener una o más diferencias cuando el rango de cambio de líneas de cambio y las líneas de contexto de dos o más cambios se solapan.</para></listitem>
<listitem><para>pulsando una línea en el panel de cambios de las líneas fuente y destino (parte superior derecha de la ventana principal).</para></listitem>
<listitem><para>pulsando la diferencia resaltada en el panel de vista.</para></listitem>
<listitem><para>recorriendo las diferencias en una comparación (consulte <xref linkend="traversing-differences"/>).</para></listitem>
<para>Cuando se selecciona una diferencia se considera que tiene «el foco» y se muestra en un color más claro que las diferencias que no están seleccionadas.</para>
<para>Cuenado en una comparación se encuentran diferencias una de las mejores formas de revisarlas es recorrerlas en una orden lógico, generalmente de arriba hacia abajo.</para>
<para>De forma predeterminada &kompare; selecciona la primera diferencia que se encuentre en una comparación. Seleccionando <menuchoice><guimenu>Diferencia</guimenu><guimenuitem>Siguiente diferencia</guimenuitem></menuchoice> (<keycombo action="simul">&Ctrl;<keycap>Abajo</keycap></keycombo>) la siguiente diferencia será la que se seleccione. Para seleccionar la diferencia anterior seleccione <menuchoice><guimenu>Diferencia</guimenu><guimenuitem>Diferencia anterior</guimenuitem></menuchoice> (<keycombo action="simul">&Ctrl;<keycap>Arriba</keycap></keycombo>).</para>
<para>De esta forma es posible recorrer las diferencias de una forma ordenanda, aplicando o deshaciendo las diferencias de las revisiones.</para>
<para>Cuando se realiza una comparación a nivel de carpeta, es posible encontrar diferencias en muchos archivos. Se puede encontrar una lista completa de los archivos comparados con las diferencias encontradas en los paneles «Carpetas fuente y destino» y «Archivos fuente y destino». No obstante, &kompare; solo muestra una comparación cada vez entre la fuente y el destino.</para>
<para>Para cambiar de documento en este escenario están disponibles las siguientes opciones:</para>
<listitem><para>Seleccione el panel «Carpetas fuente y destino» para mostrar en el panel «Archivos fuente y destino» los archivos en los que se han encontrado diferencias, y a continuación seleccione un archivo.</para></listitem>
<listitem><para>Seleccione <menuchoice><guimenu>Diferencia</guimenu><guimenuitem>Archivo anterior</guimenuitem></menuchoice> (<keycombo action="simul">&Ctrl;<keycap>RePág</keycap></keycombo>) o <menuchoice><guimenu>Diferencia</guimenu><guimenuitem>Siguiente archivo</guimenuitem></menuchoice> (<keycombo action="simul">&Ctrl;<keycap>AvPág</keycap></keycombo>) para mostrar en el panel «Archivos fuente y destino» el archivo anterior o siguiente con diferencias.</para>
<para>&kompare; realiza la tarea de aplicar o deshacer las diferencias aplicadas con tan solo apuntar y pulsar. Se pueden realizar múltiples operaciones de aplicación o no aplicación en una o en todas las operaciones, permaneciendo en memoria sin escribir los archivos al disco hasta que no se realice la grabación.</para>
<para>Para aplicar una diferencia, pulse la región de la diferencia resaltada, y a continuación seleccione <menuchoice><guimenu>Diferencia</guimenu><guimenuitem>Aplicar diferencia</guimenuitem></menuchoice> (<keycombo><keycap>Espacio</keycap></keycombo>).</para>
<para>Para deshacer una diferencia, pulse sobre la región de la diferencia resaltada que se hubiera aplicado, y a continuación seleccione <menuchoice><guimenu>Diferencia</guimenu><guimenuitem>Deshacer diferencia</guimenuitem></menuchoice> (<keycombo><keycap>Retroceso</keycap></keycombo>).</para>
<para>Después de revisar las diferencias entre los archivos y encontrarlas todas aceptable es posible aplicarlas todas en una sola operación seleccionando <menuchoice><guimenu>Diferencia</guimenu><guimenuitem>Aplicar todo</guimenuitem></menuchoice> (<keycombo action="simul">&Ctrl;<keycap>A</keycap></keycombo>).</para>
<para>Una vez que se hayan aplicado las diferencias pueden guardarse seleccionando <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Guardar</guimenuitem></menuchoice> o <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Guardar todo...</guimenuitem></menuchoice>.</para>
<para>Se guardarán las diferencias aplicadas tanto en el archivo fuente como en el destino.</para>
<para>Los archivos Diff sólo contienen los cambios hechos en los archivos, o un conjunto de archivos en un sistema de carpetas, y pueden contener o no un número de líneas contextuales después de las líneas de cambios. El conjunto de cambios de una línea y sus líneas de contenido es lo que se conoce como bloque. Por tanto, un archivo diff puede contener varios bloques de uno o más archivos. Cuando las líneas contextuales de dos o más bloques se solapan, se consideran un solo bloque. Los archivos Diff también pueden utilizarse para:</para>
<listitem><para>Aplicar los cambios contenidos en los bloques a un archivo original.</para></listitem>
<listitem><para>Aplicar los cambios contenidos en los bloques a un archivo o conjunto de archivos en un sistema de carpetas.</para></listitem>
<listitem><para>Realizar modificaciones antes de aplicarlas a un archivo original o a un conjunto de archivos en un sistema de carpetas.</para></listitem>
<para>Para crear un archivo diff debe mostrarse una comparación en &kompare;. Asumiendo que éste es el caso, a continuación seleccione <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Guardar .diff</guimenuitem></menuchoice>. Ésto mostrará el diálogo <guilabel>Opciones de diff</guilabel> (consulte <xref linkend="diff-settings"/> para obtener más información sobre los formatos diff y las opciones). Después de configurar estas opciones, pulse el botón <guibutton>Guardar</guibutton> y guarde el diff en un archivo con la extensión <filename class="extension">.diff</filename>.</para>
<para>Es posible mostrar los contenidos de un archivo diff en &kompare; abriendo el archivo diff con <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Abrir diff</guimenuitem></menuchoice>.</para>
<para>Cuando se ve un archivo diff, se muestran los bloques entre el archivo fuente y el destino. Recuerde que solo se muestran los bloques, no las líneas que no han sufrido modificación. En algunos casos se crea un archivo diff con 0 líneas de contexto. En este caso solo se mostrarán las líneas cambiadas.</para>
<para>Cuando un archivo diff contiene bloques de varios archivos, &kompare; mostrará los bloques para un solo archivo cada vez y podrá moverse de un archivo a otro como si fueran archivos reales, incluso aunque esta información solo la proporcione los contenidos del archivo diff.</para>
<title>Aplicar diferencias en un archivo diff</title>
<para>Cuando se ven las diferencias en un archivo diff es posible aplicarlas como si estuviera comparando archivos fuente y destino (consulte <xref linkend="merging-differences"/>).</para>
<para>En los casos en que se proporcione un archivo diff es posible comparar los bloques en el diff con los de un archivo o carpeta. Para hacerlo seleccione <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Fusionar URL con diff</guimenuitem></menuchoice>. A continuación introduzca las rutas <guilabel>Archivo/Carpeta</guilabel> y <guilabel>Salida diff</guilabel>.</para>
<para>Mientras se están viendo las diferencias entre un archivo fuente y un archivo diff es posible aplicar las diferencias como si estuviera comparando archivos fuente y destino (consulte <xref linkend="merging-differences"/>).</para>
<para>&kompare; permite a los usuarios configurar las preferencias sobre su aspecto para dar formato a las diferencias en la interfaz principal y establecer las propiedades de comportamiento del programa diff. Al diálogo <guilabel>Preferencias</guilabel> puede accederse seleccionando <menuchoice><guimenu>Preferencias</guimenu><guisubmenu>Configurar &kompare;</guisubmenu></menuchoice>.</para>
<para>Para configurar las preferencias del aspecto seleccione el elemento de menú <guilabel>Vista</guilabel> (consulte <xref linkend="view-settings"/>).</para>
<para>Para configurar las preferencias para las propiedades del programa diff seleccione el elemento de menú <guilabel>Diff</guilabel> (consulte <xref linkend="diff-settings"/>).</para>
<para>El menú <guimenu>Vista</guimenu> que encontramos en el diálogo <guilabel>Preferencias</guilabel> muestra las pestañas <guilabel>Apariencia</guilabel> y <guilabel>Fuentes</guilabel>.</para>
<para>El formulario <guilabel>Apariencia</guilabel> proporciona los controles para administrar los <guilabel>Colores</guilabel> utilizados para hacer notar la diferencia en la interfaz principal, el comportamiento de la <guilabel>Rueda del ratón</guilabel> cuando la gira y cómo se administra la conversión de los <guilabel>Tabuladores a espacios</guilabel>.</para>
<para>Para ajustar las preferencias de color utilizadas al mostrar las diferencias, pulse el botón color para mostrar el diálogo <guilabel>Seleccionar color</guilabel> para los siguientes estados:</para>
<para>El menú <guimenu>Diff</guimenu> del diálogo <guilabel>Preferencias</guilabel> muestra las pestañas <guilabel>Diff</guilabel>, <guilabel>Formato</guilabel>, <guilabel>Opciones</guilabel> y <guilabel>Excluir</guilabel>. Estos formularios puede utilizarse para configurar las propiedades de comportamiento del programa Diff.</para>
<para>diff puede generar órdenes que le indican al editor de texto ed cómo cambiar el primer archivo en el segundo. Históricamente, ésta era el único modo de salida aceptable para convertir un archivo en otro. Con la llegada de <application>patch</application> esta opción se utiliza muy raramente.</para>
<para>El formato de salida RCS está especialmente diseñado para utilizarse por el sistema de revisión de control (<acronym>RCS</acronym>, del inglés Revision Control System). Al igual que el formato Ed, este formato se utiliza en escasas ocasiones desde que se introdujo el programa <application>patch</application>.</para>
<para>El formato de salida unificado es una variación del formato de contexto. Se considera mejor que el de contexto porque la salida es más compacta que en el de contexto ya que omite líneas de contexto redundantes.</para>
<para>Utilizar el formato cara por cara mostrará los archivos listados en dos columnas con una separador entre ellas. Ésta opción solo está disponible en el diálogo <guilabel>Opciones Diff</guilabel> (consulte <xref linkend="creating-a-diff"/>).</para>
<para>Cuando se utiliza un formato diff con contexto o unificado utilizar este parámetro permitirá controlar el número de líneas de contexto incluidas.</para>
<listitem><para>Si se marca fuerza a diff a mostrar los cambios de mayúsculas y minúsculas, puntuación, espacio, &etc; cuando se realiza la comprobación.</para></listitem>
<term><guilabel>Expandir tabuladores a espacios en la salida</guilabel></term>
<listitem><para>Cuando está marcada la salida de diff convertirá los caracteres de tabulación al número de espacios definidos en la opción <guimenu>Ver</guimenu> del menú <guilabel>Preferencias</guilabel>dentro de la opción <guilabel>Tabuladores a espacios</guilabel>.</para>
<term><guilabel>Ignorar cambios en la cantidad de espacios en blanco</guilabel></term>
<listitem><para>Pueden cambiarse los espacios en blanco antes, después y entre las líneas dependiendo de los diferentes editores. Cuando se marca esta opción se ignorarán los cambios.</para></listitem>
<term><menuchoice><shortcut><keycap>Espacio</keycap></shortcut> <guimenu>Diferencia</guimenu><guimenuitem>Aplicar la diferencia</guimenuitem></menuchoice></term>
<listitem><para>Aplica una diferencia seleccionada.</para></listitem>
<para>Traducido por Miguel Revilla Rodríguez <email>yo@miguelrevilla.com</email>, Marcos Fouces Lago <email>mfouces@yahoo.es</email> y Santiago Fernández Sancho <email>santi@kde-es.org</email>.</para>