История отмены файлов вне любого текстового редактора (аналог локальной истории в IDE)

Мне нужен инструмент, который может предоставить мне добавочную историю файлов (для текстовых исходных файлов). Я использую контроль версий, но хотел бы больше истории.

Эта история должна быть только временной и охватывать промежуток между фиксациями. Sublime уже позволяет мне сравнивать содержимое редактора с тем, что сохранено. Поэтому я хотел бы получить запись об изменении для каждого сохранения.

Многие IDE имеют эту функцию. Например , локальная история IntelliJ . Однако я хотел бы сделать это независимо от IDE или текстового редактора. Мне нужен специальный инструмент, который может работать в Linux.

Один из подходов — использовать rsync и периодически делать резервные копии. Есть даже такие инструменты, как tym . Но это затруднило бы поиск по списку изменений. Я хотел бы что-то, что имеет историю стиля Git и может использовать интерфейс стиля Meld для изменения изменений.

Ответы (2)

Способ автоматического хранения версий файлов независимо от приложения находится на уровне файловой системы. Для этого есть файловая система FUSE : copyfs . Copyfs обеспечивает просмотр существующего дерева каталогов (хранящегося в выбранной вами файловой системе), в котором доступны все прошлые версии каждого файла. Открытие файлов обычно дает последнюю версию; инструмент командной строки copyfs-fversionпозволяет получить доступ к прошлым версиям.

Чтобы сравнить прошлую версию с текущей, запустите, чтобы заблокировать старую версию, сделайте ее копию, затем запустите, чтобы вернуться к последней версии. Также есть по крайней мере одна исправленная версия, fuse-copyfs , которая расширяется возможностью сравнения версий (среди прочего).copyfs-fversion -l VERSION-NUMBER FILEcopy-fversion -r *FILE*copyfs-fversion-d

В Copyfs нет способа очистить старые версии.

Альтернативы (также основанные на FUSE) упоминаются в Linux File Versioning? на Unix и Linux .

Вы можете использовать git локально, без сервера, для отслеживания истории. Если на вашем компьютере установлен git, введите git initкоманду из каталога, чтобы инициализировать репозиторий git в существующем каталоге. Теперь добавьте выбор ваших файлов с помощью команды добавления, например: git add *.py. Зафиксируйте текущую версию, скажем, git commit -m 'initial version'и продолжайте работать с файлами. Запустите команду фиксации на желаемых этапах.

Вы можете использовать любой пользовательский интерфейс Git для изучения этого локального репозитория и просмотра истории файлов с помощью совместимых инструментов.

==Дополнительная информация об автоматизации ниже по запросу Анджело==

Действие git commit можно автоматизировать при сохранении файлов с помощью сценариев и возможностей операционной системы или дополнительного программного обеспечения, но, вероятно, это будет излишним. Но, просто для изучения варианта,

  1. В Linux iNotifyможно использовать для автоматического запуска сценария при запуске системы, чтобы отслеживать изменения в папках в указанном списке и запускать команду git commit при возникновении изменений.
  2. В Mac можно настроить «Действие папки», чтобы отслеживать изменения в папке и запускать скрипт, содержащий действие git commit, при соответствующем событии.
  3. В Windows вы можете создать простую программу на C# с помощью FileSystemWatcher или использовать одну из многих бесплатных программ, доступных для этой цели (например , Watch 4 Folder ), и вызвать в ответ действие git commit.
Не могли бы вы добавить описание того, как это можно автоматизировать для каждого изменения, которое происходит с файлом? Локальная история IDE, о которых упоминает OP, не нуждается в каком-либо дополнительном инструменте. Есть ли способ подключиться к изменениям файловой системы?
@AngeloNeuschitzer, обновил ответ предложениями по автоматизации.