CVS - Begriffe. Einführung in CVS



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

an Hand eines Beispiels Konsole

Software Engineering in der Praxis

Das Concurrent Versions System (CVS)

8. Dokumentenverwaltung mit CVS eine Einführung

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

CVS-Einführung. Sebastian Mancke,

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

WinCVS Version 1.3. Voraussetzung. Frank Grimm Mario Rasser

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

FS cs108 Programmierpraktikum Subversion. Lukas Beck Cedric Geissmann Alexander Stiemer

Versionsverwaltung GIT & SVN. Alexander aus der Fünten. Proseminar: Methoden und Werkzeuge, SS Lehrstuhl i9, Prof. Dr. T.

Einführung in Subversion

Versionsverwaltung mit Mercurial für Einsteiger

Einfu hrung in Subversion mit TortoiseSVN

Sourcecodeverwaltung

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

Kurzanleitung zu. von Daniel Jettka

Concurrent Versions System (CVS)

Subversion. Einstieg in die. Versionskontrolle

Gibt Daten im erweiterten Format aus. Dies beinhaltet die Angabe von Zugriffsrechten, Besitzer, Länge, Zeitpunkt der letzten Änderung und mehr.

Dokumentenverwaltung

SVN Windows Howto. Inhaltsverzeichnis. 1 Revisionsgeschichte

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

Praktikum Ingenieurinformatik (PI)

Team- Entwicklung unter Eclipse

OP-LOG

Versionsverwaltung mit SVN

Versionsverwaltung für die KU Betriebssysteme. Eine Einführung

Artikel Schnittstelle über CSV

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

Wie benutzt man TortoiseSVN

Anleitung für den Zugriff auf Mitgliederdateien der AG-KiM

Moodle aktuell halten mit Git

Versionskontrolle mit Subversion

Dokumentenverwaltung mit CVS eine Einführung

Einführung in Subversion. Tutorium SWP

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

Apache Subversion (SVN)

Bedienungsanleitung. Stand: Copyright 2011 by GEVITAS GmbH

ecaros2 - Accountmanager

SVN-Einführung für das SEP DS und CM. Julian Timpner, Stefan Brenner, Stephan Rottmann

Git II. Dezentrale Versionsverwaltung im Team

Quellcodeverwaltung mit SubVersion

Verteilte Versionskontrolle mit GIT Dortmund Ansgar Brauner - GreenPocket GmbH - Köln

IAWWeb PDFManager. - Kurzanleitung -

Kurzanleitung. Toolbox. T_xls_Import

Subversion als Werkzeug in der Software-Entwicklung Eine Einführung. Tobias G. Pfeiffer Freie Universität Berlin

git Änderungen verwalten mit git

Handbuch ECDL 2003 Basic Modul 3: Textverarbeitung Dokument bearbeiten und speichern

Elexis-BlueEvidence-Connector

dpa-infocom - Datenlieferung

Informations- und Kommunikationsinstitut der Landeshauptstadt Saarbrücken. Upload- / Download-Arbeitsbereich

Simulationsprojekte einfacher mit Subversion und Trac

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Deployment Deployment Seite 1 / 25

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

HSR git und subversion HowTo

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

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Beschreibung der Homepage

Updatehinweise für die Version forma 5.5.5

KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE

Installation Blockdruck WEB. Version 3.1.1

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

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

Softwarewerkzeuge oder Praxis der Softwareentwicklung

Import und Export von Übergängern

25 Import der Beispiele

Enigmail Konfiguration

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

GEONET Anleitung für Web-Autoren

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

DVD Version 9.1. Netzwerkinstallation + VDE-Admin-Tool.

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

Leitfaden Internet-Redaktion kursana.de

ARAkoll 2013 Dokumentation. Datum:

PROJEKTVERZEICHNIS EINRICHTEN

Lehrer: Einschreibemethoden

Software-Engineering Grundlagen des Software-Engineering 7.3 Sourcecode-Verwaltung mit Versionsmanagement-Systemen Einführung in Subversion (SVN)

Informationen zur Verwendung von Visual Studio und cmake

Installationsanleitung Maschinenkonfiguration und PPs

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

Software Qualität Übung 1

Online-Dateienablage und Datenaustauschdienst Box.net Stand: September 2011

Stand: Adressnummern ändern Modulbeschreibung

Revision Control System. Versionskontrolle

SJ OFFICE - Update 3.0

Um über FTP Dateien auf Ihren Public Space Server - Zugang laden zu können benötigen Sie folgende Angaben:

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Hinweise zur Datensicherung für die - Prüfmittelverwaltung - Inhalt

Musterlösung für Schulen in Baden-Württemberg. Windows Basiskurs Windows-Musterlösung. Version 3. Stand:

Prodanet ProductManager WinEdition

SharePoint Workspace 2010 Installieren & Konfigurieren

Zur Bestätigung wird je nach Anmeldung (Benutzer oder Administrator) eine Meldung angezeigt:

Dokumentieren mit Eclipse und Doxygen

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Stapelverarbeitung Teil 1

Transkript:

CVS - Concurrent Versions System Programm zur Versionskontrolle von Quellcode: Alle Versionsstände sind gespeichert. Die Änderungen sind nachvollziehbar. Alte Versionsstände lassen sich zurückholen. Mehrere Entwickler können an einem Projekt gleichzeitig arbeiten. Idee: Aus Archiv holen - Modifizieren - Neue Version in Archiv speichern Archiv CVSROOT Auschecken cvs checkout Einchecken cvs commit Arbeitkopie Ändern, Testen 1

CVS - Begriffe Archiv-Datenbank, Repository, durch $CVSROOT Umgebungsvariable spezifiziert. Revision: Version einer einzelnen Datei. Fortlaufende Nummer, vom System vergeben. Release: Symbolischer Versionsname von mehreren zusammengehörenden Dateien (Projekt). Arbeitskopie: Lokale Kopie, die der Entwickler ändern und testen kann. Jeder Entwickler kann eine oder mehrere Arbeitskopien haben. Checkout: Kopieren, eine Arbeitskopie aus dem Archiv herausholen. Commit: Änderungen an der Arbeitskopie dem Repository mitteilen. Aktualisierung, Update: Änderungen (z.b. von anderen Entwicklern) in die eigene Arbeitskopie aufnehmen. Konflikt - Wenn zwei Entwickler am gleichen Teil einer Datei Veränderungen vornehmen und einchecken. CVS bemerkt solche Konflikte und teilt sie den Entwicklern mit. 2

Revisionen und Releases File A File B File C File D File E ------ ------ ------ ------ ------ 1.1 1.1 1.1 1.1 1.1 ----1.2-.\ 1.2 1.2 ------1.2-. 1.2 1.3 ------1.3---------1.3-1.3 \ 1.3 \ 1.4.-1.4-. 1.4 `-- 1.4--> V_1_0 \ 1.5 / 1.5 \ 1.5 1.5 \ 1.6 / 1.6 1.6 1.6 \ 1.7 / 1.7 1.7 \ 1.8 / 1.8.-1.8--> V_2_1 \ 1.9 / 1.9 / 1.9 `1.10' 1.10 / 1.10 1.11 1.11 1.12 1.13 \ 1.14 \ 1.15 / \ 1.16 / `-1.17-' 3

CVS - Aufruf von der Kommandozeile Befehle für Login Skript [6]user@workstation> setenv CVSROOT :pserver:user@ws-cvs:/path/to/repository Befehle für CVS Sitzung [9]user@workstation> cvs login (Logging in to user@ws-cvs) CVS password: [10]user@workstation> cvs xxxx... [11]user@workstation> cvs yyyy [25]user@workstation> cvs logout (Logging out of user@ws-cvs) 4

CVS-Befehl checkout Syntax: cvs checkout Projektname Extrahiert ein Projekt (Modul) aus dem Archiv und legt eine lokale Arbeitskopie an. Achtung: Das Verzeichnis Projektname samt aller Unterverzeichnisse wird lokal angelegt! Wenn es ein lokales Verzeichnis mit gleichem Namen gibt, werden keine Dateien überschrieben - schon bestehende Dateien und Unterverzeichnisse mit gleichem Namen werden aber bemängelt! > cvs checkout source cvs checkout: in directory source: cvs server: Updating source U source/header.h U source/mod1.c U source/mod2.c U source/mod3.c U source/main.c U source/func.c U source/dbgfunc.c [..]. > 5

CVS-Befehl commit: Syntax: cvs commit -m Änderungskommentar" [Dateiname] Überträgt Änderungen ins Archiv. Falls keine Kommentar angegeben wurde, wird automatisch ein Editor ($EDITOR) geöffnet, in dem eine Mitteilung eingetragen werden sollte! > cvs commit modchanged.c Checking in modchanged.c; /projects/cvs/source/modchanged.c,v <-- modchanged.c new revision: 1.4; previous revision: 1.3 done 6

CVS-Befehle add, remove und release add: remove: release: Fügt eine neue Datei oder ein Verzeichnis hinzu Entfernt einen Eintrag aus dem Archiv - alte Revisionen bleiben aber erhalten! Löschen der Arbeitskopie (vorbereiten) Syntax: cvs add [Dateien]; cvs commit [Dateien] rm [Dateien];cvs remove [Dateien]; cvs commit [Dateien] cvs release [-d] Projektverzeichnis Sowohl bei add als auch bei remove ist es sinnvoll die Dateinamen explizit anzugeben! Release -d löscht (nach Rückfrage) die Arbeitskopie, daher mit Vorsicht anwenden! 7

CVS-Befehle add, remove und release > edit cvs_add_remove_test > cvs add cvs_add_remove_test cvs add: scheduling file `cvs_add_remove_test' for addition cvs add: use 'cvs commit' to add this file permanently > cvs commit -m "Nur ein Test" cvs_add_remove_test > rm cvs_add_remove_test > cvs remove cvs_add_remove_test cvs remove: scheduling `cvs_add_remove_test' for removal cvs remove: use 'cvs commit' to remove this file permanently > cvs commit -m "Dies war nur ein Test" cvs_add_remove_test Removing cvs_add_remove_test; /projects/cvs/source/cvs_add_remove_test,v <-- cvs_add_remove_test new revision: delete; previous revision: 1.1 done > cd.. > cvs release -d serie You have [0] altered files in this repository. cvs release Are you sure you want to release (and delete) directory `serie': y cvs release: no such directory: serie cvs add cvs remove Manuelle Kontrolle, ob wirklich keine Datei verändert wurde bevor ein y (yes) eingegeben wird! 8

CVS-Befehle status und log status: Zeigt den aktuellen Status von Dateien in der Arbeitskopie an log: Gibt History-Daten aus Syntax: cvs status [Dateien] cvs log [Dateien] > cvs status header.h =================================================================== File: header.h Status: Up-to-date Working revision: 1.4 Repository revision: 1.4 /projects/cvs/source/header.h,v Sticky Tag: (none) Sticky Date: (none) Sticky Options: (none) 9

CVS-Befehl log > cvs log header.h RCS file: /projects/cvs/source/header.h,v Working file: header.h head: 1.4 branch: locks: strict access list: symbolic names: REL_3_8_2: 1.4 REL_3_8_0: 1.1.1.1 REL_3_8_1: 1.4 INITIAL: 1.1.1.1 EXT: 1.1.1 keyword substitution: kv total revisions: 5; selected revisions: 5 description: ---------------------------- revision 1.4 date: 2002/08/30 07:58:31; author: user; state: Exp; lines: +8-4 Demo Aenderung ----------------------------... revision 1.1 date: 2002/08/30 06:58:48; author: user; state: Exp; branches: 1.1.1; Initial revision ---------------------------- revision 1.1.1.1 date: 2002/08/30 06:58:48; author: user; state: Exp; lines: +0-0 Initial import ============================================================================= 10

CVS-Befehl tag Syntax: cvs tag [-b] SymbolischerName [Dateien] Gibt einer ausgecheckten Version von Dateien einen symbolischen Namen. Achtung: Dateinamen nur angeben, wenn man expliziert nur diesen Dateien einen Namen zuweisen will. Meist soll aber dem aktuellen Projektzustand (d.h. allen Dateien!) ein symbolischer Name bzw. ein Release Name zugewiesen werden! Die Option -b erzeugt eine Variante (Branch). > cvs tag REL_3_8_2 Mit dem Befehl > cvs checkout -r REL_3_8_2 Projektname kann dann der Projektzustand REL_3_8_2 wiederhergestellt werden. Dieser Befehl setzt aber das Sticky-Tag! Der symbolische Name darf z.b. keine Leerzeichen enthalten! CVS is rather strict about what constitutes a valid tag name. The rules are that it must start with a letter and contain letters, digits, hyphens ("-"), and underscores ("_"). No spaces, periods, colons, commas, or any other symbols may be used. 11

CVS-Befehl update Syntax: cvs update [-r rev] [-D Datum] [-A] [Dateien] Überführt Änderungen aus dem Repository in die Arbeitskopie. Es können aber auch alte Revisionen (Option -r), mit einem symbolischen Namen versehene Projektzustände oder auch Projektzustände von einem Datum überführt werden. Die Option -A setzt Sticky-Tags zurück! Achtung: Wenn man Dateinamen angibt werden nur diese berücksichtigt - ansonsten alle. Gibt man z.b. eine Revision an die es noch nicht gibt, werden diese Dateien aus der Arbeitskopie gelöscht! Standardverwendung > cvs update Alte Versionen herausholen Achtung: CVS setzt das Sticky-Tag bei diesen Befehlen! > cvs update -r REL_3_8_2 > cvs update -D "19 Apr 1999 23:40:30 GMT" Sticky-Tag rückgängig machen > cvs update -A M = modified U = updated C = conflict? = Datei unbekannt 12

Sticky-Tags Bei einem cvs update-befehl auf eine alte Version setzt cvs das Sticky-Tag. Alle Änderungen beziehen sich ab sofort auf die alte Version! Ein cvs update holt nicht mehr die neueste Version heraus! > cvs update -r REL_3_8_1 modchanged.c U modchanged.c > cvs status modchanged.c =================================================================== File: modchanged.c Status: Up-to-date Working revision: 1.2 Repository revision: 1.2 /projects/cvs/source/modchanged.c,v Sticky Tag: REL_3_8_1 (revision: 1.2) Sticky Date: (none) Sticky Options: (none) 13

Branches (Zweige, Varianten) +-------------+ Branch 1.2.2.3.2 ->! 1.2.2.3.2.1! / +-------------+ / / +---------+ +---------+ +---------+ Branch 1.2.2 -> _! 1.2.2.1!----! 1.2.2.2!----! 1.2.2.3! / +---------+ +---------+ +---------+ / / +-----+ +-----+ +-----+ +-----+ +-----+! 1.1!----! 1.2!----! 1.3!----! 1.4!----! 1.5! <- Hauptzweig +-----+ +-----+ +-----+ +-----+ +-----+!!! +---------+ +---------+ +---------+ Branch 1.2.4 -> +---! 1.2.4.1!----! 1.2.4.2!----! 1.2.4.3! +---------+ +---------+ +---------+ Branchnummer: Ungerade Anzahl von Zahlen, letzte Zahl gerade. Revisionsnummer: Gerade Anzahl von Zahlen. 14

Branches bearbeiten Mit dem cvs tag-befehl kann man Branches erzeugen. Mit dem folgenden Befehl wird ein Branch der Arbeitskopie erzeugt. > cvs tag -b REL_3_8_1_PATCH1 Mit der Arbeitskopie auf den Branch setzen: > cvs update -r REL_3_8_1_PATCH1 Branch und Hauptzweig zusammenführen (Join) > cvs update -r HEAD... > cvs update -j REL_3_8_1_PATCH1 header.h RCS file: /projects/cvs/source/header.h,v retrieving revision 1.4 retrieving revision 1.4.2.1 Merging differences between 1.4 and 1.4.2.1 into header.h rcsmerge: warning: conflicts during merge Warnungen nur bei überlappenden Textbereichen, sonst nicht! 15

CVS-Befehl import Syntax: cvs import Projekt VendorTag ReleaseTag Importiert Quellcode eines externen Softwareherstellers ins Repository. Alle Dateien des aktuellen Verzeichnisses werden in einen Branch (1.1.1) ins Repository geschrieben. Neue Releases des Herstellers können unter Angabe eines anderen Release Tags in den gleichen Branch importiert werden. Diese Releases können mit Hilfe des Release Tags wie normale Releases bearbeitet werden. Auschecken, Zusammenführen,... Mit CVS können auch verschiede Hersteller verwaltet werden. Einzelheiten stehen in der CVS Dokumentation. 16

CVS - Beispiel zwei Entwickler > cvs status header.h ====================================== File: header.h Status: Up-to-date Working revision: 1.6... > edit header.h > cvs commit header.h Checking in header.h; /projects/cvs/source/header.h,v <-- header.h new revision: 1.7; previous revision: 1.6 done > cvs status header.h ====================================== File: header.h Status: Up-to-date Working revision: 1.6 Repository revision: 1.6 /projects/cvs/source/header.h,v Sticky Tag: (none) Sticky Date: (none) Sticky Options: (none) > edit header.h > cvs update header.h RCS file: /projects/cvs/source/header.h,v retrieving revision 1.6 retrieving revision 1.7 Merging differences between 1.6 and 1.7 into header.h rcsmerge: warning: conflicts during merge cvs server: conflicts found in header.h C header.h 17

CVS - Beispiel zwei Entwickler In der Datei wird der überlappende Teil als Konflikt markiert. <<<<<<< header.h /* Überlappender Bereich Entwickler2 */ ======= /* Überlappender Bereich Entwickler1 */ >>>>>>> 1.7 Der nicht überlappende Teil wird stillschweigend zusammengemischt! Nach Beseitigung der Konflikte kann commit durchgeführt werden. 18

Was CVS nicht kann CVS erstellt keine Datei- und Verzeichnisstruktur. CVS gibt nicht vor, wann commit oder tag durchgeführt werden. CVS ersetzt keine Entwicklerabsprachen. Die Konfliktanzeige basiert auf reiner Textverarbeitung. Logische Konflikte werden nicht erkannt. CVS hat keinen eingebauten Workflow (Freigabe, Testverfahren). CVS kennt keine Projektverwaltung (Meilensteine, Terminverfolgung). CVS verwaltet Änderungen an Software. Die Gründe für diese Änderungen (neue Anforderungen, Fehlerbehebung,...) werden nicht verwaltet. 19

CVS-Keywörter $Author$, $Date$, $Header$, $Id$, $Log$, $Name$, $Revision$ Werden beim Einchecken ins Repository ersetzt/expandiert: $Author: user $ $Date: 2002/09/20 10:08:29 $ $Revision: 1.4 $ $Log: modchanged.c,v $ Revision 1.4 2002/09/20 10:08:29 user Doxygen Kommentare ergänzt Revision 1.3 2002/09/12 11:47:36 user Wichtige Änderung eingefügt Revision 1.2 2002/09/04 12:41:24 user Wenn der Parameter 'Nachmessen' geaendert wird, wird die Funktion NachmessMode(int mode) aufgerufen. mode = 1 : Nachmessmode mode = 0 : kein Nachmessmode 20

CVS-Umgebungsvariablen $CVSROOT: Verweist auf das Archiv. Durch ändern von CVSROOT kann der Nutzer auf ein anderes Archiv zugreifen $CVSEDITOR, $VISUAL und $EDITOR: Editor zur Eingabe Mitteilungen $CVSIGNORE: Namen von Dateien bzw. Wildcards die von CVS ignoriert werden sollen 21

CVS Befehle cvs checkout Projektname cvs update Holt die Quellen eines Software Projekts aus dem Repository. Legt lokal ein Unterverzeichnis mit Projektname an. Überführt Änderungen aus dem Repository in die Arbeitskopie und zeigt eigene Änderungen an. cvs commit Datei Überführt eigene Änderungen in Repository. cvs import Projektname Vendor-Tag Release-Tag cvs tag Name Importiert Quellcode erstmalig ins Repository. Gibt einem Softwarestand einen symbolischen Namen. 22

CVSweb Web Frontend für lesenden Zugriff auf ein Repository Alle Dateien eines Projekts zum Browsen Status- und Log-Informationen Diffs zwischen beliebigen Versionen, als HTML aufbereitet 23