Adios CVS! Markus Schade

Ähnliche Dokumente
Versionsverwaltung. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2009

Versionskontrolle mit Subversion

Versionsverwaltung. Seminar Softwareentwicklung in der Wissenschaft Robert Wiesner

Versionsverwaltung mit SVN

Crashkurs Subversion / Trac / Provisioning. Jan Zieschang, , Berlin

Einführung in Subversion

Versionskontrollsysteme. Uwe Berger & Markus Dahms <bralug@bralug.de>

Software Engineering in der Praxis

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

Software(technik)praktikum: SVN-Tutorial

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

Tool-Chain. Übung. Eclipse, SVN, Ant, Cobertura, Metrics Labor "Software Engineering Experiment" Sebastian Meyer und Kai Stapel

Einführung in Subversion

Subversion. Einstieg in die. Versionskontrolle

Versionierung und Dateistruktur

Versionsverwaltung mit Mercurial für Einsteiger

Einführung in Git. Dirk Deimeke. 19. August My own IT. ddeimeke (My own IT) Einführung in Git 19. August / 23

Versionsmanagement mit Subversion

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

Git-Grundlagen für Entwickler. Thomas Claudius

Thomas Rau (mit Material von Peter Brichzin) Repositories zur Unterstützung von kollaborativen Arbeiten in Softwareprojekten

Klicken Sie, um das Format des Titeltextes zu bearbeiten

Einführung in Git. master. Initial commit

Software Engineering in der Praxis

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

Linux Cafe Referent: Bernd Strößenreuther

Vorlesung Programmieren. Versionskontrollsysteme. Ziele von VCS. Versionskontrolle

Einführung in Subversion. Tutorium SWP

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

Prof. Dr. Marko Boger. Prof. Dr. Christian Johner. Versionsmanagement

Versionskontrolle mit Subversion

Versionskontrolle: Subversion und Git

Semesterprojekt Entwicklung einer Suchmaschine für Alternativmethoden zu Tierversuchen. Versionierung und Bugtracking mit GitHub

Versionierung und Bugtracking mit Git(Hub)

Versionsverwaltungssysteme

Versionsverwaltung mit Subversion

Subversion. von Stefan Arndt, Christian Autermann und Dustin Demuth. 5. November 2009

Versionsverwaltung für r Visual Studio.NET mit Subversion

FS cs108 Programmierpraktikum Subversion. Lukas Beck Cedric Geissmann Alexander Stiemer

Enes Kurnaz, Oliver Nagel Institut für Mathematik und Informatik. Versionsverwaltung mit Git

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

Praktikum Ingenieurinformatik (PI)

Einführung in Verteilte Versionskontrollsysteme. am Beispiel von Git

Von SVN zu Git. Daniel Willmann cbna

Medieninformatik Praktikum. Jens Rademacher

Enterprise PHP Tools

Torsten Flatter inovex GmbH. "Git.NET" gibt's nicht?

Versionsverwaltung mit git. Christoph Knabe FB VI

Subversion - Versionsverwaltungssystem

DOKUMENTATION UND KOMMUNIKATION IN IT- FORSCHUNGSPROJEKTEN

Frank Budszuhn. Subversion ~ --.. Galileo Press

... Vorwort Vorwort zur 2. Auflage Vorwort zur 3. Auflage Der Autor... 17

Git - Fast Version Control System

Subversion und Trac. Michael Trunner. 23. Januar Fachschaft Informatik und Softwaretechnik Universität Stuttgart

Migration von Subversion nach Mercurial und Einsatz dezentraler Versionskontrolle in Unternehmen

Java User Group München

git Änderungen verwalten mit git

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

Kurzanleitung Eclipse

Einführung in Subversion

Subversion. Quellcodeverwaltung a la Opensource. Matthias Fischer. Technical Expert.NET Tieto, JOSI / Microsoft Matthias.Fischer@tieto.

Versionsverwaltung mit git

Apache Subversion (SVN)

Versionskontrolle mit Subversion

git verteilte Versionskontrolle

Git II. Dezentrale Versionsverwaltung im Team

Versionskontrolle. Verteilte Versionskontrollsysteme. Richard Madsack. 25. November Versionskontrolle. Richard Madsack.

Software Configuration Management (SCM)

Einführung Git Interna Workflows Referenzen. Git. Fast Version Control System. Michael Kuhn

Transkript:

Adios CVS! Markus Schade

Agenda Warum wecheln Überblick Subversion Neuerungen in Release 1.5/1.6 Konvertierungstools Konvertierung mit cvs2svn/git 2

Gründe zum Wechseln Organisatorisch Das Erstellen eines Tags/Zweigs dauert einen Arbeitstag Es gibt dafür einen eigenen Mitarbeiter Der CVS Guru geht bald in Rente Management / Community-Entscheidung örtlich verteilte Entwicklung 3

Gründe zum Wechseln Technisch Bessere Performance (Checkout, Diff, Tag, etc) Bessere Skalierbarkeit (siehe code.google.com) Neue Funktionen (atomic commits, merge tracking, hooks, etc.) vermutete Datenfehler / Inkonsistenzen handeditierte RCS-Files gelöschte Dateien aus Attic kopiert Tags/Branches auf nicht existente Versionen Verzeichnisse und Dateien mit gleichem Namen sonstige cvs admin -Katastrophen 4

Gründe zum Wechseln Sonstige richtiges(tm) Versionskontrollsystem Zukunftssicherheit... 5

Überblick Subversion erstes next generation Versionskontrollsystem ausgereift (Entwicklung seit 2000, seit 08/2001 self-hosted) Git, Mercurial, Bazaar - 2005 sehr ähnlich zu CVS, aber ohne dessen Probleme Highlights atomische Commits Versionierung von Verzeichnissen und Meta-Daten Schnelles Erzeugen von Zweigen und Tags partielle Checkouts Client/Server (zentralisiertes Modell) Protokolle: file, http(s), svn, svn+ssh 6

Wie funktioniert Subversion 3 dimensionales Dateisystem Dateisystem mit Geschichte trunk, branches und tags sind Pfade (bzw. URLs) Die Funktion eines Pfades ist Konvention, nicht implizit 7

Subversion Grundlagen neues Repository anlegen svnadmin create myrepo Check out svn co file://`pwd`/myrepo repo Layout anlegen cd repo && mkdir trunk branches tags Daten hinzufügen svn add * Commit / Einchecken svn commit Synchronisation Arbeitskopie mit Repository svn update mehr unter: http://svnbook.red-bean.com 8

Subversion Überprüfen von Änderungen svn status [ -u ] Status der Dateien/Verzeichnisse der Arbeitskopie ohne -u nur lokale Änderungen svn diff Anzeige der Unterschiede zwischen Revisionen oder Pfaden svn revert Änderungen an Dateien verwerfen gelöschte Verzeichnisse werden nicht wiederhergestellt 9

Mehrere Entwicklungszweige (Branches) Tags und Zweige sind nur Pfade im Repository svn copy -r 123 svn://repo/trunk/foo svn://repo/tags/foo-1.0 svn copy svn://repo/tags/foo-1.0 svn://repo/branches/foo-1.x-branch Immer ein Tag vor dem Zweig anlegen nicht zwingend notwendig, aber sehr hilfreich für Merge Merge überträgt Änderungen zwischen Entwicklungszweigen seit 1.5.x mit Änderungsverfolgung (merge tracking) vom Hauptentwicklungszweig svn merge svn://repo/trunk vom Branch svn merge reintegrate svn://repo/branch/foobar-branch generell svn merge URL1@REV1 URL2@REV2 WC_PATH 10

Weitere Neuerungen Erweiterte partielle checkouts (sparse) Leer, nur Dateien, Dateien und (leere) Verzeichnisse, vollständig Flexiblere Authentifizierung Via Cyrus SASL (u.a. CRAM-MD5, NTLM, GSSAPI) Verbesserte Konflikterkennung und -behandlung Interaktive Auswahl zur Lösung von Update-Konflikten Erkennung von Konflikten in der Verzeichnisstruktur (ab 1.6) z.b. lokal modifizierte Datei vs. gelöscht im Repository 11

Warum Subversion kein Versionskontrollsystem perfekt ist um- und einsteigerfreundlich skalierbar (10++ GB Repositories) DVCS (git, hg) Aufteilung in Teilrepositories z.b.: Änderung an API + Anpassungen in einem Commit möglich firmengeeignet(er) feingranuale Autorisierung Integration mit 3 rd party tools (buildbot, TortoiseSVN, Subclipse, etc.) Basis für zukünftige Migrationen flexible Arbeitsweisen git-svn, bzr-svn 12

Warum nicht Subversion man kann im Flugzeug/Zug/Himalaya nicht einchecken trunk/tags/branches sind nur Konvention zentralisierte VCS sind doof!!1 13

Konvertierungstools cvs2svn/git http://cvs2svn.tigris.org SVN Importer http://www.polarion.org Tailor (generisch) http://wiki.darcs.net/darcswiki/tailor 14

CVS2SVN existiert seit Entwicklungsbeginn von Subversion (2001) Version 2.2 (November 2008) benötigt Python 2 (2.4 oder besser, nicht 3.x) und GNU sort Entwicklerversion (fast) immer verwendbar Daten und Geschichte bestmöglichst rekonstruieren 16 wiederholbare Teilschritte erlaubt gezielte Schönheitskorrekturen Automatisches Setzen von SVN Eigenschaften robust gegenüber CVS Eigenheiten/Fehlern 15

Konvertierungsumfang kein Konvertierung / direkter Import Einchecken eines (bereinigten, umsortierten) CVS-Exports Nur Hauptzweig spart Speicherplatz entspricht oft vollständiger Konvertierung bei kleinen Projekten selektiv Ausschluß von bestimmten Symbolen (tägliche Build-Tags, Testentwicklungszweige) vollständig default braucht mehr Speicherplatz individuell aufwändig führt exakt zum gewünschten Resultat 16

Vorbereitungen Immer an einer Kopie des Repositories arbeiten server-seitige symbolische Links wenn möglich entfernen Text/Binärdateien korrekt markieren (empfehlenswert) möglicher Datenverlust durch automatische Zeilenendekorrektur Diff/Merge von Binärdateien als Text Korrektur mit: cvs admin -kb filename bei gründlicher Anwendung kann default-eol=native genutzt werden --eol-from-mime-type setzt svn:mime-type-eigenschaft 17

Vorbereitungen Auf- und Umräumen kein echtes Rename/Move in SVN möglich vollständiges Löschen nur durch Dump, Filter und Restore für nicht triviale Konvertierungen Options-Datei verwenden Beispiele für SVN, Git und Mercurial vorhanden cvs2svn options=myoptions.file z.b. Konvertierung mehrerer Projekte, spezielles Repo-Layout, etc komplexe Transformationsregeln Zwischenergebnisse mit skip-cleanup aufheben Wiederholung von Zwischenschritten Fortsetzen nach Abbrüchen 18

Symbolverarbeitung CVS Symbole können Zweige oder Tags sein oder fälschlicherweise beides Verarbeitung im CollateSymbolPass (aktuell: 3. Schritt) Ausschluß via regulärem Ausdruck --exclude='^test-.+' Verhalten bei mehrdeutiger Verwendung --force-branch, --force-tag --symbol-default=heuristic strict branch tag Umschreiben von Symbolen --symbol-transform='muster:ersatz' Spezial --write-symbol-info erstellt Logfile der Symbolregeln Eingabe für symbol-hints 19

Weitere Tipps CVSNT kann, muß nicht funktionieren --use-cvs --cvs-revnums speichert CVS Revisionsnummern als SVN-Eigenschaft (property) verursacht Konflikte beim Mergen Out-of-Memory Fehler durch große Changesets RAM und Swap erhöhen 64bit System nutzen Konvertierung beschleunigen kleine Repos in RAM Disk große Repos auf schnelles RAID0 Viel Glück 20

21 Danke! Fragen? Antworten.