an Hand eines Beispiels Konsole



Ähnliche Dokumente
CVS. The open standard for version control. (Concurrent Versions System) Maik Zemann CVS

Anleitung über den Umgang mit Schildern

WinCVS Version 1.3. Voraussetzung. Frank Grimm Mario Rasser

SFTP SCP - Synology Wiki

Software Engineering in der Praxis

8. Dokumentenverwaltung mit CVS eine Einführung

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

AutoCAD Dienstprogramm zur Lizenzübertragung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

SharePoint Workspace 2010 Installieren & Konfigurieren

Inhaltsverzeichnis. 1 Einleitung. Literatur. 1.1 CVS (Concurrent Version System) [Pru03, Zee02, Ced05]

Alle alltäglichen Aufgaben können auch über das Frontend durchgeführt werden, das in den anderen Anleitungen erläutert wird.

Geschrieben von: Stefan Sonntag, den 26. Juni 2011 um 09:45 Uhr - Aktualisiert Sonntag, den 26. Juni 2011 um 10:12 Uhr

git & git-flow Jens Sandmann Warpzone Münster e.v. Jens Sandmann (WZ) git & git-flow / 31

OP-LOG

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Einfu hrung in Subversion mit TortoiseSVN

Wie halte ich Ordnung auf meiner Festplatte?

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Proseminar Unix-Tools CVS Daniel Weber & Zhen Zhang Betreuer: Volker Baier

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

PROJEKTVERZEICHNIS EINRICHTEN

Was meinen die Leute eigentlich mit: Grexit?

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Die Projek*ools. Files, Git, Tickets & Time

Team- Entwicklung unter Eclipse

Einführung in Subversion

Fotostammtisch-Schaumburg

Leichte-Sprache-Bilder

Sourcecodeverwaltung

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

News & RSS. Einleitung: Nachrichten er-(veröffentlichen) und bereitstellen Nachrichten erstellen und bereitstellen

Kurzanleitung zu. von Daniel Jettka

Erstellen der Barcode-Etiketten:

Arbeiten mit UMLed und Delphi

Handbuch B4000+ Preset Manager

Internet online Update (Mozilla Firefox)

Tutorial -

Moodle aktuell halten mit Git

Professionelle Seminare im Bereich MS-Office

Internet online Update (Internet Explorer)

! " # $ " % & Nicki Wruck worldwidewruck

Anleitung für das Content Management System

Versionsverwaltung mit SVN

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

ACDSee Pro 2. ACDSee Pro 2 Tutorials: Übertragung von Fotos (+ Datenbank) auf einen anderen Computer. Über Metadaten und die Datenbank

Hex Datei mit Atmel Studio 6 erstellen

Wie benutzt man TortoiseSVN

Print2CAD 2017, 8th Generation. Netzwerkversionen

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Mercurial. or how I learned to stop worrying and love the merge. Ted Naleid IAIK

WordPress lokal mit Xaamp installieren

Was man mit dem Computer alles machen kann

Kurzeinführung Excel2App. Version 1.0.0

Apache Subversion (SVN)

Zimmertypen. Zimmertypen anlegen

Agentur für Werbung & Internet. Schritt für Schritt: Newsletter mit WebEdition versenden

Urlaubsregel in David

Lizenzen auschecken. Was ist zu tun?

Anleitung: Webspace-Einrichtung

IAWWeb PDFManager. - Kurzanleitung -

TYPO3-Zusatzkurs für

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

DER WING COMMANDER CD³² GUIDE

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Bilder zum Upload verkleinern

Serviceanweisung Austausch Globalsign Ausstellerzertifikate

Dokumentenverwaltung im Internet

GeoPilot (Android) die App

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Windows 7 Firewall Regeln über die Registry

Fülle das erste Bild "Erforderliche Information für das Google-Konto" vollständig aus und auch das nachfolgende Bild.

Hardware - Software - Net zwerke

Einfügen von Bildern innerhalb eines Beitrages

Speichern. Speichern unter

FTP-Server einrichten mit automatischem Datenupload für

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Serienbriefe mit Word. [Geben Sie den Untertitel des Dokuments ein] Computeria Rorschach

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Tutorial: Erstellen einer vollwertigen XP Home CD aus der EEE 901 Recover DVD

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Artikel Schnittstelle über CSV

Ordner und Laufwerke aus dem Netzwerk einbinden

Erstellen einer digitalen Signatur für Adobe-Formulare

Das Concurrent Versions System (CVS)

Handbuch für Easy Mail in Leicht Lesen

Computerstammtisch Tegernau, Tutorial Grundlagen, Dateioperationen, Datensicherung (Screenshots und Erläuterungen beziehen sich auf Windows 7)

Die Captimizer BTZ-Datei 2015

BEDIENUNG ABADISCOVER

Eprog Starthilfe. 5. Oktober Einleitung 2

Eigene Seiten erstellen

Enigmail Konfiguration

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

WOT Skinsetter. Nun, erstens, was brauchen Sie für dieses Tool zu arbeiten:

Lieber SPAMRobin -Kunde!

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Transkript:

Versionskontrolle an Hand eines Beispiels Konsole 1 / 14 PAUL SCHEREMET

Inhaltsverzeichnis Einleitung 3 Das Repository anlegen (init) 4 Das erste Modul importieren (import) 5 Module auschecken (checkout / co) 6 Module einchecken (commit) 7 Dateien zu einem Modul hinzufügen (add & commit) 8 Datei aus einem Modul entfernen(remove & commit) 9 Änderungen zum Repository anzeigen 10 Konflikte beim Einchecken 11 Konflikte lösen 11 Gewisse Dateien nicht versionieren (.cvsignore) 12 In der History zurück gehen 13 Quellenangaben 14 2 / 14 PAUL SCHEREMET

Einleitung Wer im Team an einem Projekt arbeitet, mit mehreren Rechnern zu tun hat, an großen Projekten beteiligt ist, oder gar alles auf einmal, wird nur in wenigen Fällen das direkte Arbeiten am Quellcode als die wahre Lösung ansehen. In aller Regel startet das Projekt mit einem kleinen Verzeichnisbaum, der dann die Grundlage bildet. Diesen Verzeichnisbaum hegen und pflegen zulernen ist Ziel dieses kleinen Tutorials. Auch wenn ihr das nicht auf uranus2.fh-weingarten.de machen sollt, schildere ich den Ablauf mal so, als wär dieser Server der Garten eures Verzeichnisbaums (später sagen wir zum Garten Host und zum Verzeichnis baum Repository) CVS IST AUF URANUS2.FH-WEINGARTEN.DE NICHT EINGERICHTET UND SOLLTE DAHER DARAUF AUCH NICHT VERWENDET WERDEN! Solltet ihr irgendeinen anderen Server der FH benutzen wollen, denkt daran, dass ihr dafür entsprechende Tunnel graben müsst, da seit April 2005 SSH nur noch über besagten Server von Zuhause aus funktioniert. Am besten, ihr fragt einen Kommilitone, ob er einen privaten Server hat, o.ä. und packts dort drauf. Viel Spaß und Erfolg im Projekt, Paul Scheremet 3 / 14 PAUL SCHEREMET

Das Repository anlegen (init) Meldet euch auf dem Server an einer (SSH-)Konsole an. Mit Hilfe der folgenden Befehle wird der Pfad für das Repository erzeugt: > cd ; cd PUB/Stud/Stud/sysop/ > ls Gruppe99 ; # darf noch nicht vorhanden sein! ls: Gruppe99: Datei oder Verzeichnis nicht gefunden > mkdir Gruppe99 ; # X: Nummer von oben Jetzt können wir das Repository anlegen: > export CVSROOT=:local:~/PUB/Stud/Stud/sysop/Gruppe99 > cvs init Damit ist der Garten geschaffen. Was da ab ging: eigentlich noch gar nicht so arg viel, aber absolut notwendig. Ab sofort könnt ihr Module in euern Repository stellen. Und wie das geht seht ihr nächste Woche auf der nächsten Seite. 4 / 14 PAUL SCHEREMET

Das erste Modul importieren (import) Zunächst erzeugen wir uns ein Verzeichnis mit den ersten Dateien: > cd ; mkdir sysop ; cd sysop ; mkdir src > cd src ; mkdir server ; cd server > touch server.c ; touch server.h Jetzt setzen wir sie als erstes Modul in unser Repository: > export CVSROOT=:local:~/PUB/StudStud/Sysop-Gruppe1 > cvs import -m "Initial import" sysop/server gruppe99 start N sysop/server/server.c N sysop/server/server.h No conflicts created by this import Was da ab ging: -m "Initial import": Kommentar, angeben, sonst kommt ein Texteditor. sysop/server: die Dateien landen in $CVSROOT/sysop/server/... gruppe99: Angabe zum Ersteller (Vendor) start: Name der Veröffentlichung (Release) No conflicts created by this import: WICHTIG, sollte hier etwas anderes stehen, seid ihr in diesem Verzeichnis garantiert nicht alleine. HINWEIS: Module in CVS sind nicht das selbe wie in C! (es können beliebige Dateien in einem gemeinsamen Verzeichnis oder Unterverzeichnissen sein) Schauen, obs getan hat: Dazu checken wir das Modul aus (siehe nächste Seite)... 5 / 14 PAUL SCHEREMET

Module auschecken (checkout / co) Modul vom Repository lesen und in ein Verzeichnis ablegen: > cd../.. ; mv sysop/ sysop-old/ > cvs checkout sysop/server cvs checkout: Updating sysop/server U sysop/server/server.c U sysop/server/server.h > ls -lr./sysop: insgesamt 8 drwxr-xr-x 2... stud 4096 2005-05-03 10:49 CVS drwxr-xr-x 3... stud 4096 2005-05-03 10:49 server./sysop/cvs: insgesamt 12 [...] -rw-r--r-- 1... stud 6 2005-05-03 10:49 Repository -rw-r--r-- 1... stud 56 2005-05-03 10:49 Root./sysop/server: insgesamt 40 drwxr-xr-x 2... stud 4096 2005-05-03 10:49 CVS -rw-r--r-- 1... stud 1593 2005-05-03 10:37 server.c -rw-r--r-- 1... stud 1536 2005-05-03 10:37 server.h./sysop/server/cvs: insgesamt 12 [...] -rw-r--r-- 1... stud 56 2005-05-03 10:49 Root Wenn alles gut ging: rm -R sysop-old/ Was da ab ging: - Original Verzeichnis umbenannt - Modul ausgecheckt - Ergebnis betrachtet - Wenn alles gut ging das Original löschen 6 / 14 PAUL SCHEREMET

Module einchecken (commit) Quellcode abändern: Bearbeite oder ersetze eine Datei, z.b. server.c > cd sysop/server/ ; nano server.c Änderungen einchecken: > cvs commit -m "Code-cosmetics" server.c /home/stud/[...]/stud/stud/sysop/gruppe99/sysop/server/server.c,v <-- server.c new revision: 1.2; previous revision: 1.1 WICHTIG: -m "Kommentar" angeben, sonst kommt wieder der Editor :-( Was da ab ging: - Die Datei wurde verändert - CVS erhielt die neue Version und stellte keine Konflikte fest Die Datei hat eine neue Revision (hier: 1.2) die der nächste User auschecken wird 7 / 14 PAUL SCHEREMET

Dateien zu einem Modul hinzufügen (add & commit) Datei anlegen und hinzufügen: > cd sysop/server/ > touch server_signal_handling.c > cvs add server_signal_handling.c cvs add: scheduling file `server_signal_handling.c' for addition cvs add: use `cvs commit' to add this file permanently > cvs commit -m "add signal support" cvs commit: Examining. [...]/PUB/Stud/Stud/[...]/server_signal_handling.c,v <-- server_signal_handling.c initial revision: 1.1 Was da ab ging: - touch legt eine neue Datei an - CVS erhielt die Benachrichtigung über cvs add - cvs commit teilt CVS den Inhalt der Datei mit. - Die Datei hat die Revision 1.1 - -m Kommentar": notwendig, weil sonst Editor aufgeht 8 / 14 PAUL SCHEREMET

Datei aus einem Modul entfernen(remove & commit) Datei entfernen: > cd sysop/server/ > rm server_signal_handling.c > cvs remove server_signal_handling.c cvs remove: scheduling `server_signal_handling.c' for removal cvs remove: use `cvs commit' to remove this file permanently > cvs commit -m "remove signal support" cvs commit: Examining. [...]/PUB/Stud/Stud/[...]/server_signal_handling.c,v <-- server_signal_handling.c new revision: delete; previous revision: 1.1 Was da ab ging: - zuerst die Datei löschen, sonst schlägt cvs remove fehl - CVS erhält die Benachrichtigung über cvs remove - cvs commit löscht die Datei schließlich - Die Datei bekommt die Revision delete - -m Kommentar": notwendig, weil sonst Editor aufgeht 9 / 14 PAUL SCHEREMET

Änderungen zum Repository anzeigen Datei entfernen: > cd sysop/server/ > vi server.c > cvs diff server.c Index: server.c =================================================================== RCS file: /home/stud/[...]/pub/stud/stud/sysop/gruppe99/sysop/server/server.c,v retrieving revision 1.3 diff -r1.3 server.c 4c4 < int delay = 0, status;; --- > int delay = 0, status; Was da ab ging: - zuerst die Datei bearbeiten - mit Hilfe von cvs diff die Änderungen abfragen - es wurden keine Veränderungen am Repository, sondern nur an der lokalen Kopie durchgeführt 10 / 14 PAUL SCHEREMET

Konflikte beim Einchecken Zwei unterschiedliche Stände erzeugen: ~$ mkdir test test1 ~$ cd ~/test1 ~/test1$ cvs co sysop/server [... Ausgabe von cvs co...] ~/test1$ cd sysop/server/ ~/test1/sysop/server$ nano server.c ~/test1/sysop/server$ cvs commit -m "Kommentar hier" server.c /home/stud/[...]/stud/stud/sysop/gruppe99/sysop/server/server.c,v <-- server.c new revision: 1.4; previous revision: 1.3 ~/test1/sysop/server$ cd ~/test ~/test$ cvs co sysop/server [... Ausgabe von cvs co...] ~/test$ cd sysop/server/ ~/test/sysop/server$ nano server.c ~/test/sysop/server$ cvs commit -m "Kommentar dort" server.c cvs commit: Up-to-date check failed for `server.c' cvs [commit aborted]: correct above errors first! Solche Konflikte entstehen dadurch, dass mindestens zwei Zustände die selbe Zeile verändern. Konflikte lösen Derjenige, der mit dem Konflikt konfrontiert wird, ist nun gefordert, seinen Quellcodeteil so weit abzuändern, dass das Mergen erfolgreich ist. Zur Not könnt ihr auch die fragliche Datei zwischenspeichern, zur aktuellen serverseitigen Version wechseln (siehe unten) und dann Zeile für Zeile anpassen. 11 / 14 PAUL SCHEREMET

Gewisse Dateien nicht versionieren (.cvsignore) Einige Dateien wollt ihr vielleicht nicht ins CVS mit aufnehmen, aber im selben Verzeichnis speichern, z.b. eine speziell für euren Computer geänderte Konfigurationsdatei. Diese Datei würde bei einem cvs update überschrieben werden. Damit das nicht passiert, kennt CVS eine Dateiliste, welche Dateien übersprungen werden sollen. Diese Liste besteht bereits auf den folgenden Mustern: RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS.make.state.nse_depinfo *~ #*.#*,* _$* *$ *.old *.bak *.BAK *.orig *.rej.del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core Mit folgenden Möglichkeiten könnt ihr noch mehr definieren: $CVSROOT/CVSROOT/cvsignore.cvsignore in eurem Heimatverzeichnis (~/).cvsignore in einem Verzeichnis eures Projektes Umgebungsvariable $CVSIGNORE -I als Kommandozeilenparameter zu cvs hierbei ist noch zu beachten: wenn ihr ein! einbaut, löscht das eure Liste bis dorthin.cvsignore-einträge in einem Verzeichnis eures Projektes sind auch an dieses Verzeichnis gebunden 12 / 14 PAUL SCHEREMET

In der History zurück gehen > cd sysop/server/ > cvs update -j 1.2 -j 1.1 server.c RCS file: /home/stud/.../pub/stud/stud/sysop/gruppe99/sysop/server/server.c,v retrieving revision 1.2 retrieving revision 1.1 Merging differences between 1.2 and 1.1 into server.c cvs commit -m "back to Revision 1.1" server.c [...]/PUB/Stud/Stud/[...]/server.c,v <-- server.c new revision: 1.3; previous revision: 1.2 Wenn Ihr so etwas tut, denk daran, dass ihr stehts die Versionen der einzelnen Dateien beachten müsst, weil ein Verzeichnis Dateien mit unterschiedlichen Versionen beinhalten kann. dass ihr die Änderungen im Anschluss wieder committen müsst -m angeben, falls ihr keinen Editor wollt 13 / 14 PAUL SCHEREMET

Quellenangaben Informationen: http://www.gnu.org/software/cvs/manual/html_mono/cvs.html Bilder: http://images-eu.amazon.com/images/p/b00008w68y.03.lzzzzzzz.jpg http://lifewithalacrity.blogs.com/photos/uncategorized/evolution.jpg http://www.biosphaerenreservat-rhoen.de/images/bilder/quelle.jpg http://www.fontcraft.com/scriptorium/ezinit4.gif http://www.cortinamclaren2dr.mk3cortina.com/images/engine-start-button.jpg http://home.arcor.de/derfetzer/palm/dbeditor_import.png http://www.central-kino.de/gifs/baustelle.gif http://www.penwill.com/th1/tidy.gif http://www.ferdility.de/catalog/images/big/01-1109.jpg http://www.jsr-schindler.de/schaufel.gif http://www.lizenzfreie-bilder-cds.de/galery/data/display/muelleimer-symbol-1088074276.jpeg http://hypo.ge-dip.etat-ge.ch/www/math/gif/puzzle.gif http://www.waynecounty.com/coalitiontochangetheculture/imgs/conflict.jpg http://www.richtervideos.com/images/keepout.gif 14 / 14 PAUL SCHEREMET