CVS und src/ports-tree

zapata

Active Member
Hi,

es gibt ja die beiden ML cvs-src@ cvs-ports@. In den Nachrichten sieht man zwar welche Dateien geändert wurden, aber leider nicht was genau. :-(

Wie kann man mit cvs ein diff File erzeugen, das alle Unterschiede zwischen dem remote und lokalen Verzeichnis beinhaltet? Oder muss man für jedes File die Revisions (vorher/nachher) rausfinden und 'cvs diff -r <vorher> -r <nachher> $datei' aufrufen?

% cvs -q diff # Keine Ausgabe
% cvs -q up
P etc/rc.subr
P gnu/usr.bin/sort/config.h
usw.
% cvs diff -u -r1.82 -r1.83 etc/rc.subr
Index: etc/rc.subr
===================================================================
RCS file: /home/ncvs/src/etc/rc.subr,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -r1.82 -r1.83
--- etc/rc.subr 5 May 2008 15:50:20 -0000 1.82
+++ etc/rc.subr 5 May 2008 15:52:54 -0000 1.83
<...>

Danke.
 
Nicht ganz was Du willst, aber ein Anfang: mail/cvsmail - fügt zu den CVS Commit Mails einen Link zu CVSweb hinzu.

Hatte mir das mal kurz angeschaut aber nicht zum laufen bekommen. Vielleicht hast Du ja mehr Glück.
 
Zunächst mal vielen Dank für die Unterstützung.

@nakal:

1. Ich möchte mich ein wenig in den Code von FreeBSD einlesen/-arbeiten. Zu jedem commit Mail hätte ich gerne den Patch dazu. (z.B. Jabber.el comitt messages)
2. CTM Manual habe ich mir durchgelesen; verstehe jetzt aber nicht wie mir das weiterhelfen soll :-)

@Vincent Vega
Hmm, schaue ich mir mal näher an. Dürfte aber für Commiter sein...

@Elwood:
Ganz nett, aber irgendwie mühsam...

Irgendwie verstehe ich cvs diff nicht:
% cvs diff
cvs server: Diffing .
cvs server: Diffing bin
cvs server: Diffing bin/cat
cvs server: Diffing bin/chflags
cvs server: Diffing bin/chio
cvs server: Diffing bin/chmod
cvs server: Diffing bin/cp
cvs server: Diffing bin/csh
cvs server: Diffing bin/csh/USD.doc
cvs server: Diffing bin/date
...
 
Ich bin jetzt einen Schritt weiter. :-) Ich brauche jetzt nur noch ein Skript, dass mir aus dem Mail die Revision und den Path extrahiert und danach cvs diff -u -r $revision $path" ausführt.
 
Zuletzt bearbeitet:
OK, passt auch nicht. :-( z.B.:

% cvs diff -u -r 1.9 src/etc/rc.d/hostid
<SNIP>
-# $FreeBSD: src/etc/rc.d/hostid,v 1.9 2008/05/06 10:40:20 mtm Exp $
+# $FreeBSD: src/etc/rc.d/hostid,v 1.8 2008/01/24 07:04:12 ru Exp $

Also falsche Richtung...
 
Zuletzt bearbeitet:
1. cvsroot-all, src-all, ports-all über cvsup geholt (ohne tag)
Die Files liegen unter /mnt/disk0/FreeBSD
2. src-tree in ~/cvs "ausgecheckt":
cvs -d /mnt/disk0/FreeBSD co src
3. Source-Repository mittels cvsup aktualisiert -> ein File geändert:

Updating collection cvsroot-all/cvs
Append to CVSROOT-src/commitlogs/sys
Updating collection src-all/cvs
Edit src/sys/net/if_ethersubr.c,v
Finished successfully

4. In ~/cvs/src

a)

% cvs -q diff
% cvs -q diff sys/net/if_ethersubr.c
=> Kein Ergebnis

% cvs log sys/net/if_ethersubr.c # Revisions (current, previous) nachgeguckt
% cvs diff -u -r 1.245 -r 1.246 sys/net/if_ethersubr.c

Voila:

Index: sys/net/if_ethersubr.c
===================================================================
RCS file: /mnt/disk0/FreeBSD/src/sys/net/if_ethersubr.c,v
retrieving revision 1.245
retrieving revision 1.246
diff -u -r1.245 -r1.246
--- sys/net/if_ethersubr.c 29 Apr 2008 21:23:20 -0000 1.245
+++ sys/net/if_ethersubr.c 10 May 2008 18:33:38 -0000 1.246
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* @(#)if_ethersubr.c 8.1 (Berkeley) 6/10/93
- * $FreeBSD: src/sys/net/if_ethersubr.c,v 1.245 2008/04/29 21:23:20 julian Exp $
+ * $FreeBSD: src/sys/net/if_ethersubr.c,v 1.246 2008/05/10 18:33:38 antoine Exp $
*/

[SNIP]

% cvs -q update
U sbin/ipfw/ipfw2.c

=> Wieso liefert cvs diff kein Ergebnis?
=> Funktioniert "cvs diff" etwa nur wenn ich etwas im working directory ändere?

Mit "cvs status $file" kann ich mir die Revisions (working, repository) anzeigen lassen. Ich muss mir wohl etwas zusammen skripten...
Und das CVS Manual bei Gelegenheit reinziehen. Danke für den Tipp!
 
Zuletzt bearbeitet:
Zurück
Oben