Come posso modificare un buffer rispetto a una revisione?


8

Voglio eseguire ediff per confrontare la mia versione corrente di un file (in git) con una versione del file su un ramo diverso.

Corro M-x ediff-revisionda un buffer aperto per il file in questione. Rispondo alle due domande:

  • Confronta le revisioni per il file: ho vuoto questa risposta (il valore predefinito è il buffer corrente che è corretto).
  • Revisione 1 da confrontare: accetto di nuovo il valore predefinito ("ultima versione del file predefinito").
  • Revisione 2 per confrontare: inserisco un nome di ramo git

Funziona benissimo per visualizzare le differenze tra i due file. Tuttavia, voglio essere in grado di modificare la versione corrente (ovvero colpendo ao bin ediff per copiare o rimuovere blocchi di diff) e il buffer "versione corrente" è un buffer di sola lettura con un nome prodotto ( file.~git-branch~). Voglio che il buffer "versione corrente" sia il buffer di lettura / scrittura con cui ho iniziato, non un buffer di sola lettura sulla versione del ramo corrente.

Risposte:


7

Emacs sta facendo quello che gli hai detto di fare invece di quello che intendevi. ediff-revisionchiede tre informazioni:

  1. Il file su cui lavorare - impostazione predefinita: il file su cui si trova il buffer corrente.
  2. La vecchia revisione - impostazione predefinita: l'ultima revisione.
  3. La nuova revisione - impostazione predefinita: lo stato corrente.

Al passaggio 1, seleziona il file, non stai dicendo a Emacs che vuoi usare il file così com'è nel buffer. L'impostazione predefinita per il passaggio 2 è l'ultima revisione, non l'attuale copia di lavoro. L'impostazione predefinita per il passaggio 3 è il contenuto del buffer, che è la copia di lavoro se il buffer non viene modificato. Con quello che hai fatto, stai confrontando ciò che hai estratto (in genere l'ultima revisione sul ramo corrente) con qualche altro ramo, non la copia di lavoro con qualche altro ramo.

È necessario assegnare il nome del ramo come prima revisione (passaggio 2) e lasciare vuota la terza domanda per dire che si desidera utilizzare lo stato del buffer. È possibile selezionare solo lo stato del buffer corrente per la revisione 2, non per la revisione 1 (incorporata ediff-vc-internal).


7

Quando si utilizza magit :

  1. Utilizzare l -al lper visualizzare le revisioni di tutti i rami della cronologia
  2. andare alla riga contenente la revisione con cui si desidera confrontare il contenuto del buffer corrente.
  3. Digita de ti verrà chiesto per quale revisione confrontare l'attuale albero di lavoro (l'impostazione predefinita è la revisione al punto). Confermare.
  4. Otterrai una panoramica delle differenze sulle modifiche di tutte le differenze di file tra l'albero di lavoro corrente e la revisione. Metti il ​​punto sul file che ti interessa e premi eper invocare una sessione ediff su di esso.

Magit offre una serie di opzioni per visualizzare le revisioni (passaggio 1). È possibile scegliere Se si dispone di una struttura di diramazione molto complessa, è possibile utilizzare un altro filtro per trovare la revisione desiderata.


Grande! Questo e 'esattamente quello che stavo cercando. Solo una cosa ... Cosa vuoi dire con -al? Normalmente lo faccio l lo l asu magit-status buffer.
nipote il

Questo era per un layout di interfaccia utente più vecchio di magit. Nelle versioni attuali è possibile utilizzare l a. Il layout di Magit è cambiato parecchie volte negli ultimi 3 anni.
Dfeich,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.