2009-03-20 12 views
52

Spesso, quando cambio rami in git, se i file sono aperti in emacs, emacs chiede se voglio ripristinarli (poiché pensa che siano stati modificati su disco) anche se i contenuti sono identici.Come posso ottenere Emacs per ripristinare tutti i buffer invariati quando si cambia ramo in git?

In primo luogo mi piacerebbe trovare un modo per emacs di non chiedermelo affatto se i contenuti su disco sono identici a quelli nel buffer.

In secondo luogo vorrei un comando che ripristinasse (senza query) tutti i miei buffer aperti che non hanno modifiche non salvate e mi ha interrogato su quelli che hanno modifiche non salvate.

In alternativa, sarei aperto a suggerimenti su altre soluzioni, modi di lavorare, ecc. Potrei provare. Sono abbastanza felice di scrivere emacs-lisp se le persone possono darmi dei consigli su dove cominciare.

PS Sto usando Aquamacs su OSX se questo è importante.

Edit:

Beh, ho trovato il pacchetto revbuffs di essere più o meno quello che mi serve. Certamente abbastanza da impedirmi di provare a scrivere qualcosa di nuovo da solo. (Ho mappato i revbuffs a Cmd-R che funziona abbastanza bene, un po 'simile a Cmd-R in altre app Mac).

La modalità di ripristino automatico globale sarebbe stata una soluzione perfetta, e vorrei poter scegliere due risposte. Preferisco le rivelazioni semplicemente a causa di un sentimento, forse irrazionale, di voler avere il controllo di ciò che accade.

Avrei indovinato che se ho avuto accesso a git da emacs, probabilmente potrebbe essere gestito più facilmente, ma al momento preferisco accedere a git tramite la riga di comando. (Non ho usato abbastanza emacs abbastanza a lungo da renderlo il mio sistema operativo). Indagherò magit un po 'più a fondo però.

Edit2:

Sto usando magit per un anno e lo consigliamo vivamente per trattare con git dall'interno di Emacs. Tuttavia uso ancora le revbuff ogni volta che eseguo un rebase al di fuori di emacs.

+1

so che questo è antica, ma mi piace il ragionamento di Singletoned, e avere un po 'di forchetta revbufs su GitHub https://github.com/capitaomorte/revbufs –

risposta

17

provare il revbufs package:

revbufs.el è un piccolo pacchetto di Emacs che ritorna in modo sicuro i buffer quando si è in fase di modifica dei file sia in Emacs e via strumenti esterni (ad esempio, generatori di codice come ad esempio Jomtool) ...

+0

qualsiasi modo per rendere questo automatico? Come Singletoned menziona nella sua modifica, è necessario associarlo a una chiave. – toolbear

11

Il pacchetto Magit lo fa automaticamente quando si attiva magit-ionotify-mode (non è necessario emacs 24.4 su linux). La sua descrizione è possibile trovare here.

40

Forse ti piacerebbe la modalità di auto-ripristino globale. Prova a eseguire global-auto-revert-mode e, se ti piace, puoi aggiungere (global-auto-revert-mode) al tuo file ~/.emacs.

Problemi correlati