Qualcuno conosce le opzioni della riga di comando CVS per ottenere i dettagli dell'ultimo check-in?

StackOverflow https://stackoverflow.com/questions/86515

Domanda

Utilizzo CVS su Windows (con il front-end WinCVS) e vorrei aggiungere i dettagli dell'ultimo check-in all'e-mail dal nostro processo di compilazione automatizzato, ogni volta che una compilazione fallisce, per semplificare la risoluzione.

Ho bisogno di conoscere i file che sono stati modificati, l'utente che li ha modificati e il commento.

Ho provato a elaborare le opzioni della riga di comando, ma non ho mai ottenuto risultati accurati (o ho ottenuto troppi risultati anziché un solo check-in o dettagli di alcuni check-in casuali di due settimane fa)

È stato utile?

Soluzione

Oh.

Avevo dimenticato quanto sia difficile farlo.Quello che avevo fatto prima era un processo in due fasi.

Innanzitutto, correre

cvs history -c -a -D "7 days ago" |
    gawk '{ print "$1 == \"" $6 "\" && $2 == \"" $8 "/" $7 "\" { print \"" $2 " " $3 " " $6 " " $5 " " $8 "/" $7 "\"; next }" }' > /tmp/$$.awk

per raccogliere informazioni su tutti i check-in negli ultimi 7 giorni e per generare uno script che verrebbe utilizzato per creare una parte dell'e-mail inviata.

Ho quindi cercato il file CVS/Entries nella directory che conteneva i file danneggiati per ottenere maggiori informazioni.

Mungere i due insieme mi ha permesso di individuare il colpevole e inviargli un'e-mail informandoli che avevano rotto la build.

Mi dispiace che questa risposta non sia completa come speravo.

Altri suggerimenti

CVS non raggruppa gli insiemi di modifiche come fanno altri sistemi di controllo della versione;ogni file ha il proprio numero di versione e la propria cronologia indipendenti.Questa è una delle carenze di CVS che spinge le persone a passare a un VC più recente.

Detto questo, ci sono modi in cui potresti raggiungere il tuo obiettivo.Il modo più semplice potrebbe essere aggiungere un hook post-commit per inviare e-mail o accedere a un file.Quindi, almeno, puoi raggruppare insieme una serie di commit osservando l'ora in cui vengono inviate le e-mail e chi ha apportato la modifica.

CVS non fornisce questa funzionalità.Puoi, tuttavia, ottenerlo acquistando una licenza per FishEye o eventualmente utilizzando CVSTrac (Nota:Non ho provato CVS Trac).

Oppure potresti migrare a SVN, che fornisce questa funzionalità tramite commit atomici.Puoi archiviare un gruppo di file e contarlo come un singolo commit.In CVS, ogni file è un commit separato, qualunque cosa tu faccia.

Lo abbiamo fatto tramite uno script Perl che scarica il registro delle modifiche e puoi ottenere una versione gratuita di Perl per Windows al secondo collegamento.

Scritta Cvs2Cl

Perl attivo

Utilizzo loginfo in CVSROOT e scrivo tali informazioni in un file

http://ximbiot.com/cvs/manual/cvs-1.11.23/cvs_18.html#SEC186

"cvs History -a -l" ti avvicinerà?Mostra a tutti gli utenti l'ultimo evento per progetto...

Supporta CVSNT impegnare gli ID che puoi utilizzare al posto dei tag nei comandi di log, checkout o aggiornamento.Ogni insieme di file sottoposti a commit (i commit sono atomici in CVSNT) riceve il proprio ID univoco.Devi solo determinare prima il commitid dell'ultimo file archiviato tramite cvs log (puoi limitare l'output tramite -d"1 ora fa" o simile) e poi interrogare quali altri file hanno quell'ID.

Eclipse ha ChangeSet integrati.Puoi sfogliare le ultime modifiche (almeno le modifiche in arrivo, ovvero gli aggiornamenti) tramite commit.Lo fa raggruppando i commit per autore, messaggio di commit e timestamp simili.

Funziona anche per "Confronta con/Un altro ramo o versione" dove puoi scegliere rami, tag e date.Cerca tra le icone della vista di sincronizzazione un menu a comparsa con "Set di modifiche" e verifica tu stesso.

Modificare:Ciò richiederebbe il passaggio a Eclipse almeno come visualizzatore, ma a seconda della frequenza con cui è necessario confrontare e raggruppare potrebbe non essere poi così male.Se non vuoi usarne di più, usa Eclipse solo per CVS.Dovrebbe essere possibile anche ottenere un client cvs grafico di dimensioni decenti tramite rcp con tutti i plugin, ma questo sarebbe sicuramente fuori dall'ambito...

Non è questo un problema risolto?Penserei che uno qualsiasi dei numerosi strumenti sul file Matrice CI che supporta sia CVS che notifiche via email potrebbe farlo per te.

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