Perché la community Git sembra ignorare le differenze side-by-side [chiuso]


33

Usavo Windows, SVN, Tortoise SVN e Beyond Compare. È stata un'ottima combinazione per fare recensioni di codice.

Ora uso OSX e Git. Sono riuscito a mettere insieme uno script bash insieme a Gitx e DiffMerge per trovare una soluzione a malapena accettabile.

Ho confuso con questa configurazione e simili, per oltre un anno. Ho anche provato a utilizzare il visualizzatore di differenze Github e il visualizzatore di differenze Gitx, quindi non è come se non avessi dato loro una possibilità.

Ci sono così tante persone intelligenti che fanno grandi cose con Git. Perché non il diff side-by-side con l'opzione di vedere l'intero file? Con le persone che hanno usato entrambi, non ho mai sentito parlare di qualcuno a cui piace la visualizzazione +/- singola, almeno per più di un controllo rapido.


Puoi installare TortoiseGit per usare Beyond Compare per i diiff, nel qual caso vedresti tutto il file fianco a fianco (comunque non ho mai testato personalmente questa configurazione [ma pianifico, uno di questi giorni]).
Wildpeaks,

1
Solo un commento, uso per usare Windows, SVN e Beyond Compare. Ma ora uso Ubuntu + Git. Fortunatamente, posso ancora usare il mio vecchio amico Beyond Compare. Funziona perfettamente su Ubuntu. E mentre non è gratuito, vale ogni centesimo per me. :) Spiacente, non posso offrirti una soluzione su OSX, ma non volevo che la gente pensasse che Beyond Compare fosse una soluzione solo per Windows.
David S,

7 anni dopo, mi sento ancora un po 'così, ma mi sono allenato a preferire la differenza in linea in tutti tranne i casi più complessi. Poi scoppio il mio vecchio amico Beyond Compare.
Kyle Heironimus,

Risposte:


19

Non posso parlare per Linus su questo, ma il modo in cui git gestisce i difftools è molto inequivocabile, filosoficamente parlando. git fa quello che fa molto bene e usa strumenti esterni per tutto il resto, incluso il diffing e la fusione più sofisticati.

Uso DiffMerge con git anche su OS X e non ho dovuto ricorrere a shell bash. È stato complicato, ma ho configurato le impostazioni difftool e mergetool di git per chiamare direttamente DiffMerge e ora posso visualizzare le differenze e risolvere i conflitti di unione in un eccellente strumento visivo di terze parti.

Ecco la mia configurazione:

[mergetool "diffmerge"]
        cmd = "diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$REMOTE\""
        trustExitCode = false
[difftool "diffmerge"]
        cmd = diffmerge \"$LOCAL\" \"$REMOTE\"
[merge]
        tool = diffmerge
[diff]
        tool = diffmerge

1
Questo va bene, ma quando cambiano diversi file, riesco a guardarli uno alla volta, nell'ordine in cui git decide di mostrarmeli. Devo chiuderne uno per aprirne un altro. Ecco perché uso anche gli script bash quando voglio guardare tutti i file contemporaneamente.
Kyle Heironimus,

Non so cosa ti aspetteresti di vedere in termini di "guardarli tutti in una volta". Ma dai un'occhiata git diff --stat. Ti dà un bel elenco grafico di tutti i file modificati, con il numero di righe modificate.
Dan Ray,

Pensando un po 'di più a questa cosa "aprili tutti in una volta" ... Quanti file puoi modificare / visualizzare alla volta? Posso solo guardare un file in un dato momento. Immagino di non avere quello che vorresti potesse fare.
Dan Ray,

2
Il miglior esempio è TortoiseSVN con Beyond Compare. Ad esempio, se l'ultimo commit del mio collega ha 3 file modificati, mostrerà i tre file in un elenco. Posso quindi fare clic sul file appropriato per vedere le differenze. Potrei anche avere 3 finestre separate aperte, ognuna con il file diverso. Posso quindi andare avanti e indietro tra di loro, se necessario per esaminare il cambiamento. Fondamentalmente, ti consente di visualizzare tutte le modifiche alle tue condizioni, non in serie nell'ordine dettato dal tuo vcs.
Kyle Heironimus,

1
Sai, dovresti dare un'occhiata a Tower. È la migliore interfaccia grafica per Mac che abbia mai visto, e fa quello di cui stai parlando e MODO di più. git-tower.com
Dan Ray,

16

Noterai che SVN stesso non offre neanche una soluzione side-by-side. Ciò che hai elencato sono strumenti di terze parti. Come con la maggior parte delle cose in Git, questo è straordinariamente configurabile e ha un ottimo supporto degli strumenti pronto all'uso. Hai impostato un mergetool ? In caso contrario, dovresti. Se lo fai, prova git difftool. Dai un'occhiata alla pagina man per le opzioni di configurazione.

Uso KDiff3 come mio mergetool poiché è uno strumento piacevole, multipiattaforma e senza ulteriore configurazione, git difftoolfa esattamente quello che mi stai chiedendo.


2
In realtà, va bene con difftool, ma non riesce ancora quando si guardano molti file. Devono essere aperti uno alla volta. Per aprirli tutti in una volta, devo fare hacker di script bash.
Kyle Heironimus,

9

È la filosofia * nix. Molte persone che usano questi strumenti trascorrono molto tempo nel terminale. Il terminale non ci impone di spostare le mani dalla tastiera al mouse. So che preferisco lo stile +/- agli strumenti visual diff / merge, principalmente perché mi preoccupo solo delle differenze. Mi interessano le 3-4 linee attorno al cambiamento e al cambiamento stesso. Nulla di più sono informazioni extra che davvero non mi aiutano.

I diff sono comunemente usati per dare una rapida occhiata a ciò che è stato cambiato. Non leggere il codice.

Non ho mai trovato gli strumenti di visualizzazione visiva molto utili rispetto alla diff predefinita sui sistemi GNU. Tutto quello che mi fanno mai fare è iniziare a scherzare con il mouse e costringermi a scorrere il file, capire la loro interfaccia utente e quindi lottare per tornare alla riga di comando dove posso fare qualcosa per un problema che vedo nel diff .


1
vimdiff va bene, di solito ti mostra solo le parti. Lo uso per le fusioni; non è necessario il mouse.
alternativa il

8
Hai mai visto le modifiche apportate da un collega? In aree del codice che non conosci? Lo faccio sempre, e non riesco a immaginare di farlo senza fianco a fianco, tutto il codice. Per me, +/- è ottimo per le modifiche apportate da be, ma non per gli altri. Non dire che hai torto o male o altro. Solo per chiedere.
Kyle Heironimus,

1
Spesso rimbalzo nel codice modificato dai colleghi, spesso in aree che non conosco. Penso di aver usato fianco a fianco forse 3 o 4 volte in assoluto, e che avrei potuto facilmente fare a meno. Dipende solo dal tuo stile operativo preferito. Funziona per te, lo trovo superfluo.
Brian Knoblauch,

0

Dal mio uso personale, penso che la risposta sia principalmente che le differenze sono abbastanza brevi da non importare.

Per le revisioni del codice, utilizzo uno strumento completo di revisione del codice, che mi offre tutte le cose che mi piacciono, come commenti, evidenziazione della sintassi e vista affiancata.

Uso git diffquasi esclusivamente durante il commit del codice di gestione temporanea; In questo caso, le differenze sono abbastanza piccole e abbastanza recenti che non ho bisogno di vedere il contesto per ricordare cosa sta succedendo.

Il mio strumento preferito per la revisione del codice Phabricator , o forse strumenti integrati con IDE, che sono sensibili al contesto linguistico. Penso che il flusso di richieste pull di github sia terribile per la revisione del codice, soprattutto perché mostra differenze unificate e non affiancate.

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.