2010-10-08 29 views
2

J'adore emacs, mais quelque chose me harcèle. Je n'arrive pas à obtenir emacs pour stocker des sauvegardes locales de fichiers quand je les édite en clochard.Configurer Emacs Tramp pour stocker les sauvegardes locales

Actuellement, lorsque je modifie un fichier local, un ensemble d'anciennes versions est stocké dans le dossier/tmp/myusername/emacs_backup. Cependant, quand je suis en FTP via clochard, les anciennes versions ne sont pas stockées là (je suppose qu'il essaie de les stocker à distance?).

Voici mes paramètres .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))) 

Je ne me soucie pas si clochard su édition est également stocké dans le dossier tmp - plus on est de fous à mon avis. Toute aide est grandement appréciée!

Répondre

3

La documentation tramp-backup-directory-alist dit

(setq clochard-répertoire_sauvegarde-alist répertoire_sauvegarde-alist)

donne la même politique de sauvegarde des fichiers Tramp sur leurs hôtes comme la politique locale des dossiers.

Ce que j'interpréterais comme sauvegardant des fichiers tramp sur la machine distante ("leur hôte"). En regardant l'implémentation dans tramp.el c'est aussi l'implémentation par défaut (si tramp-backup-directory-alist n'est pas défini, alors backup-directory-alist est). Tramp suppose qu'une sauvegarde d'un fichier distant doit toujours être également distante, et ajoute explicitement les bits méthode/utilisateur/hôte avant d'effectuer la sauvegarde. Si vous voulez changer le comportement je pense que vous devrez conseiller tramp-handle-find-backup-file-name pour ajuster le nom de fichier (donc c'est un local valide) et pour coordonner avec une entrée dans backup-directory-alist. FWIW: Mettre une sauvegarde dans le répertoire des fichiers temporaires ne va pas beaucoup aider à long terme. "Temporaire" sorte de défaites le but des sauvegardes.

1

J'ai été capable de trouver une solution de contournement (j'ai essayé de la configurer via tramp-backup-directory-alist - mais apparemment, il y a une possibilité avec tramp d'enregistrer localement des tampons distants). Plutôt que d'utiliser la sauvegarde intégrée, j'ai trouvé le script elisp appelé: backup-each-save.el écrit par Benjamin Rutt.

0

Redéfinir trump-handle-find-backup-file-name fonctionne pour moi. Il se débarrasse du comportement qui veut enregistrer les sauvegardes sur le serveur distant.

(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

J'essayais également de stocker des sauvegardes localement. J'ai soumis un bug parce que je pensais que tramp-backup-directory-alist était cassé. Après avoir parlé à Michael Albinus, j'ai découvert que j'avais mal compris tramp-backup-directory-alist, ce qui est un moyen de stocker des sauvegardes à distance de fichiers distants, et que je devrais plutôt faire:

(add-to-list 'backup-directory-alist 
      (cons tramp-file-name-regexp "/my/local/backup/"))