Difference between revisions of "CVS"

From Dietrich Blog (Strato)
Jump to: navigation, search
(Replaced content with "Has been moved to: http://blog.kr8.de/wiki-cvs/")
 
Line 1: Line 1:
--> blog.kr8.de
+
Has been moved to: http://blog.kr8.de/wiki-cvs/
= CVS Concurrent Versions System =
 
CVS ist der Klassiker für [[VersionControl]]: http://www.cvshome.org
 
 
 
== Meine Anforderungen ==
 
* Lauffähig auf einem Windows-Entwicklungsrechner  mit geringstem Aufwand und möglichst "leichtgewichtig"
 
* [[OpenSourceSoftware]] bzw. GNU GPL bzw. geringe Kosten und hohe Verbreitung
 
 
 
== CVS-Server ==
 
Möchte im ersten Schritt noch garnicht einsetzen. Es soll ein lokales CVS-Repository auf meinem Windows-Notebook sein, nur für mich allein. <br />
 
<i>Da [[Eclipse]] anscheinend nicht mit :local: arbeitet, sondern :pserver: benötigt, habe ich zu guter Letzt (s.u.) doch noch den [[CVSNT]]-Server installiert.</i>
 
 
 
== CVS-Client ==
 
Die Mainstream-Lösungen sind:
 
<dl>
 
<dt>WinCVS:<dd>war mir schon von der Software-Architektur zu aufwendig und nicht in Übereinstimmung mit meiner Architektur (Python, Tcl, GTK).<br /> http://www.wincvs.org
 
<dt>[[TortoiseCVS]]:<dd>Eine ganz schlanke Windows-Lösung, die nur auf C++ basiert und sich sehr schön in den Windows Explorer integriert. Wirklich leicht zu benutzen. Basiert auf dem Code von WinCVS, ist aber nicht so komplex.<br /> http://www.tortoisecvs.org/
 
<dt>[[Eclipse]]:<dd>Muss man sich wohl in diesem Jahr genauer anschauen. Das scheint die Zukunft zu sein.<br /> http://www.eclipse.org
 
</dl>
 
 
 
== CVS-Server für Windows: CVSNT ==
 
Neben der Möglichkeit einen CVS-Server auf Windows über [[Cygwin]] zu realisieren, gibt es eine sehr gute Portierung auf WinNT (Windows 2000,...) [[CVSNT]]. Es gibt ganz ausführliche Schritt-für-Schritt-Beschreibungen für die Installation von CVSNT (was auch nötig ist, da es einige Fallstricke gibt).
 
 
 
== Meine CVS Projekte (CVS Module) ==
 
{| class=wikitable
 
|-
 
| Name || Pfad
 
|-
 
| Apache || D:\Programme\Apache
 
|-
 
| Backup || ...
 
|-
 
| diverses || ...
 
|-
 
| docbook || ...
 
|-
 
| Dokumente und Einstellungen || ...
 
|-
 
| etc || ...
 
|-
 
| faulkner.kr8.de || ...
 
|-
 
| ... || ...
 
|-
 
| jobs || e:\var\jobs
 
 
 
|}
 
 
 
== CVS Lektion 1: Anlegen und Füllen eines CVS-Repositories ==
 
Das '''cvs.exe''' (mitgeliefert von [[ZeusEdit]], [[TortoiseCVS]] oder [[CVSNT]]) sollte im PATH sein (also: \Programme\ZeusSCC-CVS oder \Programme\TortoiseCVS oder ...). Es wird einerseits intern von dem jeweiligen SCC-Provider verwendet, andererseits kann es als Kommandozeilen-CVS-Utility unter Windows eingesetzt werden, um z.B. Das CVS-Repository per Hand aufzubauen.
 
 
 
'''Schritt 1: Initialisieren eines CVS-Repository'''
 
<pre>
 
cvs -d:local:d:\home\cvsroot init
 
</pre>
 
Damit man für das weitere Arbeiten mit CVS nicht immer den Parameter '''-d:local:d:\home\cvsroot''' angeben muss, setzten wir die dafür vorgesehene Environment-Variable: '''SET CVSROOT=:local:d:\home\cvsroot'''.
 
 
 
'''Schritt 2: Dateien in ein CVS-Repository einstellen ("importieren")'''
 
<pre>
 
d:
 
cd \home\kracht\www\dietrich.kracht.free.fr\rolodap (genannt "Arbeitsverzeichniss")
 
cvs import -m"trallala" -d -C rolodap  LONZO V1_00
 
</pre>
 
Damit wird das aktuelle Verzeichnis mit allen Dateien und Unterverzeichnissen unter dem CVS-Modulnamen "rolodap" in das CVS-Repository gestellt. Umgangssprachlich nennt man "CVS-Module" auch gerne "CVS-Projekte".
 
Das "-d" sorgt dafür, dass das Archivierungsdatum aus dem Filedatum genommen wird, und das "-C" sorgt dafür, dass in das Arbeitsverzeichnis interne Verwaltungsinformationen für CVS gleich mitaufgenommen werden (versteckter Ordner CVS).
 
 
 
'''Das Riesenproblem mit diesem  CVS IMPORT ist, dass Binär-Dateien dadurch zerstört werden (z.B. GIF, JPG,...).'''
 
 
 
Wenn man das nicht alles in einem Rutsch tun möchte, kann man es auch einzeln Schritt für Schritt tun (s.u.).
 
 
 
'''Schritt 3: Ein leeres CVS-Modul erstellen'''
 
<pre>
 
mkdir xyz
 
cd xyz
 
cvs import rolodap LONZO V1_00
 
cd ..
 
rmdir xyz
 
</pre>
 
Damit wird im CVS-Repository ein neues Modul names '''rolodap''' angelegt einschliesslich aller im Repository nötigen CVS-Files (z.B. .owner).
 
 
 
Nun muss ich für jedes CVS-Modul ein CVS-Arbeitsverzeichnis (sog. Sandbox) aufbauen mit "cvs checkout ...".
 
Danach kann ich meinem CVS-Modul gezielt Dateien und Unterverzeichnisse (nur aus dem CVS-Arbeitsverzeichnis) mit "cvs add ..." hinzufügen.
 
 
'''Schritt 4: Eine CVS-Sandbox erstellen'''
 
<pre>
 
d:
 
cd \home\kracht\www\dietrich.kracht.free.fr
 
cvs checkout rolodap
 
</pre>
 
Damit wird  \home\kracht\www\dietrich.kracht.free.fr\rolodap eine CVS-Sandbox für das CVS-Modul "rolodap". Wir sehen das daran, dass ein verstecktes Unterverzeichnes namens "CVS" angelegt wurde.
 
 
 
Weil im CVS nicht mit "Locks" gearbeitet wird, benötigt jeder User ständig seine "Work Directories". In den versteckten CVS-Unterverzeichnissen jeder Sandbox speichert sich das CVS-System die nötige Verwaltungsinformation.
 
 
 
Der Verzeichnisname der CVS-Sandbox ist als identisch mit dem Modulnamen im CVS-Repository. Wenn man da besondere Wünsche für den Sandbox-Namen hat, muss man sich das schon beim Erstellen des CVS-Moduls überlegen.
 
 
 
Wenn die als Sandbox verwendeten Verzeichnisse nicht leer sind (macht man gerne am Anfang), erscheinen Warnmeldungen.
 
 
 
'''Schritt 5: Einzelne Inhalte der CVS-Sandbox ins CVS-Repository stellen'''
 
<pre>
 
d:
 
cd \home\kracht\www\dietrich.kracht.free.fr\rolodap
 
cvs add index.php (ggf.  -b für binary, oder gleich TortoiseCVS nehmen)
 
cvs commit
 
</pre>
 
Ebenso können Unterverzeichnisse der CVS-Sandbox in das CVS-Repository gestellt werden. <br />
 
'''Wichtig im CVS:''' Eine CVS-Sandbox ist immer ein Ordner mit seiner Unterstruktur, wobei Teile der  Sandbox ignoriert werden können. Ich mass also alles was zu meinem "Projekt" gehört, in so einer Sandbox unterbringen. Die CVS-Sandbox entspricht dann spiegelbildlich einem CVS-Modul.<br />
 
Ich kann keine Dateien, die "neben" der CVS-Sandbox stehen in das CVS-Modul einchecken. Jedes "Projekt" muss also hierarchisch strukturiert sein! 
 
 
 
Der '''cvs checkout''' arbeitet mit dem im Environment-Parameter "CVSROOT" eingestellten Repository. In diesem Falle ein privates CVS-Repository im lokalen Dateisystem meines Notebook-Computers. Genauso kann man sich aber auch ein CVS-Modul aus einem externen CVS-Repository holen:
 
<pre>
 
cvs -d:pserver:anoncvs@cvs.apache.org:/home/cvspublic checkout ant
 
</pre>
 
 
 
 
 
-- Main.DietrichKracht - 16 May 2004
 

Latest revision as of 12:26, 21 April 2020

Has been moved to: http://blog.kr8.de/wiki-cvs/