2010-10-08 2 views
2

Мне нравится emacs, но что-то меня злило. Я не могу заставить emacs хранить локальные резервные копии файлов, когда я их редактирую с помощью tramp.Настройка Emacs Tramp для хранения локальных резервных копий

В настоящее время, когда я редактирую локальный файл, набор старых версий хранится в папке/tmp/myusername/emacs_backup. Однако, когда я перехожу к FTP через tramp, старые версии там не хранятся (я предполагаю, что он пытается сохранить их удаленно?).

Вот мои настройки .emacs:

(defvar user-temporary-file-directory 
    (concat "/tmp/" user-login-name "/emacs_backup/")) 
(make-directory user-temporary-file-directory t) 
(setq make-backup-files t) 
(setq backup-by-copying t) 
(setq version-control t) 
(setq delete-old-versions t) 
(setq kept-new-versions 10) 
(setq backup-directory-alist `(("." . ,user-temporary-file-directory))) 
(setq tramp-backup-directory-alist backup-directory-alist) 
(setq tramp-auto-save-directory user-temporary-file-directory) 
(setq auto-save-list-file-prefix 
     (concat user-temporary-file-directory ".auto-saves-")) 
(setq auto-save-file-name-transforms 
     `((".*" ,user-temporary-file-directory t))) 

Я не волнует, если бродяга редактирование су также хранится в папке TMP - больше, тем лучше, на мой взгляд. Любая помощь очень ценится!

ответ

3

Документация tramp-backup-directory-alist говорит

(SETQ бродяга-резервное копирование каталог крен резервного копирование каталог крен)

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

Который я буду интерпретировать как резервное копирование файлов tramp на удаленной машине («их хост»). Глядя на реализацию в tramp.el, это также стандартная реализация (если tramp-backup-directory-alist не установлен, то backup-directory-alist есть).

Tramp предполагает, что резервная копия удаленного файла также всегда должна быть удаленной, и явным образом добавляет бит method/user/host перед выполнением резервного копирования. Если вы хотите изменить поведение, я думаю, вам нужно будет сообщить tramp-handle-find-backup-file-name, чтобы настроить имя файла (так что это действительный локальный) и координировать с записью в backup-directory-alist.

FWIW: Сохранение резервной копии во временном каталоге файлов в долгосрочной перспективе не поможет. «Временный» вид поражает цель резервного копирования.

1

Мне удалось найти обходное решение (я попытался настроить его с помощью tramp-backup-directory-alist), но, судя по всему, есть возможность использования Tramp локально сохранять удаленные буферы). Вместо того, чтобы использовать встроенную резервную копию, я нашел скрипт elisp под названием: backup-each-save.el, написанный Бенджамином Руттом.

0

Переопределение trump-handle-find-backup-file-name работает для меня. Он избавляется от поведения, которое хочет сохранить резервные копии на удаленном сервере.

(defun tramp-handle-find-backup-file-name (filename) 
     "Like `find-backup-file-name' for Tramp files." 
     (with-parsed-tramp-file-name filename nil 
     (tramp-run-real-handler 'find-backup-file-name (list filename)))) 
0

Я также пытался хранить резервные копии локально. Я отправил bug, потому что думал, что tramp-backup-directory-alist был сломан. После разговора с Майклом Альбинусом я узнал, что я неправильно понял tramp-backup-directory-alist, что является способом хранения удаленных резервных копий удаленных файлов, и что я должен делать:

(add-to-list 'backup-directory-alist 
      (cons tramp-file-name-regexp "/my/local/backup/")) 
Смежные вопросы