Cómo crear una copy de security de .emacs cada vez que se inicia Emacs

¿Cuál es una buena forma de hacer una copy de security de mi file .emacs cada vez que se inicia Emacs? Quiero save varias copys para cuando necesite volver a una versión anterior.

Mi primer pensamiento es emitir un command de shell desde el file .emacs:

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

… agregando la timestamp actual para get un nombre de file único. Pero hasta donde sé, no puedes emitir commands de shell desde el file .emacs.

He leído sobre BackupEachSave y ForceBackups . ¿Alguien tiene experiencia con estos? ¿Funcionan bien?

EDITAR:
La respuesta de Event_jr sobre el control de versiones es una posible solución. Sin embargo, prefiero usar un command de shell porque el control de versiones se aplica a todos los files y no necesito varias copys de security de cada file.

Miré la variable 'control de versión'. Se describe en el manual de Emacs:

Emacs también puede hacer files de respaldo numerados. Los nombres de los files de copy de security numerados contienen '. ~', El> número y otro '~' después del nombre del file original. Por lo tanto, los files de respaldo de eval.c> se llamarían eval.c. ~ 1 ~, eval.c. ~ 2 ~, y así sucesivamente, a través de nombres como eval.c. ~ 259 ~> y más.

El control de versión variable determina si se deben crear files de copy de security únicos o múltiples> files de copy de security numerados.

Entonces, agregué esto a mi .emacs:

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

Funciona como se anuncia.

Esta sección explica cómo controlar las copys de security por file. No lo he explorado.

Hasta donde yo sé, no puedes emitir commands de shell desde el file .emacs.

Seguro que puede:

 (shell-command "cp ~/.emacs ~/.emacs-`date +%Y%m%d:%H%M`") 

La pregunta que realmente debería hacerse es ¿cómo puedo nunca perder una revisión de cualquier file que edite en Emacs, incluyendo ~ / .emacs?

La respuesta es copys de security versionadas . La variable que controla esta function se llama version-control , lo cual es un poco confuso, ya que se relaciona por completo con las copys de security, no con VCS.

Esta es también una característica de Emacs; no hay package adicional para instalar. Casi todo lo que trabajo es en VCS, pero todavía me resulta extremadamente útil tener todas las revisiones de mi trabajo fácilmente accesibles. El almacenamiento es muy barato, ¿por qué no?

EDITAR: describe el aspecto del save-buffer de la copy de security de cada file.

Debería leer la documentation ( Ch k Cx Cs ) de save-buffer para comprender los matices, pero básicamente pasarlo Cu Cu obligará a hacer una copy de security después de cada guardado. Me reasigné a mi propia function

 (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) 

Una mejor solución es usar un sistema de control de versiones como git . Será más fácil si crea un directory ~/.emacs.d y pone sus files elisp allí:

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

Ahora, cada vez que modifique el file init.el , puede usar lo siguiente para save los cambios:

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

A continuación, puede agregar una function a after-save-hook , como algo así como agregar, confirmar y enviar automáticamente cuando cambien los files . Después de la inserción, tiene una copy local y una copy remota (por ejemplo, en github).

Emacs también tiene integración con git a través de un package llamado magit .

Serás muy recompensado a largo ploop si pasas el time ahora para aprender a usar un sistema de control de versiones distribuidas (DVCS) y verás que mago hace que sea muy conveniente usar git .

Establece las properties de la copy de security como configuration; puedes referirte aquí .