Archivo de historial de deshacer externo a cualquier editor de texto (similar al historial local en un IDE)

Busco una herramienta que pueda proporcionarme un historial de archivos incremental (para archivos fuente basados ​​en texto). Uso el control de versiones pero me gustaría tener más historial.

Este historial solo necesita ser temporal y abarcar la brecha entre confirmaciones. Sublime ya me permite diferenciar el contenido del editor con lo que está guardado. Así que me gustaría obtener un registro de cambio por guardado.

Muchos IDE tienen esta función. Por ejemplo , el historial local de IntelliJ . Sin embargo, me gustaría hacer esto independientemente de un IDE o editor de texto. Busco una herramienta dedicada que pueda ejecutarse en Linux.

Un enfoque sería usar rsync y realizar copias de seguridad periódicamente. Incluso hay herramientas que hacen esto, como tym . Pero esto dificultaría la búsqueda en la lista de cambios. Me gustaría algo que tenga un historial de estilo Git y pueda usar una interfaz de estilo Meld para diferenciar los cambios.

Respuestas (2)

La forma de mantener versiones de archivos de forma automática e independiente de la aplicación es a nivel del sistema de archivos. Hay un sistema de archivos FUSE para eso: copyfs . Copyfs proporciona una vista de un árbol de directorios existente (almacenado en el sistema de archivos de su elección) donde se mantienen disponibles todas las versiones anteriores de cada archivo. Abrir archivos normalmente produce la última versión; la herramienta de línea de comandos copyfs-fversionle permite acceder a versiones anteriores.

Para comparar una versión anterior con la versión actual, ejecute para bloquear la versión anterior, haga una copia y luego ejecute para volver a la última versión. También hay al menos una versión parcheada, fuse-copyfs , que se amplía con una opción para diferenciar versiones (entre otras cosas).copyfs-fversion -l VERSION-NUMBER FILEcopy-fversion -r *FILE*copyfs-fversion-d

Copyfs carece de una forma de purgar versiones antiguas.

¿Se mencionan alternativas (también basadas en FUSE) en Control de versiones de archivos de Linux? en Unix y Linux .

Puede usar git en sí mismo, localmente, sin la necesidad de un servidor, para rastrear el historial. Si tiene git instalado en su computadora, emita el git initcomando desde dentro del directorio para inicializar un repositorio de git en su directorio existente. Ahora, agregue la elección de sus archivos con el comando agregar, por ejemplo: git add *.py. Confirme la versión actual con, digamos, git commit -m 'initial version'y continúe trabajando en los archivos. Dispare el comando de confirmación en los hitos deseados.

Puede usar cualquier interfaz de usuario de Git para explorar este repositorio local y ver el historial de archivos con herramientas compatibles.

==Información adicional a continuación, sobre automatización, por solicitud de Angelo==

La acción de confirmación de git se puede automatizar al guardar el archivo, con secuencias de comandos y capacidades de o/s o software adicional, pero probablemente sería una exageración. Pero, solo por explorar la opción,

  1. En Linux, iNotifypodría aprovecharse para activar automáticamente una secuencia de comandos al iniciar el sistema para observar los cambios en las carpetas de una lista específica y activar el comando git commit cuando se produzcan cambios.
  2. En Mac, se puede configurar una 'Acción de carpeta' para observar los cambios en una carpeta y activar un script que contenga la acción de confirmación de git en un evento calificado.
  3. En Windows, puede crear un programa C# simple usando FileSystemWatcher o usar uno de los muchos programas gratuitos disponibles para este propósito (p. ej., Watch 4 Folder ) y activar la acción git commit en respuesta.
¿Podría agregar una descripción de cómo se podría automatizar esto para cada cambio que ocurra en el archivo? El historial local de los IDE que menciona el OP no necesita ninguna herramienta adicional. ¿Hay alguna forma de conectarse a los cambios del sistema de archivos?
@AngeloNeuschitzer, ha actualizado la respuesta con sugerencias sobre automatización