Настройка Emacs Tramp для хранения локальных резервных копий - PullRequest
3 голосов
/ 08 октября 2010

Я люблю emacs, но что-то беспокоит меня. Я не могу заставить 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)))

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

Ответы [ 4 ]

3 голосов
/ 17 октября 2010

В документации для tramp-backup-directory-alist написано

(setq tramp-backup-directory-alist backup-directory-alist)

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

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

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

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

2 голосов
/ 30 октября 2017

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

1 голос
/ 28 марта 2016

Переопределение 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))))
1 голос
/ 05 января 2011

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

...