Autor Beitrag
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: So 01.12.02 16:48 
Hallo,

ich weiß, das CVS ein System zur Versionskomtrolle ist, habe aber nur wage vorstellungen wie das funktioniert.
Daher wollte ich mal fragen, ob mich da jemand aufklähren könnte.
Insbesondere interessieren mich folgende Punkte:
  • In wie weit muss sich die Arbeitsweise des/der Programmierer(s) ändern?
  • Liegen alle Daten auf dem Server oder werden dort Kopien gesammtelt?
  • Speichert dieser Komplette Quelltexte oder nur die änderungen zur letzten Version?
  • Wie aufwändig ist es den Server aufzusetzen (auf einem RedHat LINUX System)?

Aber auch weiterführende Infos zu dem Thema interessieren mich.

Danke schon mal für die Antworten.
Klabautermann
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: So 01.12.02 19:53 
hallo,

also 1. die Arbeitesweise muss sich nur dahingehend ändern, daß er bei Arbeitsbeginn eine Neue Version auscheckt und wenn er fertig ist mit seiner Änderung die neue Version eincheckt.
2. Auf dem Server sind immer quasi "rohe" daten. Das heißt ein jeder kann sich dann die Daten zu einem Zeitpunkt "X" wieder herstellen.
3. Es werden beim Hinzufügen eines Moduls einmal alle Quelltexte gespeichert. Anschließend werden nur noch die änderungen gespeichert.
4. Ist nicht aufwändig.

Gruß
Ken
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: So 01.12.02 19:59 
ZUerst zur Installation:
Die is eigentlich recht einfach, Du holst Dir die aktuelle Version von www.cvshome.org und folgst der Anleitung. DIe EInrichtung ist net ganz so einfach:
Erst musst Du ein CVSROOT erstellen und konfigurieren, besonders die Benutzerrechte. Ich hab das ganze auf meinem Server (SuSE 8). Danach importierst Du ein Projekt. CVS erstellt im CVSROOT ein Verzeichnis und speichert die Daten da rein.

Unter Windows hat sich bei mir WinCVS ziemlich bewährt, hat ein paar kleine Bugs, is aber nix schlimmes. Is ne schöne Oberfläche, etwas komplex, aber wenn man durchgestiegen ist, gehts.

Wenn Du jetzt ein Checkout Deines Projekts machst, bekommst Du meist den derzeitigen Stand der Software auf Deinen Rechner (mit Verzeichnissen namens CVS in jedem ORdner: Diese dürfen NICHT gelöscht werden, d.h. es darf auch in Deinem Verz. kein Ordner mit Namen CVS existieren, das is die einzige Einschränkung).

Du önderst die Software, machst ein Update (um die Änderungen von anderen Entwicklern in Dein Projekt zu übernehmen), danach ein Commit.
CVS speichert jetzt bei Textdateien NUR die Änderungen (alles andere wäre Platzverschwendung). Das hat den Vorteil, dass das System auch alte Versionen wieder generieren kann. AUßerdem kannst du Nebenversioenn, sog. Branches erstellen (für Nebenprojekte). Das einzig komplizierte sind die Binärdateien: Bei Delphi solltest Du bei jedem Formular "Text-DFM" ausschalten, dann in CVS importieren, sonst gibts Problem beim Import. CVS erkennt normalerweise automatisch Binär- und Textdateien. Diese Unterscheidung ist wegen der Änderungsspeicherung notwendig, da Du z.B. bei Exe-Dateien keine Änderungen abspeichern kannst (z.b. wegen dem Unix-/Windows-Zeilenumbruch und anderer Sonderzeichen). DIe ganzen DCU-,DDP-Dateine sollten als Binär gespeichert sein. Achja, diese werden in jeder Version komplett gespeichert, das sind die Speicherfresser.

Umstellungen im Programmierverhalten sind nicht notwendig, wenn Deine Version funktioniert, machst DU ein Commit, gibst Deinen Kommentar ab und fertig. Nur wenn mehrere Entwickler arbeiten muss man ein Update vor dem Commit machen, damit die anderen Änderungen übernommen werden und die Kompatibilität mit den eigenen Änderungen gegeben ist. Wenn zwei Leute die gleichen Stellen ändern, wird man antürlich benachrichtigt und spricht sich dann eben ab *g*.

So, das war jetzt eine kleine EInführung zu dem Thema, wenn Du mehr wissen willst, einfach fragen *g*
Klabautermann Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 02.12.02 10:45 
Danke erste einmal für die Antworten!
UGrohne hat folgendes geschrieben:
Das einzig komplizierte sind die Binärdateien: Bei Delphi solltest Du bei jedem Formular "Text-DFM" ausschalten, dann in CVS importieren, sonst gibts Problem beim Import.

Das verstehe ich nicht. Wenn ich die Formulare als Text speichere sollten diese doch leichter zu verwalten sein. Denn dann kann sich CVS auch da nur die änderungen Speichern und entprechend wieder herstellen. Oder hat das Programm irgendwelche Probleme damit?

UGrohne hat folgendes geschrieben:
CVS erkennt normalerweise automatisch Binär- und Textdateien. Diese Unterscheidung ist wegen der Änderungsspeicherung notwendig, da Du z.B. bei Exe-Dateien keine Änderungen abspeichern kannst (z.b. wegen dem Unix-/Windows-Zeilenumbruch und anderer Sonderzeichen). DIe ganzen DCU-,DDP-Dateine sollten als Binär gespeichert sein. Achja, diese werden in jeder Version komplett gespeichert, das sind die Speicherfresser.

Logisch, aber glücklicherweise muss man da ja nicht alles Speichern (EXEs und DCUs lassen sich ja neukompilieren wenn ich den Queltext jedes Standes wieder herstellen kann).

UGrohne hat folgendes geschrieben:
Umstellungen im Programmierverhalten sind nicht notwendig, wenn Deine Version funktioniert, machst DU ein Commit, gibst Deinen Kommentar ab und fertig.

Ok, wie muss ich mir dieses vorstellen? Muss ich mich auf dem Server Einloggen, und ein Schellkomando ausführen oder wird dazu ein Programm auf dem Client gestartet?

UGrohne hat folgendes geschrieben:
So, das war jetzt eine kleine EInführung zu dem Thema, wenn Du mehr wissen willst, einfach fragen *g*

Ja, da währe noch was ;).
Mal angenommen, ich installiere CVS nicht auf einem "Lokalen"-Server sondern auf einem Internet-Rechner. Wie währen da meine Daten gesichert? Kann die dann jeder "runtersaugen" oder gibt es sichheitsmechanismen.
Außerdem ist CVS ja ein Open-Source Projekt. Weiß jemand wie die Lizens aussieht? Darf man es auch für nicht Open-Source Projekte einsetzen?

Danke schonmal
Klabautermann
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 02.12.02 12:09 
So, dann kommt jetzt Teil 2, vll. hab ich das gestern auch zu schnell geschrieben *g*.
Klabautermann hat folgendes geschrieben:
Danke erste einmal für die Antworten!
UGrohne hat folgendes geschrieben:
Das einzig komplizierte sind die Binärdateien: Bei Delphi solltest Du bei jedem Formular "Text-DFM" ausschalten, dann in CVS importieren, sonst gibts Problem beim Import.

Das verstehe ich nicht. Wenn ich die Formulare als Text speichere sollten diese doch leichter zu verwalten sein. Denn dann kann sich CVS auch da nur die änderungen Speichern und entprechend wieder herstellen. Oder hat das Programm irgendwelche Probleme damit?

Ich hatte mal bei Import ziemliche Probleme, dass er mir die DFM-Dateien zerschossen hat, weil er irgendwie Unix-Zeilenumbrüche reingemacht hat. Inzwischen bin ich auch wieder bei Text-DFM, aber ich wär das etwas vorsichtig. Soweit ich weiß, erkennt er sie auch anders als Text, macht aber nix mit den Zeilenumbrüchen (weil die ja net da sind*g*). Musst einfach ausprobieren.

Klabautermann hat folgendes geschrieben:

UGrohne hat folgendes geschrieben:
CVS erkennt normalerweise automatisch Binär- und Textdateien. Diese Unterscheidung ist wegen der Änderungsspeicherung notwendig, da Du z.B. bei Exe-Dateien keine Änderungen abspeichern kannst (z.b. wegen dem Unix-/Windows-Zeilenumbruch und anderer Sonderzeichen). DIe ganzen DCU-,DDP-Dateine sollten als Binär gespeichert sein. Achja, diese werden in jeder Version komplett gespeichert, das sind die Speicherfresser.

Logisch, aber glücklicherweise muss man da ja nicht alles Speichern (EXEs und DCUs lassen sich ja neukompilieren wenn ich den Queltext jedes Standes wieder herstellen kann).

Stimmt, aber zum Beispiel Ressourcen wie Bitmaps usw....

Klabautermann hat folgendes geschrieben:

UGrohne hat folgendes geschrieben:
Umstellungen im Programmierverhalten sind nicht notwendig, wenn Deine Version funktioniert, machst DU ein Commit, gibst Deinen Kommentar ab und fertig.

Ok, wie muss ich mir dieses vorstellen? Muss ich mich auf dem Server Einloggen, und ein Schellkomando ausführen oder wird dazu ein Programm auf dem Client gestartet?

2 Möglichkeiten: Du installierst auf Deinem Rechner CVS (Client und Server sind immer im Paket mit dabei) und machst alles auf Kommandoebene --> seeehr lästig. Oder Du installierst WinCVS, dann haste eine grafische Oberfläche. Nach den Einstellungen loggst Du Dich auf dem Server ein (Methoden erkläre ich gleich) und klickst rechts auf den Entwicklungsordner, auf Commit ud gibst im folgenden deinen KOmmentar ab, et voila, Dein Zeug is aufm Server (wenn alles gut ging).
Ich bevorzuge Die Password AUthentication Method, kurz pserver. Dabei wird in einer Datei im CVSROOT nachgesehn, ob der Benutzer existiert, man kann diesen auch gleich mit einem Benutzer im System verbinden, oder die Abfrage direkt über Systempasswörter machen. Es gibt noch 2 andere Zugangssystem, aber die sind aufwendiger, die laufen über ssh, da is das alles halt noch verschlüsselt. Aber da ich das net brauche, war mir der Aufwand zu hoch, ergo, kenn ich mich damit net aus *g*

Klabautermann hat folgendes geschrieben:
Mal angenommen, ich installiere CVS nicht auf einem "Lokalen"-Server sondern auf einem Internet-Rechner. Wie währen da meine Daten gesichert? Kann die dann jeder "runtersaugen" oder gibt es sichheitsmechanismen.
Außerdem ist CVS ja ein Open-Source Projekt. Weiß jemand wie die Lizens aussieht? Darf man es auch für nicht Open-Source Projekte einsetzen?

CVS läuft unter der GNU Public License, hab da mal durchgeschaut und keinen Paragraphen gefunden, der die kommerzielle Nutzung untersagt.

So, noch ein kleiner Tipp zum Schluss:
cvsbook.red-bean.com/translations/german
Hier gibts die CVS-Doku auf deutsch, zwar ne ältere Version, aber die Befehle stimmen größtenteils noch, kannst damit nix falsch machen.

Viel Glück schonmal *g*

P.S.: DIe aktuelle WinCVS-Version ist 1.2, die Seite www.cvsgui.org ist zum Verkauf, weiß net ob die umgezogen sind, oder ob das Projekt eingestellt wurde. Kenne auch keine so guten Alternativen bisher. Wenn Du winCVS ahben willst, kann ich dir meine Version auch schicken, wenn Du was besseres finden solltest, kannst mir ja Bescheid sagen :)
Klabautermann Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 02.12.02 12:48 
Hallo,
und ein weiteres mal danke.
Ich werde dann wahrscheinlich irgendwann nächste Woche anfangen mir die unterschidlichen Versionen anzusehen (diese Woche ist mal wieder Stress).

Dann kommen vieleicht noch weitere Fragen.

Gruß
Klabautermann
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mo 02.12.02 14:58 
Hiho!

Die neue Adresse ist übrigens : www.wincvs.org

Cu,
Udontknow

Addendum: Unter www.cvsnt.org/ findet man eine Portierung des Servers auf NT/2000 (etc?).
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 02.12.02 18:15 
Danke für den Tipp *g*, man lernt eben nie aus (oder übersieht die wichtigen Dinge im Leben :P )
Klabautermann Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Sa 25.01.03 00:07 
Hallo,

unglaublich aber wahr.
Ich habe heute nach Feierabend tatsächlich die Zeit gefunden mich mal an die Aufgabe: einen CVS-Server aufsetzen zu machen.

Und was soll ich sagen. Es klappte Perfekt.

Ich habe jetzt also meinen eigenen :mrgreen: und auch WinCVS macht einen anständigen Eindruck.

Was ich aber noch nicht ganz durchschaue, ist die Sache mit den Nebenversionen.
Kann mir das jemand anhand dieses Senarios erklähren:
Angenommen ich habe eine Software entwickelt und einen ersten Relase (V1.0) rausgegeben. Natürlich war von Anfang an cer CVS-Server mit im Spiel.
Ich habe das Programm nun weiterentwickelt und schon einige neuerungen eingebaut.
Ein Anwender meldet zu diesen Zeitpunkt einen Bug im Release V1.0.
Wie erstelle ich die Nebenversion V1.01 welche der Version 1.0 entspricht, aber um den Fehler bereinigt ist? Und worauf muss ich achten, dammit mir meine aktuelle Entwicklerversion nicht abhanden kommt?

Danke für die Unterstützung
Klabautermann
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Sa 25.01.03 03:25 
Eigentlich ist es ganz einfach, theoretisch funktioniert es so (habs aber selber noch nicht probiert, mach also zur SIcherheit noch ein Backup eines aktuellen Checkouts).

Als erstes holst Du Dir Deine Version 1.0 als Checkout, das weißte ja, wies geht? Wenn Du die hast, dann kannste über Modify->Create a branch on selection eine Nebenversion erstellen, die kannste dann weiterentwickeln und die Bugs rausmachen. Jetzt kannste die über ein Commit wieder einfügen. und wenn du jetzt ein aktuelles Checkout machst, müsste Deine Standard-Version und zwar die aktuelle dabei rauskommen, nur über den Checkout des Branches kommst Du an Deine Nebenversion.

Ich hoffe das geht so, habs noch net so ganz ausprobiert. Das Problem ist, dass die grafischen Möglichkeiten von WinCVS net so überragend sind :wink:

Gruß und viel Glück
Klabautermann Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Sa 25.01.03 12:56 
Hallo,
UGrohne hat folgendes geschrieben:
Als erstes holst Du Dir Deine Version 1.0 als Checkout, das weißte ja, wies geht?


Um erlich zu sein, ich kriege momentan nicht mal das hin (mit meinem halben Tag erfahrung :roll:). Ich kann mir zwar ein Checkout eines beliebigen Projektes holen, aber wie lege ich die (alte) Version fest?

UGrohne hat folgendes geschrieben:
Wenn Du die hast, dann kannste über Modify->Create a branch on selection eine Nebenversion erstellen,

Anso muss ich wieder die Dateien einzen festlegen? Was passiert mit einer Datei die ich "übersehe", wenn änderungen an dieser vorgenommen werden?

UGrohne hat folgendes geschrieben:
die kannste dann weiterentwickeln und die Bugs rausmachen. Jetzt kannste die über ein Commit wieder einfügen. und wenn du jetzt ein aktuelles Checkout machst, müsste Deine Standard-Version und zwar die aktuelle dabei rauskommen, nur über den Checkout des Branches kommst Du an Deine Nebenversion.
Ich hoffe das geht so, habs noch net so ganz ausprobiert.


Währe schön wenn es so währe. Ich hoffe es auch.

UGrohne hat folgendes geschrieben:
Das Problem ist, dass die grafischen Möglichkeiten von WinCVS net so überragend sind :wink:

Ja, und vor allen dingen immer rein Datei, nicht Projekt, oreinteirt :(.

Danke für die Hilfe.
Klabautermann
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Sa 25.01.03 17:38 
Klabautermann hat folgendes geschrieben:

Ich kann mir zwar ein Checkout eines beliebigen Projektes holen, aber wie lege ich die (alte) Version fest?

Als erstes mal musst Du rausfinden, am besten, wann Du das Release 1.0 eingespielt hast, ich hoffe Du hast Deine Commits sauber kommentiert?

Am besten schnappts Du Dir eine Datei und machst einen Graph. Da kannste dann die einzelnen Revisions einsehen und anklicken und das Datum sehen. Das merkst Du Dir dann.
Dann gehste auf Checkout, gibst das Modul an, gehst auf Checkout Options udn gibst da das Datum an. Danach OK und Du hast theoretisch Deine Version 1.0. Am besten nachprüfen!. Dann musste natürlich Deinen Root-Pfad des MOduls anklicken und erstellst dann einen Branch. Das müsste es dann theoretisch sein.

Klabautermann hat folgendes geschrieben:

UGrohne hat folgendes geschrieben:
Wenn Du die hast, dann kannste über Modify->Create a branch on selection eine Nebenversion erstellen,

Anso muss ich wieder die Dateien einzen festlegen? Was passiert mit einer Datei die ich "übersehe", wenn änderungen an dieser vorgenommen werden?

Wie eben gesagt, klcikste das Hauptverzeichnnis an, dann wird ein Branch für das ganze Projekt erstellt.

Klabautermann hat folgendes geschrieben:

UGrohne hat folgendes geschrieben:
Das Problem ist, dass die grafischen Möglichkeiten von WinCVS net so überragend sind :wink:

Ja, und vor allen dingen immer rein Datei, nicht Projekt, oreinteirt :(.

Ja, die Graphen leider ja. Aber sonst kannst Du das meiste auch projektorientiert machen.

Einfach mal ausprobieren, alle Angaben ohne GEwähr *g*

Gruß