2009-02-18 19 views
6

Io lavoro con molti file in remoto utilizzando vim e il plugin netrw. Tengo anche i backup timestamp cambiando il &backupext (che si trova nella documentation).Creare backup locale durante la modifica di file remoti tramite netrw in vim

Mentre si lavora in un file remoto (scp: //server//folder/file.txt), ho notato che quando lo salvo, non viene nemmeno fatto un backup.

Esiste un modo per far eseguire automaticamente un backup in locale (in base alle impostazioni di backup vim) ogni volta che salvi un file remoto?

+0

Hai provato l'impostazione 'backupdir' in una cartella locale? –

risposta

2

Io non credo che ci sia un ambiente semplice da attivare. Puoi provare a scrivere qualcosa però - aggiungi il tuo autocomando BufWriteCmd per scrivere un backup. Prova a usare set verbose=9 per il debug (e vedere come netrw lo fa).

1

A giudicare dal tuo protocollo SCP, sembra che sarebbe molto più semplice per te utilizzare lo fuse sshfs, che ti consentirebbe di avere il normale comportamento del filesystem che ti supporta invece di un semplice interfaccia CRUD di tipo push/pull .

+0

L'estensione netrw utilizza scp internamente. Ho avuto fortuna mista con sshfs. – matpie

+0

Puoi pubblicare la tua configurazione attuale? Inoltre, controlla http://vimdoc.sourceforge.net/htmldoc/options.html#'secure ", potresti anche voler annullare la sicurezza di tutte le opzioni di sandbox, fino a quando il tuo backup non funzionerà. – RandomNickName42

2

volta ho lottato con una variante di questo problema: mantenere registri locali di cambiamenti che ho fatto ad un unico albero fonte una singola macchina remota .

ho mantenuto una copia locale del l'intero albero di origine e un repository svn locale per la versione dei file. Invece di usare netrw e cercare un modo per salvare i backup localmente, ho modificato tutto localmente e avevo bisogno di un modo per propagare automaticamente le mie modifiche al computer remoto.

soluzione 1: utilizzare un autocomando BufWritePost per richiamare scp per copiare il file dopo che è stato scritto. Questo può funzionare abbastanza efficiente se il sistema permette ai processi di condividere i descrittori di file, dal momento che è possibile eseguire una sessione maestro ssh alla macchina remota e condividere la connessione per le sessioni successive. Se sei meno fortunato (stavo lavorando su una macchina Windows al momento), il tempo necessario per negoziare una nuova connessione per ogni file può essere doloroso

soluzione 2: per Windows, utilizzare WinSCP, che ha un " mantiene la modalità "aggiornata macchina remota", in cui monitora una directory e tutte le sue sottodirectory per le modifiche e quindi automaticamente propaga le modifiche, dato un insieme di regole (modelli da ignorare, modalità di trasferimento per diversi tipi di file, ecc.).

0

Il plugin netrw bypassa completamente il comando :write, l'unico modo per ottenere la funzionalità 'backup' di nuovo è quello di farlo da soli, usando autocomandi.

0

Mi rendo conto che non è una risposta diretta alla domanda originale - tuttavia, ciò che si sta facendo sembra un semplice VCS-in-camuffamento - quindi c'è un motivo per cui non si dovrebbero creare i file remoti, ad es. un repository git, quindi clonare quel repository localmente e spingere le modifiche dopo la modifica?