Domanda

In CVS, la mia copia di lavoro (WC) è in un certo ramo (che chiameremo "foo"). Ci sono stati altri cambiamenti controllato in pippo da un altro dev. Voglio fare un diff tra il mio WC e lo stato a monte del foo. Normalmente, quando si lavora in tronco (HEAD), ho solo fare un diff cvs, e va bene. Ma per qualche ragione quando si fa un diff cvs pianura nel ramo, il diff è vuoto. Quando si tenta di utilizzare "cvs diff -r foo", il diff presenta, ma è invertita -. Aggiunte a monte sono indicati con svantaggi, e rimozioni upstream vengono mostrati con vantaggi

Come posso neanche: (1) ottenere CVS per diff "dall'altra parte" (più per le aggiunte a monte), o (2) invertire una patch (in generale)

È stato utile?

Soluzione

Se lo scopo principale di questo è quello di verificare "cosa succede" nel repository centrale, ti suggerisco di ottenere voi stessi un visualizzatore di CVS / browser / thingy web funzionale dove è possibile sfogliare e vedere le ultime modifiche prima di aggiornare. Ma supponendo che tutto quello che hai è da riga di comando CVS, cercherò di dare una soluzione in ogni caso:)

Quindi, quello che abbiamo qui è un foo ramo che andava da A -> B, dove B è lo stato del ramo (sul server), dopo il check-in di l'altro sviluppatore, e A è lo stato dell'ultimo aggiornamento il vostro lavoro copiare.

Quando solo facendo un cvs diff pianura in questa situazione, vedrete le modifiche locali rispetto al A dal A è quello che avete verificato. Lo Stato CVS locale vi mostrerà che ogni file viene dal Una revisione sul ramo foo, e quando il vostro cliente diffing CVS scaricherà che la revisione dal server. Nel tuo caso Sto indovinando non si hanno modifiche locali dal tuo cvs diff è vuoto.

Poi, quando si esegue una cvs diff -r foo stai diffing tua A locale (o A + modifiche) contro foo del server (che attualmente è al B) - e le modifiche necessarie per ottenere da B del server al vostro A+changes è esattamente l'opposto di check-in dell'altro sviluppatore, più le proprie modifiche locali.

Ora, se davvero vuole veramente sapere come B (o la punta-di-foo) a fronte di un (la versione incontaminata di tutto ciò che attualmente hanno verificato), quello che io penso che si debba fare è impostare un tag su la vostra copia di lavoro, quindi diff che modifica contro lo stato del ramo. Qualcosa di simile a questo:

cvs tag pistos_temp1
cvs diff -r pistos_temp1 -r foo
# And clean up by deleting the tag afterwards:
cvs tag -d pistos_temp1

Altri suggerimenti

forse ciò che si vuole può essere fatto utilizzando interdiff dal pacchetto patchutils.

Io uso spesso questo modo di vedere cosa è cambiato sul tronco di un dato file:

cvs diff -up -r1 givenfile | interdiff /dev/stdin /dev/null

Si può provare a esportare un file dal ramo a qualche file temporaneo e poi fare diff tra vostra copia di lavoro e questo file temporaneo. Sembra essere il modo più semplice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top