2009-10-16 11 views
13

Quando uso "svn diff" dalla riga di comando, stampa le righe che sono cambiate, ma anche le 3 linee invariate prima e dopo per il contesto. Preferisco di gran lunga vedere solo le linee modificate senza contesto. Non sono stato in grado di determinare le opzioni della riga di comando che mi consentiranno di farlo funzionare in questo modo. Standard 'diff' e 'cvs diff' fanno ciò che voglio di default. Sicuramente 'svn diff' può farlo ma mi manca qualcosa. Qualcuno sa come?Come ottenere NESSUN contesto quando si usa svn diff

risposta

17

Dopo aver esaminato il collegamento utile sopra riportato per rilassarsi, la risposta breve è che svn è costruito -in diff non può fare ciò che voglio. Puoi dirlo per usare la diff esterna standard e passare l'arg a quello per dirti che non vuoi un contesto. Ho messo il seguente alias nel mio .bashrc e tutto ora funziona bene se uso che, invece:

alias svndiff='svn diff --diff-cmd=diff -x -U0' 
+2

'-x' è il parametro di estensione per' svn diff', fa sì che il token che segue immediatamente, qui '-U0', a essere passato al comando diff specificato con '--diff-cmd', qui' diff'. – valid

2

This thread sembra giungere alla conclusione che è necessario utilizzare un comando diff esterno per controllare la quantità di contesto.

preferisco diff unificate, così le mie dita digitare sempre

svn diff -x -u 

Il che implica che un comando esterno (GNU diff) viene utilizzato, credo.

+0

Grazie per il collegamento utile. Mi sorprende che il diff integrato non possa fare ciò che voglio. Mi sembra violare il principio Unix di avere il minimo risultato richiesto. L'uso dei comandi -x -u mi dà gli stessi risultati di no. 'svn help diff' dimmi che quelle sono le impostazioni predefinite. Forse non hai bisogno di digitare il carattere extra, dopotutto? – DaveBurns

3

È possibile reindirizzare i risultati di "svn diff" a grep e scrivere un'espressione regolare per ottenere ciò che si desidera. Ad esempio, provate questo:

svn diff | grep "^[+-\]" 

Il comando precedente si ottiene tutte le linee che iniziano con un '+' o '-' o un '\'. (È necessario il '\' se si desidera vedere differenze come "\ No newline alla fine del file".)

+0

Funziona bene se si desidera solo le linee modificate. Tuttavia, non riesce a fornire informazioni corrette sui numeri di riga. Per esempio. con 3 righe di contesto prima/dopo, "@@ -21,7 +21,7 @@", la riga 24 è stata modificata. Senza contesto vedresti "@@ -24,1 +24,1 @@" – kamczak

4

Il suggerimento sopra produce ancora il formato contesto, ma con 0 righe di contesto. Questo non è ancora il tradizionale output diff da prima di sovversione.

Ciò che funziona per me è: svn di --diff-cmd=diff -x --normal

L'--normal opzione (nel diff che le navi con OSX) dà il formato tradizionale che alcune persone preferiscono.

Problemi correlati