Как создать резервную копию .emacs при каждом запуске Emacs - PullRequest
4 голосов
/ 26 февраля 2012

Какой хороший способ делать резервную копию моего файла .emacs при каждом запуске Emacs?Я хочу сохранить несколько копий, чтобы вернуться к предыдущей версии.

Моя первая мысль - ввести команду оболочки из файла .emacs:

cp ~/.emacs ~/Backups/.emacs-yyyymmdd:hhmmss

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

Я читал о BackupEachSave и ForceBackups .У кого-нибудь есть опыт с этим?Они работают хорошо?

РЕДАКТИРОВАТЬ:
Ответ Event_jr о контроле версий является возможным решением.Я предпочитаю использовать команду оболочки, потому что контроль версий применяется ко всем файлам, и мне не нужно создавать несколько резервных копий каждого отдельного файла.

Я посмотрел на переменную 'version control'.Это описано в руководстве по Emacs:

Emacs также может создавать пронумерованные файлы резервных копий.Нумерованные имена файлов резервных копий содержат «. ~», Число> и еще один «~» после исходного имени файла.Таким образом, файлы резервных копий файла eval.c> будут называться eval.c. ~ 1 ~, eval.c. ~ 2 ~ и т. Д. Через имена, такие как eval.c. ~ 259 ~> и далее.

Переменный контроль версий определяет, создавать ли отдельные файлы резервных копий или несколько> пронумерованных файлов резервных копий.

Итак, я добавил это в свой .emacs:

; Version control and backups:
(setq version-control t)    

Работает как рекламируется.

В этом разделе рассказывается, как управлять резервными копиями для каждого файла.Я не исследовал это.

Ответы [ 4 ]

7 голосов
/ 26 февраля 2012

Вопрос, который вы действительно должны задать: как мне никогда не потерять ревизию любого файла, который я редактирую в Emacs, включая ~ / .emacs?

Ответ версионные резервные копии . Переменная, управляющая этой функцией, называется version-control, что несколько сбивает с толку, поскольку полностью относится к резервным копиям, а не к VCS.

Это также особенность Emacs; нет дополнительного пакета для установки. Почти все, над чем я работаю, находится в VCS, но я все еще нахожу чрезвычайно полезным, чтобы все версии моей работы были легко доступны. Хранение так дешево, так почему бы и нет?

РЕДАКТИРОВАТЬ: опишите save-buffer аспект резервного копирования каждого файла.

Вы должны прочитать документацию ( C-h k C-x C-s ) save-buffer, чтобы понять нюансы, но, в основном, передав ее C-u C-u , вы заставите ее выполнять резервное копирование после каждого сохранения. Я фактически переназначаю его на свою собственную функцию

(defun le::save-buffer-force-backup (arg)
  "save buffer, always with a 2 \\[universal-argument]'s

see `save-buffer'

With ARG, don't force backup.
"
  (interactive "P")
  (if (consp arg)
      (save-buffer)
    (save-buffer 16)))
(global-set-key [remap save-buffer] 'le::save-buffer-force-backup)
2 голосов
/ 27 февраля 2012

Лучшее решение - использовать систему контроля версий, такую ​​как git. Будет проще, если вы создадите каталог ~/.emacs.d и поместите туда свои файлы elisp:

mkdir ~/.emacs.d
mv .emacs ~/.emacs.d/init.el
git init
git add init.el
git commit -m 'initial checkin'

Теперь каждый раз, когда вы изменяете файл init.el, вы можете использовать следующее для сохранения изменений:

git commit -a -m 'descriptive commit message here'

Затем вы можете добавить функцию к after-save-hook, например, такую ​​как gist , чтобы автоматически добавлять, фиксировать и отправлять, когда файлы изменяются . После нажатия у вас есть локальная копия и удаленная копия (например, на github).

Emacs также имеет интеграцию с git через пакет magit .

В долгосрочной перспективе вы будете весьма вознаграждены, если потратите время на то, чтобы узнать, как использовать DVCS (распределенную систему контроля версий) , и вы обнаружите, что magit делает его очень удобным для используйте git.

2 голосов
/ 26 февраля 2012

Насколько я знаю, вы не можете вводить команды оболочки из файла .emacs.

Конечно, вы можете:

(shell-command "cp ~/.emacs ~/.emacs-`date +%Y%m%d:%H%M`")
0 голосов
/ 26 февраля 2012

Вы задаете свойства резервного копирования в качестве конфигурации; Вы можете сослаться здесь .

...