Soy un académico y me encanta escribir lo máximo posible en Emacs. Una cosa clave que me falta es la capacidad de revisar fácilmente los cambios que he realizado en un archivo de texto con el tiempo.
Las características de seguimiento en los artículos de Wikipedia o Documentos de Google están en la línea de lo que estoy buscando. He jugado con sistemas de control de versiones como git porque parecen estar bien soportados por Emacs, pero los encontré difíciles de usar y mucho más complejos de lo que necesito. El registro de repositorios, el registro de entrada y salida, todo eso era problemático.
¿Supongo que no existen paquetes que brinden la funcionalidad que busco de una manera relativamente fácil de usar?
version-control
writing
Brian Z
fuente
fuente

gitymagit- github.com/magit/magit - ya que ya has jugado un poco con él. Probablemente querrá familiarizarse con las opciones de la línea de comandos para tener una mejor comprensión de lo quemagitestá haciendo. Emacs no es para no codificadores, pero has estado en la escena el tiempo suficiente para no tenerle miedo - :) También puedes intentar jugar congist: github.com/defunkt/gist.elvc-grupo de comandos es simplificar el proceso de uso de VCS. Desafortunadamente, no son tan intuitivos como para permitir a los usuarios sin experiencia hacer un buen uso de ellos. Por otro lado, los sistemas como los que menciona son muy limitantes, por lo que uno desarrolla rápidamente demandas que no pueden satisfacer. gnu.org/software/emacs/manual/html_node/emacs/… hay un mecanismo simplista para mantener las copias de seguridad, pero debido a lo anterior, prefiero recomendar aprender a usar algunos VCS en su lugar.git/magitpara el control de versiones de mis documentos. Parece intimidante comenzar, pero a) no tiene que aprenderlo todo de una vez, yb) es agradable de usar después de superar la curva de aprendizaje inicial. Un buen flujo de trabajo también lo ayuda a disciplinar sus tareas de escritura, ya que lo alienta a anotar lo que está haciendo, lo cual es una excelente manera de obtener una línea de tiempo de la evolución del proyecto de escritura.Respuestas:
El problema con los sistemas de control de versiones existentes no es tanto su complejidad; es el hecho de que existe tanta información que puede ser muy difícil para los principiantes ver el bosque en busca de árboles (es decir, averiguar qué hacen y no necesitan aprender cuando recién están comenzando )
Esta publicación se centrará
gity describirá cómo controlarla desde Emacs usando un paquete adicional llamadomagit. Sí ,gites complejo, pero no necesita aprender mucho para usarlo productivamente para el propósito que describe.Asumiré que lo ha
gitinstalado (si no lo tiene, consíguelo aquí ) y que no desea abandonar Emacs.Instalando
magitmagites ungitfront-end para Emacs. Está disponible en MELPA y puede instalarlo a través de:M-x
package-installRETmagitRETEn el caso de que no haya habilitado MELPA en su configuración, puede encontrar instrucciones sobre cómo hacerlo aquí .
Configurar un repositorio
Supongamos que tiene una carpeta llamada
~/writingen su directorio de inicio que contiene uno o más documentos que le gustaría poner bajo control de versión.~/writingRETshellRETgit inity presiona RET.Eso es. Ahora tienes un
gitrepositorio. No hay necesidad de "registrarlo" en ningún lado.gites un sistema de control de versiones distribuido ; no requiere un servidor remoto para rastrear los cambios.Verificando el estado de su repositorio
magit-statusRET.Puede pensar en el búfer que aparece como su "panel de control" para trabajar con su repositorio. Para un nuevo repositorio, se ve así:
Puede navegar entre diferentes secciones de este búfer usando n(
magit-goto-next-section) y p(magit-goto-previous-section).Puede actualizar el búfer presionando g(
magit-refresh).Tenga en cuenta que puede abrir el búfer de estado desde cualquier archivo o directorio que pertenezca al repositorio que configuró anteriormente.
Agregar archivos
Como puede ver en la captura de pantalla, hay tres archivos en el repositorio que
gitactualmente no están rastreando. Para indicargitque comience a rastrear un archivo, debe organizarlo : con el punto en el archivo que desea agregar, presione s. El búfer de estado se verá así:Comprometerse
Después de organizar uno o más archivos, puede confirmarlos presionando c c. Esto abrirá un búfer que se ve así:
Ingrese su mensaje de confirmación en la parte superior y luego presione C-c C-cpara finalizar la confirmación. (Para abortar, presione C-c C-k).
El búfer de estado se verá así:
Etapa de cambios
Si realiza cambios en un archivo rastreado, se enumerarán en una sección separada ("Cambios sin clasificar") en el búfer de estado:
Para revisar los cambios que realizó en el archivo, navegue hasta la línea que dice
Modified file-1.txty presione TAB:Para organizar estos cambios, presione s:
Ver confirmaciones pasadas
Finalmente, si desea revisar las confirmaciones pasadas, puede presionar l l(son dos L minúsculas):
Como de costumbre, puede navegar por el búfer que aparece con ny p. Magit mostrará los cambios asociados con las confirmaciones individuales enumeradas en este búfer en una ventana separada.
Resumen
De la cáscara:
git init: Inicializa elgitrepositorio en el directorio actualDesde cualquier archivo o directorio asociado con un
gitrepositorio:magit-statusRETDesde el búfer de estado:
s para agregar nuevos archivos o cambios de escenario
c c para cometer cambios por etapas
Eso es. :)
fuente
git initdesde el shell. Si llama aM-x magit-statusalgún lugar fuera de cualquier repositorio git, le ofrecerá configurar uno. (Pero deberá volver a llamarlo para que aparezca el búfer de estado una vez que haya terminado con la configuración).magit-diff-refine-hunkpara obtener el comportamiento que desea. Agregue(setq magit-diff-refine-hunk t)o(setq magit-diff-refine-hunk 'all)a su archivo de inicio. Puede hacerC-h vmagit-diff-refine-hunkRETpara obtener más información sobre el significado de las diferentes configuraciones.Además de
magit(como lo demuestra hábilmente la respuesta de @ itsjeyd), también puede intentarlogit-timemachine, lo que proporciona facilidades para recorrer rápidamente las versiones anteriores de un archivo bajogitcontrol de versiones. Según su página de github, las siguientes combinaciones de teclas predeterminadas le dan una idea de lo que puede hacer:pVisita la versión histórica anteriornVisita la próxima versión históricawCopie el hash abreviado de la versión histórica actualWCopie el hash completo de la versión histórica actualqSal de la máquina del tiempo.fuente
Sospecho que encontrará el modo de copias de seguridad y / o Backup Walker muy interesante.
Ambos tienen como objetivo aprovechar los mecanismos de copia de seguridad existentes en Emacs, y proporcionar un mejor acceso y visibilidad de su historial de archivos, sin requerir un VCS adicional.
fuente
Como se mencionó, una forma simple de tener diferentes versiones de un archivo es el sistema de respaldo Emacs.
Esto utilizará un directorio dedicado para copias de seguridad numeradas, que nunca se eliminarán automáticamente. Luego puede usar C-u C-x C-spara hacer otra versión en cualquier momento.
Sin embargo, creo que no hay una interfaz fácil de usar para, por ejemplo, diferenciar estas versiones. Por lo tanto, tendría que abrir manualmente una o dos de esas copias de seguridad y usarlas
ediff-buffersen ellas y / o en el búfer original.fuente
mel punto de movimiento al otro archivo y presione=).Todavía no he tenido la oportunidad de usar esta solución, pero es posible que también desee considerar el flashbake de Cory Doctorow y Thomas Gideon . Esto es lo que Doctorow tiene que decir al respecto :
Dicho esto, nunca tuve la oportunidad de probarlo, ya que terminé escribiendo muchas cosas en modo org, y estaba programando mucho, y ... bueno ... mejoré un poco al usarlo
magit, y al final, simplemente ... no necesité usarlo.En cualquier caso, esta solución estaba dirigida a escritores que trabajan en proyectos no técnicos. Es posible que se ajuste a sus requisitos.
fuente
Si bien no tiene ninguna relación
emacs, todavía puede guardar sus archivos de texto en Dropbox y, si es un usuario profesional, puede usar el historial de versiones extendido . (Si desea el cifrado, es posible que desee ver SparkleShare ).Luego está flashbake, que está un poco automatizado ( aquí hay un tutorial ).
También se pidió a otros lugares también , para los que las respuestas le puede resultar útil.
fuente
Puedes usar Dropbox. Hace una versión revisable de su archivo cada vez que presiona Cx Cs. Para el cifrado de mis archivos de texto, uso GNU Privacy Guard, compatible con Emacs.
fuente