2011-02-07 16 views
25

Voglio vedere solo l'elenco di file che sono stati modificati, aggiunti, ecc., non il contenuto (svn diff uscite che), solo l'elenco di file come svn status.SVN: come confrontare la copia di lavoro con la revisione del repository?

svn diff -r HEAD mi scarica tonnellate di informazioni, che è difficile da capire rapidamente.

svn status mostra solo le modifiche che confrontano la copia di lavoro con la versione originale locale (non con la revisione del repository).

svn update non supporta --dry-run

In breve, ho bisogno di qualcosa come svn status, ma quello che confronta la copia di lavoro corrente con la revisione repository (sto andando a confrontare con una revisione HEAD).

ho guardato attraverso il manuale di SVN, ma non serviva a niente per me, purtroppo: -/

risposta

40

Prova

svn status --show-updates 

-u (o --show-updates) opzione per svn status Le cause SVN per contattare il repository e spettacolo cose che sono cambiate nel repository - è abbastanza per te? A seconda di che cosa avete bisogno, si potrebbe desiderare la bandiera -q o --verbose troppo

+0

Ottimo! Ma contrassegna tutti i file come solo '*'. – Azat

+0

Posso confrontare, ad esempio, due revisioni? 'svn status -r4: 5' non è supportato. – Azat

+0

Oppure è una domanda per un altro argomento? – Azat

22
svn diff -r head 

Questo produrrà un elenco diff per tutti i file che si differenziano tra la copia di lavoro e il repository, fornendo un elenco di file e le modifiche effettive . Che, come dici tu, può essere difficile da capire.

Quindi provare questo:

svn diff -r head --diff-cmd meld 

Questa DOS la stessa cosa, ma visualizza le modifiche utilizzando meld (è possibile fornire qualsiasi altro strumento diff visiva nel vostro arsenale), che è molto più gestibile.

Ma seriamente, ci si abitua alla lettura di tali output diff, poiché costituiscono la base per molte altre cose (ad esempio, patch) e sono piuttosto difficili da evitare nel mondo Linux. Per ridurre l'output:

svn status -u 

vi darà un elenco di file modificati, quindi:.

svn diff <file> -r head --diff-cmd <tool> 

vi darà una differenza visiva di appena il file particolare che ti interessa

+1

Dolce, grazie. Questa è esattamente la risposta che stavo cercando. Meld ha una buona capacità di confrontare intere directory, conosci il modo di inviare copie di lavoro SVN a questo programma in questo modo? In modo che possiamo vedere in anteprima l'intera struttura. – Line

+0

@kdopen, ci scusiamo per i downvotes. Nonostante mi abbia fatto incazzare la cancellazione di una delle mie risposte, non ho votato personalmente. Ho un amico molto creativo che visita chi (sapendo che sono arrabbiato) ha usato questa situazione e il mio computer e account incustoditi per fare una burla elaborata su di me e downvoted molte risposte. Devo dire che sono infantile, ma uno scherzo davvero intelligente che ovviamente ha servito allo scopo di me che mi imbarazzavo nella comunità di StackOverflow. : D Almeno spero che qualcuno abbia avuto una bella risata sul mio account. : D – AlexRebula

+0

Bene, sembra che il sistema lo abbia corretto. Cerca di non lasciare che il sistema di revisione arrivi a te. Quando raggiungi la 500 reputazione (circa 3 upvotes da ora), ti troverai a iniziare a gestire le code - poi ti rendi conto che devi solo concentrarti sulle regole e non preoccuparti di come le persone si sentiranno riguardo alla tua recensione. Ogni giorno ricevo molti commenti da persone che hanno avuto una recensione negativa e ho avuto il mio materiale recensito e cancellato nel tempo. Questo è ciò che ci distingue dal caos di siti come Quora – kdopen

2

Il modo in cui hai formulato la domanda originale, la risposta corretta è stato svn -u come già dato. Sulla base dei commenti di follow-up, dovresti anche essere a conoscenza di svn diff --summarize in quanto potrebbe essere quello che stai cercando. Questo è ciò che useresti per confrontare due revisioni di repository o due tag o qualcos'altro nel repository. Non è possibile utilizzare questa opzione per confrontare la propria copia di lavoro con il repository (lo stato lo fa).

See: http://blogs.collab.net/subversion/2007/03/computing_the_d/

1

Ecco quello che ho fatto, ed è risolto il mio problema: voglio vedere cosa c'è di diverso tra la mia copia di lavoro e la copia del pronti contro termine.

svn diff > ~/svndiff.txt 

E poi ho tirato sul file di testo in chiaro in SublimeText 2 così ho potuto leggere più facile. Indovinate che questa è roba abbastanza di base, ma ho pensato di pubblicarla perché mi ha aiutato con un problema simile.

-1

Questo può essere quello che stai cercando:

svn diff -r TESTA --summarize

1

op:

voglio vedere solo l'elenco dei file sono stati modificati, aggiunti, ecc., non il contenuto (svn diff restituisce quello), solo l'elenco di file come lo stato di svn.

come il PO, voglio vedere un "svn status" rapporto stile della copia di lavoro corrente per i rami di progetto che sono annidati sotto di un repository SVN più grande contro il loro ultimo tronco e voglio usare lo stesso percorso e argomenti di revisione che svn diff utilizza.

Il seguente fa che:

svn diff --old . --new ^/pathToProject/trunk --summarize 

Naturalmente, sostituire "pathToTrunk" al percorso effettivo proprio repository utilizza.

Problemi correlati