2009-06-30 8 views
14

Im Allgemeinen beinhalten unsere Fixes/Patches für alle Bugs Änderungen in mehreren Dateien und wir werden alle diese Dateien in einer einzigen Aufnahme festschreiben.Listet alle eingecheckten Dateien in einem einzigen cvs-Commit auf

In SVN wird die Revisionsnummer des gesamten Repositorys für jedes Commit (möglicherweise mehrere Dateien) um eins erhöht. So können wir einfach alle Dateien verknüpfen, die in einem einzigen Commit enthalten waren.

Jetzt die Schwierigkeit mit dem gleichen Fall in CVS ist, dass es die Revisionsnummern aller Dateien einzeln erhöht. Angenommen, ein Commit umfasst die folgenden Dateien:

file1.c // Revision als Teil dieses Commits zugewiesen. 1..5.10.2
file2.c // Revision als Teil dieses commit..1.41.10.1 zugewiesen

und der Kommentar für dieses Commit ist "First Bug Fix".

Jetzt ist die einzige Möglichkeit, alle eingecheckten Dateien als Teil dieses Commits zu erhalten, indem man alle cvs-Protokolle nach dem Kommentar "First Bug Fix" durchsucht und hoffentlich nur die beiden oben erwähnten Dateirevisionen zurückgibt.

Bitte teilen Sie Ihre Ansichten auf, wenn es eine bessere Möglichkeit in CVS gibt, alle eingecheckten Dateien in einem einzigen Commit zu verfolgen, anstatt einen Kommentar als Teil des Commits weiterzuleiten.

+1

haben gesehen, cvs machen 'Commit Identifier', nicht sicher, ob dies ein kein Standard extenstion ist oder so. Und keine Ahnung, wie man diese für irgendetwas benutzt. –

Antwort

11

Ich denke, CVSps könnte tun, was Sie suchen.

"CVSps ist ein Programm zum Generieren von 'Patchset' Informationen aus einem CVS-Repository. Ein Patchset ist in diesem Fall definiert als eine Reihe von Änderungen an einer Sammlung von Dateien, und alle zur gleichen Zeit (mit einem einzigen "cvs commit" -Befehl). Diese Information ist wertvoll, um das Gesamtbild der Evolution eines cvs-Projekts zu sehen. Während cvs Revisionsinformationen verfolgt, ist es oft schwierig zu sehen, welche Änderungen "atomisch" an das Repository übergeben wurden. "

Dieser cvsps beruht auf cvs-client. Stellen Sie sicher, dass Sie die richtige Version von cvs haben, die den Befehl rlog unterstützt (1.1.1)

+0

Interessant. Ich frage mich, woher CVSps funktioniert? Ich frage mich, ob cvsps über verschiedene Verzeichnisse hinweg funktioniert, da der Zeitstempel anders sein könnte? Sicherlich fügt CVSzilla eine Menge sehr netter Funktionen hinzu - es verbindet sich mit CVSweb und Bugzilla, um wirklich eine sehr reiche Umgebung zu bieten. –

+0

Ich sehe cvsps ist über Standard-Ubuntu-Repositories verfügbar. Markieren Sie diese Antwort, um Danke zu sagen, dass Sie mir etwas über cvsps beigebracht haben. :) –

+0

Ich weiß nur von seiner Existenz mehr oder weniger, so weiß nicht viel davon, wie es funktioniert –

2

CVS hat keine inhärente Unterstützung für "Transaktionen".

Sie benötigen etwas zusätzlichen Kleber, um dies zu tun. Glücklicherweise wurde dies alles für Sie erledigt und ist in einer sehr schönen Erweiterung namens "cvszilla" verfügbar.

Die Homepage ist hier:

http://www.nyetwork.org/wiki/CVSZilla

Dies entspricht auch um CVSweb, die eine gute Möglichkeit, durch Ihre CVS-Module über eine Web-basierte GUI zu durchsuchen.

0

OK, ich habe gerade cvsps installiert und von der obersten Ebene ausgeführt. Hier ist ein Beispiel für die Ausgabe ... das ist einer der wenigen hundert Patch-Sets auf meinem Modul. Beachten Sie, dass dies tatsächlich für verschiedene Verzeichnisbäume funktioniert.

--------------------- 
PatchSet 221   
Date: 2009/04/22 22:09:37 
Author: jlove-ext   
Branch: HEAD    
Tag: LCA_v1_0_0_0_v6  
Log:      
Bug: 45562    
Check the length of strings in messages. Namely: 

    * Logical server IDs cannot be more than 18 characters (forcing a 
    TCSE protocol requirement).          
    * Overall 'sid' (filter) search string length cannot be more than 
    500 (this is actually more than the technical maximum messages are 
    allowed, but is close).           

Alarm messages and are now not going to crash either as the alarm text 
is shortened if necessary by the LCA.         

Members: 
     catalogue/extractCmnAlarms.pl:1.2->1.3 
     programs/ldapControlAgent/LcaCommon.h:1.18->1.19 
     programs/ldapControlAgent/LcaUtils.cc:1.20->1.21 
     programs/ldapControlAgent/LcaUtils.h:1.6->1.7  
     programs/ldapControlAgent/LdapSession.cc:1.61->1.62 
     tests/cts-45562.txt:INITIAL->1.1 

Also, das kann tatsächlich tun, was Sie wollen. Netter, Joakim. Wie bereits erwähnt, tut CVSzilla jedoch viel mehr als das:

  • Web-durchsuchbare CVS-Repositories (über CVSweb).
  • Web-Browsable-Transaktionen.
  • Unterstützt Transaktionen über Module hinweg.
  • Erzeugt CVS-Befehle (mit 'cvs -j'), um Patchsets auf andere Zweige zusammenzufassen.
  • Integration mit Bugzilla (Transaktionen werden automatisch gegen Bugs registriert).

Wenn alles, was Sie wollen, nur die Patchset-Info ist, gehen Sie mit cvsps. Wenn Sie CVS in großen Projekten über einen längeren Zeitraum verwenden und darüber nachdenken, Bugzilla für Ihr Bug-Tracking zu verwenden, würde ich vorschlagen, sich CVSzilla anzuschauen.

1

Vielleicht ist die ANT CvsChangeLog Task eine andere Wahl. Siehe http://ant.apache.org/manual/Tasks/changelog.html. Es enthält Datum und Uhrzeit für eine Check-In-Nachricht. Mit XSLT können Sie schöne Berichte erstellen - probieren Sie das Beispiel unten in der ANT-Manpage.

Ich weiß, es ist spät für eine Antwort, aber vielleicht kommen andere Benutzer wie ich (suchen) und schätzen die ANT-Integration.

Verwandte Themen