2008-10-31 5 views
16

Ich habe eine Reihe von Änderungen an einer Reihe von Dateien in einem Projekt vorgenommen. Zu jedem Commit (normalerweise auf Dateiebene) wurde ein Kommentar hinzugefügt, was geändert wurde.Wie bekomme ich seit der letzten markierten Version eine Liste von Commit-Kommentaren von CVS?

Gibt es eine Möglichkeit, eine CVS-Liste dieser Kommentare zu Änderungen seit der letzten markierten Version zu erhalten?

Bonus, wenn ich dies über das Eclipse CVS-Plugin tun kann.

UPDATE: Ich würde gerne eine Antwort hier akzeptieren, aber leider keine der Antworten, was ich suche. Ehrlich gesagt, ich denke nicht, dass es tatsächlich möglich ist, was wirklich schade ist, da dies eine gute Möglichkeit sein könnte, eine Änderungsliste zwischen den Versionen zu erstellen (vorausgesetzt, alle Commits werden in einer vernünftigen Granularität gemacht und enthalten aussagekräftige Kommentare).

Antwort

5

Die Optionen für den Befehl cvs log sind verfügbar here. Insbesondere, um alle Commits zu erhalten, da ein bestimmte Tag (nennen sie es VERSION_1_0)

cvs log -rVERSION_1_0: 

Wenn Ihr Ziel ist es, einen Befehl zu haben, ohne arbeitet den Namen des letzten Tages zu wissen, glaube ich, müssen Sie schreibe ein Skript, das das Protokoll für den aktuellen Zweig erfasst, durchsucht, um den Tag zu finden, und dann den log Befehl für dieses Tag ausstelle, aber ich habe vor einer ganzen Weile alles von CVS entfernt, sodass mein Gedächtnis ein wenig eingerostet ist.

+1

hmm Es sieht so aus, als würde -r eine Dateirevisionsnummer und kein bestimmtes Tag anzeigen. –

+0

mindestens meine cvs druckt Tags, Autor und Daten ... aber nicht die Kommentare – Stroboskop

+1

HEAD ist ein Alias ​​für die neueste, wenn Sie nicht die neuesten Versionen Ihres Codes markiert haben – Nate

5

Wenn Sie ein schnelles Ergebnis für eine einzelne Datei erhalten möchten, ist der Befehl gut. Wenn Sie etwas umfassenderes wollen, ist das beste Tool, das ich dafür gefunden habe, ein Perl-Skript namens cvs2cl.pl. Dies kann eine Änderungsliste in verschiedenen Formaten erzeugen. Es hat viele verschiedene Optionen, aber ich habe die Tag-zu-Tag-Optionen wie folgt verwendet:

cvs2cl.pl --delta dev_release_1_2_3:dev_release_1_6_8 

oder

cvs2cl.pl --delta dev_release_1_2_3:HEAD 

Ich habe auch getan Vergleiche Daten mit dem gleichen Werkzeug.

3

Ich weiß, Sie haben bereits „gelöst“ Ihr Problem, aber ich hatte das gleiche Problem und hier ist, wie ich schnell alle Kommentare aus cvs aus einer bestimmten Revision bis spätestens bekam:

$ mkdir ~/repo 
$ cd ~/repo 
$ mkdir cvs 
$ cd cvs 
$ scp -pr [email protected]:/cvs/CVSROOT . 
$ mkdir -p my/favorite 
$ cd my/favorite 
$ scp -pr [email protected]:/cvs/my/favorite/project . 
$ cd ~/repo 
$ mkdir -p ~/repo/svn/my/favorite/project 
$ cvs2svn -s ~/repo/svn/my/favorite/project/src ~/repo/cvs/my/favorite/project/src 
$ mkdir ~/work 
$ cd ~/work 
$ svn checkout file:///home/geek/repo/svn/my/favorite/project/src/trunk ./src 
$ cd src 
$ # get the comments made from revision 5 until today 
$ svn log -r 5:HEAD 
$ # get the comments made from 2010-07-03 until today 
$ svn log -r {2010-07-03}:HEAD

Die Grundidee ist, einfach svn oder git anstelle von cvs zu verwenden :-) Und das kann getan werden, indem man den cvs repo in svn oder git konvertiert, indem man cvs2svn oder cvs2git benutzt, was wir sowieso machen sollten. Es hat meine Antwort innerhalb von drei Minuten bekommen, weil ich ein kleines Repository hatte.

Hoffe, dass hilft.

2

So etwas wie dies

cvs -q log -NS -rVERSION_3_0::HEAD 

Wo Sie wahrscheinlich die Ausgabe in egrep zu Rohr wollen das Zeug zum Ausfiltern Sie wollen nicht sehen.Ich habe benutzten:

cvs -q log -NS -rVERSION_3_0::HEAD | egrep -v "RCS file: |revision |date:|Working file:|head:|branch:|locks:|access list:|keyword substitution:|total revisions: |============|-------------" 
7

Ich denke

cvs -q log -SN -rtag1:::tag2 

oder

cvs -q log -SN -dfromdate<todate 

wird tun, was Sie wollen. Dies listet alle Versionen und Kommentare für alle Änderungen auf, die zwischen den beiden Tags oder Daten vorgenommen wurden, nur für Dateien, die sich geändert haben. Im Fall des Tags schließen die drei Doppelpunkte die Kommentare für das erste Tag aus. Weitere Informationen finden Sie unter cvs -H.

+0

Dies beantwortet die Frage. Ich benutze Rlog. Ich finde zwei Doppelpunkte funktioniert nicht drei Doppelpunkte. Es kann auch nützlich sein, die Tags zu belassen (also die Option -N weglassen). Also: 'cvs-q rlog -Srtag1 :: tag2' oder 'cvs -q rlog -S -Rtaglast ::' – gaoithe

Verwandte Themen