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
git
ymagit
- 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 quemagit
está 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
/magit
para 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á
git
y describirá cómo controlarla desde Emacs usando un paquete adicional llamadomagit
. Sí ,git
es complejo, pero no necesita aprender mucho para usarlo productivamente para el propósito que describe.Asumiré que lo ha
git
instalado (si no lo tiene, consíguelo aquí ) y que no desea abandonar Emacs.Instalando
magit
magit
es ungit
front-end para Emacs. Está disponible en MELPA y puede instalarlo a través de:M-x
package-install
RETmagit
RETEn 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
~/writing
en su directorio de inicio que contiene uno o más documentos que le gustaría poner bajo control de versión.~/writing
RETshell
RETgit init
y presiona RET.Eso es. Ahora tienes un
git
repositorio. No hay necesidad de "registrarlo" en ningún lado.git
es un sistema de control de versiones distribuido ; no requiere un servidor remoto para rastrear los cambios.Verificando el estado de su repositorio
magit-status
RET.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
git
actualmente no están rastreando. Para indicargit
que 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.txt
y 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 elgit
repositorio en el directorio actualDesde cualquier archivo o directorio asociado con un
git
repositorio:magit-status
RETDesde 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 init
desde el shell. Si llama aM-x magit-status
algú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-hunk
para 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 v
magit-diff-refine-hunk
RET
para 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 bajogit
control de versiones. Según su página de github, las siguientes combinaciones de teclas predeterminadas le dan una idea de lo que puede hacer:p
Visita la versión histórica anteriorn
Visita la próxima versión históricaw
Copie el hash abreviado de la versión histórica actualW
Copie el hash completo de la versión histórica actualq
Sal 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-buffers
en ellas y / o en el búfer original.fuente
m
el 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