UNIX - Werkzeuge ================ 1. SCCS, RCS, CVS, SVN und GIT - Versionsverwaltungssysteme =========================================================== Wie verwaltet man komplexe Quelltexte ohne daß man mal vor dem Nichts steht??? |
next | back | 2017 - 1 | Fri Apr 7 14:46:40 CEST 2017 |
Versionsverwaltungssysteme - Leistungen und Ziele Was wird verwaltet? Gewöhnliche Dateien - Text-Files, in der Regel keine Binärdaten z.B.: Quelltexte, Texte, Makefiles, Konfigurationsfiles,... Mehrere Versionen werden aufbegehoben und bei Bedarf wieder erzeugt. Ziele von Versionsverwaltungssystemen: Kontrollierten Zugriff ermöglichen Frühere Versionen wiederherstellen Kontinuierliche Generationsfolge sichern Dokumentation der Änderungen Parallelen Zugriff organisieren - Synchronisation Speicherplatz sparen Kosten reduzieren Zeit sparen |
next | back | 2017 - 2 | Fri Apr 7 14:46:40 CEST 2017 |
Historisches: SCCS - Source Code Control System 1972 von Marc J. Rochkim in den Bell-Laboratorien entwickelt 1973 in die UNIX-System eingefügt kostenpflichtige Software, keine frei verfügbaren Quellen beruht auf 13 Einzelkommandos RCS - Revision Control System 1983 von Walter F. Tichy an der Purdue Universität in West Lafayette entwickelt mehrer Versionen mit signifikanten Unterschieden verfügbar frei verfügbare Quellen beruht auf 10 Einzelkommandos CVS - Concurrent Versions System 1986 erster Entwurf von Dick Grune (Ableitung von RCS) 1989 Programmierung von CVS durch Brian Berliner CVS ist frei verfügbar, beruht auf einem Einzelkommando mit vielen Optionen. Netzwerkfähig. Karl Fogel, Moshe Bar: Open Source-Projekte mit CVS MITP-Verlag Bonn 2002, ISBN 3-8266-0816-x Gregor N. Purdy: CVS kurz & gut O'Reilly 2001, ISBN 3-89721-229-3 |
next | back | 2017 - 3 | Fri Apr 7 14:46:40 CEST 2017 |
SVN - Subversion (Next Generation Open Source Version Control) Open Source Versions Control System Erste Ideen 2000. Abgeleitet von CVS. Beseitigt die Unzulänglichkeiten von CVS: Direktory Versionierung bessere Fileverwaltung (History) Metadatenverwaltung Verbesserter Netzwerkzugriffe (Apache, SSH, separater Server) gut strukturiert gut verwaltbar sicherer als CVS. Besteht aus einem Nutzerkommando und mehreren Administrations- kommandos, Anbindung an Eclipse Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato Version Control with Subversion O'Reilly 2004, ISBN 0-596-00448-6 |
next | back | 2017 - 4 | Fri Apr 7 14:46:40 CEST 2017 |
GIT - the fast version control system Ablösung von BitKeeper Ursprünglicher Enwurf von Linux Torvalds zur Enwicklung des Kernels. für sehr große, komplexe Quelltextbäume z.B. Linux Kernel, Nicht-lineare, verteilte Entwicklung (branching und merging) kein zentraler Server lokale Repositories Datentransfer zwischen Repositories Kryptographische Sicherheit der Projektgeschichte Gelöschte Daten bleiben vorhanden Verbindungen zu CVS , SVN, ARCH |
next | back | 2017 - 5 | Fri Apr 7 14:46:40 CEST 2017 |
Übersicht - Was gibt es heute? Zentrale Versionsverwaltungssysteme: Open Source CVS SVN Propitäre Systeme Alienbrain Perforce Team Foundation Server Visual SourceSafe Verteilte Versionsverwaltungssysteme: Open Source: GNUarch viele Kommandos, atomare Commits Bazaar Abspaltung von arch (Ubuntu, MySQL, Inkscape, Emacs) Darcs basiert auf Patchen, kein Baum von Revisionen GIT (Linux-Kernel, ...) Mercurial (Firefox, Thunderbird, Google, OpenSolaris, Linux-Kernel inoffiziell) Monotone Ideenspender für Git (Pidgin) Propitäre Systeme BitKeeper (Linux-Kernel - alt - bis 2005) ClearCase |
next | back | 2017 - 6 | Fri Apr 7 14:46:40 CEST 2017 |
Arbeitsweise von Versionsverwaltungssystemen: Versionsverwaltungssysteme benutzen in der Regel ein Repository als Speicher für die Daten. Der Nutzer agiert grundsätzlich in einer Sandbox, die eine Kopie des Repositories darstellt. Die Verwaltungs- systeme organisieren den Datentransport zwischen Repository und Sandbox. Initialisierung einer Datenbasis init Füllen der Datenbasis mit einem Anfangszustand import Ausgeben von Daten der Datenbasis an die Nutzer (Programmierer) checkout Einfügen von Daten der Nutzer in die Datenbasis commit Bilden einer neuen Version import Aktualisieren der Datenbasis eines Nutzers update |
next | back | 2017 - 7 | Fri Apr 7 14:46:40 CEST 2017 |
CVS - Concurrent Versions System ================================= CVS wird mit kleinen Man-Pages ausgeliefert. Mehr oder aktuellere Hilfen erhält man durch: info cvs (GNU-info System) cvs --H oder cvs --help cvs --help-options cvs --help-commands cvs --help <subkommando-name> cvs --help ---------- Usage: cvs [cvs-options] command [command-options-and-arguments] where cvs-options are -q, -n, etc. (specify --help-options for a list of options) where command is add, admin, etc. (specify --help-commands for a list of commands or --help-synonyms for a list of command synonyms) where command-options-and-arguments depend on the specific command (specify -H followed by a command name for command-specific help) Specify --help to receive this message The Concurrent Versions System (CVS) is a tool for version control. For CVS updates and additional information, see the CVS home page at http://www.cvshome.org/ or Pascal Molli's CVS site at http://www.loria.fr/~molli/cvs-index.html |
next | back | 2017 - 8 | Fri Apr 7 14:46:40 CEST 2017 |
cvs --help-options ------------------ CVS global options (specified before the command name) are: -H Displays usage information for command. -Q Cause CVS to be really quiet. -q Cause CVS to be somewhat quiet. -r Make checked-out files read-only. -w Make checked-out files read-write (default). -n Do not execute anything that will change the disk. -t Show trace of program execution (repeat for more verbosity) -- try with -n. -R Assume repository is read-only, such as CDROM -v CVS version and copyright. -T tmpdir Use 'tmpdir' for temporary files. -e editor Use 'editor' for editing log information. -d CVS_root Overrides $CVSROOT as the root of the CVS tree. -f Do not use the ~/.cvsrc file. -z # Use compression level '#' for net traffic. -a Authenticate all net traffic. -s VAR=VAL Set CVS user variable. (Specify the --help option for a list of other help options) |
next | back | 2017 - 9 | Fri Apr 7 14:46:40 CEST 2017 |
cvs --help-commands ------------------- CVS commands are: add Add a new file/directory to the repository admin Administration front end for rcs annotate Show last revision where each line was modified checkout Checkout sources for editing commit Check files into the repository diff Show differences between revisions edit Get ready to edit a watched file editors See who is editing a watched file export Export sources from CVS, similar to checkout history Show repository access history import Import sources into CVS, using vendor branches init Create a CVS repository if it doesn't exist log Print out history information for files login Prompt for password for authenticating server logout Removes entry in .cvspass for remote repository ls List files available from CVS pserver Password server mode rannotate Show last revision where each line of module was modified rdiff Create 'patch' format diffs between releases release Indicate that a Module is no longer in use remove Remove an entry from the repository rlog Print out history information for a module rls List files in a module rtag Add a symbolic tag to a module |
next | back | 2017 - 10 | Fri Apr 7 14:46:40 CEST 2017 |
server Server mode status Display status information on checked out files tag Add a symbolic tag to checked out version of files unedit Undo an edit command update Bring work tree in sync with repository version Show current CVS version(s) watch Set watches watchers See who is watching a file (Specify the --help option for a list of other help options) |
next | back | 2017 - 11 | Fri Apr 7 14:46:40 CEST 2017 |
cvs -H import ------------- Usage: cvs import [-d] [-k subst] [-I ign] [-m msg] [-b branch] [-W spec] repository vendor-tag release-tags... -d Use the file's modification time as the time of import. -k sub Set default RCS keyword substitution mode. -I ign More files to ignore (! to reset). -b bra Vendor branch id. -m msg Log message. -W spec Wrappers specification line. (Specify the --help global option for a list of other help options) cvs --version ------------- Concurrent Versions System (CVS) 1.12.12 (client/server) Copyright (C) 2005 Free Software Foundation, Inc. Senior active maintainers include Larry Jones, Derek R. Price, and Mark D. Baushke. Please see the AUTHORS and README files from the CVS distribution kit for a complete list of contributors and copyrights. CVS may be copied only under the terms of the GNU General Public License, a copy of which can be found with the CVS distribution kit. Specify the --help option for further information about CVS |
next | back | 2017 - 12 | Fri Apr 7 14:46:40 CEST 2017 |
Arbeitsweise von CVS -------------------- CVS führt die Informationen über den Werdegang eines Projektes mit. Alle Informationen werden in einem Repository gespeichert. Dieses enthält alle Informationen, die für die Wiedererstellung einer beliebigen Version notwendig sind. Das Repository wird durch einen Administrator verwaltet. Der Nutzer arbeitet in einer oder mehreren Sandboxen (Sandkasten), die aktuelle Kopien von Files aus dem Repository enthalten (einer bestimmten Version). Normalerweise holt sich der Nutzer ein zu bearbeitendes File aus dem Repository in seine Sandbox, bearbeitet es dort (testen der Änderung) und gibt es dann an das Repository zurück. Prinzipiell sperrt CVS eine ausgecheckte Datei standardmäßig nicht, d.h. es können zwei Nutzer gleichzeitig an der selben Datei arbeiten. Der Konfikt wird erst bei der Rückgabe bemerkt. Die zweite Rückgabe wird unterdrückt. und der zweite Nutzer muß anschließend seine Änderung neu in die Datei einbringen. Der Administrator kann aber in Außnahmefällen einen Sperr- mechnismus aktivieren (cvs admin -l ... oder cvs admin -L ...). |
next | back | 2017 - 13 | Fri Apr 7 14:46:40 CEST 2017 |
Ein einführendes Beispiel ------------------------- Anlegen eines Nutzers cvs mit: Homedirectory: /home/cvs und Gruppe: cvsuser CVS-User sollten zu cvsuser gehören. Anlegen des Directories für ein Repository z.B. /usr/local/CVS Eigentümer: cvs Gruppe: cvsuser chmod g+ws /usr/local/CVS Festlegen des Repository in initcvs: export CVS_RSH=ssh export CVSROOT=bell@localhost:/usr/local/CVS Setzen der Umgebungsvariablen: . initcvs Initialisieren von cvs nur einmal durch den Administrator!!!!!!: cvs init |
next | back | 2017 - 14 | Fri Apr 7 14:46:40 CEST 2017 |
Initialisieren des Datenbestandes im Repository: cd ~/Tools/CVS ls -lisa drwx-------- 4 bell unixsoft 1157 Jan 29 14:02 Einleitung cd Einleitung cvs import -m 'Einleitung-Beispiel' Einleitung Bell V1_0 hierduch wurde ein Projekt: Einleitung mit dem Hersteller: Bell und der Version: V1_0 mit den Files aus dem aktuellen Dirctory angelegt. Erstes aus-checken aller Daten in die lokale Sandbox cd ~/Work # Sandbox cvs checkout Einleitung # Projekt: Einleitung wird geholt Bearbeiten eines Files cvs checkout Einleitung/sysconf.c oder cvs update Einleitung cd Einleitung vi sysconf.c cvs commit sysconf.c ... |
next | back | 2017 - 15 | Fri Apr 7 14:46:40 CEST 2017 |
Kommandoaufbau: --------------- cvs {<Globale Optionen>} <CVS Subkommandos> \ {<Optionen für Subkommandos> {<Bezeichner>} Globale Optionen von CVS Folgende Optionen müssen vor dem Kommandoname spezifiziert werden: -H Hilfsinformationen -Q sehr schweigsames CVS -q schweigsames CVS -r mache checked-out Files read-only -w mache checked-out Files read-write (standard) -l Befehl nicht im History-Mechanismus -m infotext Beschreibung -n mache nichts, was die Daten verändert -t trace -- bitte mit -n -v CVS Versionsnummer und Copyright ausgeben -T tmpdir Benutze 'tmpdir' für temporäre Files -e editor Benute 'editor' zur Editieren der Log-Information -d CVS_root überschreibe $CVSROOT als root des CVS-Baums -f benutze nicht das ~/.cvsrc File -z # benutze Compressionsstufe '#' für den Netzwerkverkehr -a Authentifzieren (pserver) -x Verschlüsseln -s VAR=VAL Setzen von CVS-Nutzervariablen --help Hilfstexte --help-options Hilfstexte --help-command Hilfstexte |
next | back | 2017 - 16 | Fri Apr 7 14:46:40 CEST 2017 |
CVS Client-Subkommandos ----------------------- allgemeine Optionen für Client-Subkommandos (stehen nach dem CVS Client-Subkommando) -D datum - die aktuellste Version vor dem Datum <datum> benutzen <datum>: 11-Nov-04, 1 month ago, last year, last Monday yesterday, 3/31/92 10:00:07 PST, 22:00 GMT -f - Befehl für Dateien anwenden, die nicht zu einer Markierung passen. -k kflag - Schlüsselwortersetzungen - zum Einfügen von Versionsinformationen kflag: b - binär k - nur Schlüsselwort kv - Schlüsselwortersetzung, Schlüsselwort wird durch den zugehörigen Wert ersetzt (default) kvl - wie kv, aber Nutzerkennung wird hinzugefügt, o - Schlüsselwerte aus dem Repository benutzen v - Nur Wert benutzen. -l - Ausführung nicht rekursive in Unterverzeichnissen fortsetzen nur lokales Direktory -n - keine Module-Programme ausführen -R - rekursiv -r rev - benutze die Revisionsnummer 'rev'(revision oder symbolic names (tag) je nach Kommando) |
next | back | 2017 - 17 | Fri Apr 7 14:46:40 CEST 2017 |
CVS-Subkommandos import [-b zweig] [-d] [-I muster] [-k kfalg] [-m infotext] [-W name] modul hersteller version Importieren eines kompletten Verzeichnisses als neuer Modul in das Repository. Neuer Kode, der bisher nicht überprüft wurde kann in das Repository eingegliedert werden. -b zweig - Importieren eines Herstellerzweiges. -d - Verwende Zeitstempel der Dateiänderung der Dateien anstelle der aktuellen Systemzeit. -I muster - Erkennungsmuster für zu ignorierende Dateien. -m infotext - Information infotext für Protokolleintrag. -W name - Name des CVS-Wrappers. modul - Name des neuen Moduls im Repository. hersteller - Herstellerkennung. version - Versionshinweis. z.B. cvs import -m 'Einleitung-Beispiel' Einleitung Bell V1_0 cvs import -m 'Einleitungs-Beispiel' Einleitungs-Projekt Bell V1_0 |
next | back | 2017 - 18 | Fri Apr 7 14:46:40 CEST 2017 |
checkout [-A] [-c|s] [-d dir [-N]] [ [ -D datum | -r rev ] -f ] [-j rev1 [-j rev2]] [-k kflag] [-l|-R] [-n] [-p] [-P] [modul ...] Kopieren der Dateien aus dem Repository in eine Sandbox im aktuellen Verzeichnis, wenn nicht anders spezifiziert. -A - Setze Datum und Markierungen zurück -c - Ausgabe auf stdout -d dir - Ersetzen des Standardmäßigen Directorynamens durch 'dir' -j rev - Führt Verzweigungen zusammen, neue 'rev' -N - Keine Verkürzung von Modulpfaden -p - Ausgabe auf stdout mit RCS-Headern -P - Leere Verzeichnisse löschen -s - Statusanzeige -D Datum, -r rev, -f, -k kflag, -l, -R - Siehe oben. z.B. cvs checkout Einleitung cvs checkout Einleitung/sysconf.c |
next | back | 2017 - 19 | Fri Apr 7 14:46:40 CEST 2017 |
annotate [ [ -D datum | -r rev ] -f ] [-l | -R ] datei ... Anzeigen aller Zeilen der spezifizierten Objekte mit Änderungs- datum und Nutzer. Optionen siehe oben. z.B. cvs annotate sysconf.c commit [-f|[-l|-R]] [-F datei | -m infotext ] [-n] [-r rev ] [datei ...] Übergabe einer Änderung aus der Sandbox an das Repository. -f - Erzwingen der Übergabe auch ohne Änderung. -F datei - Infotext aus der Datei 'datei' benutzen. -m infotext - benutze angegebenen Info-Text infotext -l, -R, -r rev - Siehe oben. z.B. cvs commit sysconf.c |
next | back | 2017 - 20 | Fri Apr 7 14:46:40 CEST 2017 |
update [-A] [-d] [-D datum | -r rev] [-f] [-I muster] [-j rev1 [-j rev2]] [-k kflag] [-l |-R] [-p] [-P] [-W name] [datei ...] Syncronisieren der Sandbox mit dem Repository., wenn die Files in der Sandbox gegenüber dem Repository verändert wurden und ein commit fehlgeschlagen ist. Eventuell werden Update-Informationen in die Files eingefügt. -A -I muster -j rev1 -j rev2 -p -P -W name z.B. cvs update sysconf.c |
next | back | 2017 - 21 | Fri Apr 7 14:46:40 CEST 2017 |
add [ -k kflag ] [ -m infotext ] datei | directory Vorbereitung des Hinzufügens von neuen Files 'datei' oder Direktories 'directory' zum Repository. Die Eintragung wird in der aktuellen Sandbox gemacht. Durch ein späteres commit wird die Aktion ausgelöst. -m infotext - Benutze angegebenen Info-Text 'infotext'. -k kflag - Siehe oben. z.B. cvs add README cvs commit README diff [-k kflag] [-l|-R] [diff-option] [[-r rev1 | -D datum1] [-r rev2 | -D datum2]] [datei ...] Anzeigen der Differenz zwischen Versionen von Dateien diff-option gibt die Art des Vergleiches und die Ausgabeform an: --binary, --brief, -c, -C zeilen, --context==nzeilen, -t, --expand-tabs, -w, --ignore-all-space,-B,--ignore-blank-lines, -i, --ignore-case, -T, --initial-tab, -d, --minimal, -N, --new-file, -n, --rcs, -s, --report-identical-files, -p, --schow-c-function, -y, --side-by-side, -a, --text, -u, -U nzeilen, --unified=nzeilen, -V typ -k kflag, -l, -R, -D datum -siehe oben |
next | back | 2017 - 22 | Fri Apr 7 14:46:40 CEST 2017 |
edit [-a aktion] [-l | -R] [datei ...] Einleitung einer Dateibearbeitung. Zusammen mit watch. Für die Datei wird der Schreibzugriff erlaubt und eine Benachrichtigung an andere Benutzer, die watch benutzt haben, wird versendet. edit wird durch unedit oder commit wieder aufgelöst. -a aktion - Aktion spezifizieren, über die man informiert werden möchte. Möglich sind: edit, unedit, commit, all oder none -l, -R siehe oben unedit [-l | -R] [datei ...] Beenden einer Dateibearbeitung für die angegebenen Dateien. Dateien sind wieder schreibgeschützt. Beobachter werden benachrichtigt. editors [-l | -R] [ datei ....] Zeigt alle gegenwärtigen Bearbeiter (Benutzer von edit) der spezifizierten Objekte an. -l , -R - siehe oben |
next | back | 2017 - 23 | Fri Apr 7 14:46:40 CEST 2017 |
watch {{ on | off } | { add | remove } [ -a aktion ]} [-l | -R] datei .... Setzen von Beobachtungspunkten für Dateiveränderungen. watchers [-l | -R ] [ datei ...] Anzeigen von Nutzern, die Dateiverändrungen überwachen. export [-d dir [-N]] [-D datum | -r rev] [-f] [-k kflag] [-l|-R] [-n] modul ... Kopieren der Files aus dem Repository, es wird aber keine Sandbox erzeugt, d.h. es entstehen keine CVS-Verzeichnisse. -d dir - Benutze Verzeichnisname 'dir' anstelle des Modulnamens für den Export. -N - Pfade nicht verkürzen. -n - Kein module-Programm ausführen. |
next | back | 2017 - 24 | Fri Apr 7 14:46:40 CEST 2017 |
history [-a|-u benutzer] [-b string] [-c] [-D datum] [-e| -x kennung] [-f datei | -m modul | -n modul | -p repository ] [-l] [-o] [-r rev] [-t markierung] [-T] [-w] [-z zone] [datei..] Anzeigen von diversen Informationen zur History. -a - History für alle Benutzer wird angezeigt. -u benutzer - History wird nur für den Benutzer 'benutzer' angezeigt. -b string - Zeigt die History rückwärts an, bis der String 'string' in Modulname, Pfadname oder Repositorypfad vorkommt. -c - Zeigt jedes commit-Kommando an. -e - Zeigt alles an. -x Kennung - Zeigt History zu bestimmten Aktivitäten an Folgende Kennungen werden durch update erzeugt: C - Zusammenführungen mit manuellem Eingriff G - Automatische Zusammenführungen U - Arbeitskopie aus dem Repository kopiert W - Arbeitskopie gelöscht Folgende Kennungen werden durch commit erzeugt: A - Zum ersten Mal hinzugefügt M - Modifiziert R - Gestrichen -f datei - Zeigt die letze Aktion für die Datei datei an. -m modul - Zeigt einen vollständigen Bericht für den Modul 'modul' an. |
next | back | 2017 - 25 | Fri Apr 7 14:46:40 CEST 2017 |
-p repository - Zeigt die History für das Repository repository an. -o - Zeigt einen Bericht der z.Z. ausgecheckten Module an. -t markierung - Zeigt einen Bericht seit dem Zeitpunkt an, seitdem die Markierung 'markierung' eingefügt wurde. -T - Zeigt alle Markierungen an. -w - History nur für das aktulle Verzeichnis anzeigen. -z zone - Zeigt die Zeitangaben bezogen auf die angegebene Zeitzone 'zone' an. -D datum, -l, -r rev - siehe oben Kennungen im Protokoll: C - Zusammenführungen mit Konflikten (Eingriff des Nutzers war erforderlich) G - Zusammenführung ohne Konflikt U - Arbeitskopie aus dem Repository kopiert W - Arbeitskopie gelöscht A - Text zum ersten Mal ins Repository kopiert M - Text modifiziert R - Text aus dem Repository gestrichen E - Repository exportiert (export) F - release-Operation O - checkout des Repositories T - rtag (Tag angelegt) |
next | back | 2017 - 26 | Fri Apr 7 14:46:40 CEST 2017 |
log [-b] [-d datum] [-h] [N] [-rversion] [-R] [-s status] [-t] [-wlogins] [datei ....] Anzeigen von History-Informationen: -b - Anzeigen der Version des Hauptzweiges. -d datum - Datumsbereich ( d1<d2, d1<=d2, <=d, <d, d ) -h - Gibt nur Kopfzeilen aus. -N - Gibt nur Markierungen aus. -rversion - Gibt Protokoll über die Version aus. -s status - Gibt Protokoll nur zum Spezifizierten Status aus. -t - Gibt nur Kopfzeilen und beschreibenden Text aus. -wlogin - Gibt Protokoll zu den Einfügungen des Nutzers 'login' aus. login Login in Server (pserver) logout Logout beim Server (pserver) |
next | back | 2017 - 27 | Fri Apr 7 14:46:40 CEST 2017 |
rdiff [-c| -s| -u] [{{-D datum1 | -r rev1 } [-D datum2 | -r rev2] } | -t] [-f] [-l | -R] datei ... Erzeugen von 'patch'-Format-Informationen zwischen Releasen. Mit den Patchanweisungen kann eine Version in die andere Version überführt werden. -c - Benutzung des Context-Formates von diff. -s - Übersicht über alle gänderten Dateien. -t - Zeigt Unterschiede zwischen den beiden aktuellsten Versionen. -u - Benutzung des Univied-Formates von diff. release [-d] verzeichnis ... Löschen einer Sandbox oder eines Teils der Sandbox. -d - Veränderte Eintragungen werden nur gelöscht, wenn sie an das Repository zuvor übergeben wurden. |
next | back | 2017 - 28 | Fri Apr 7 14:46:40 CEST 2017 |
remove [-f ] [-l | -R] [datei ....] Löschen eines Files vom Repository. Die Datei wird nicht wirklich gelöscht. Sie kann mit add wieder hergestellt werden. rtag [-a] [-b] [-d] [-D datum] [-r rev] [-f] [-F] [-l | -R] [-n] markierung modul ... Versieht eine bestimmte Version einer Gruppe von Datei mit der Markierung markierung. Wenn eine Datei vorher schon mit einer anderen Markierunge versehen war, wird diese nicht markiert. -a - löscht Tags von "removed" Files -b - Setzen einer Markierung -d - Löscht eine Markierung -F - "force", erzwingt eine Markierung -n - keine Ausführung von "tag programm" status [-l | -R] [-v] [datei ...] Anzeigen von Statusinformation für Files -v - verbose |
next | back | 2017 - 29 | Fri Apr 7 14:46:40 CEST 2017 |
tag [-b] [-c] [-d] [-D datum | -r rev] [-f] [-F] [-l | -R] markierung datei Markieren der Dateien in der Sandbox: -b - Erzeugt eine Markierung für einen Zweig. -c - Prüft vor dem Markieren, daß die lokalen Dateien nicht geändert wurden. -d - Löscht die angegebene Markierung. -f - Benutzt die übergeordnete Version für die Markierung, wenn die angebebenen nicht existiert. -F - force, Erzwingt die Markierung. |
next | back | 2017 - 30 | Fri Apr 7 14:46:40 CEST 2017 |
Von CVS ausgewertete Umgebungsvariable -------------------------------------- CVSEDITOR - von CVS benutzter Editor EDITOR VISUAL CVSROOT - Wurzelverzeichnis für Repositories auf dem Server [<nutzer>@<host>:]<absoluter Pfad> USER - Nutzername für ein entferntes Repository CVS_CLIENT_LOG - Dateiname für Fehlerprotokoll bei Client-Server-Verbindungen CVS_CLIENT_PORT - Client-Prot für Serververbindungen CVS_PASSFILE - Passwortdatei CVS_RCMD_PORT - reserviert nicht UNIX-Systeme CVS_RSH - Remote-Shell-Programm: sollte heute immer ssh sein CVS_SERVER - CVS-Server CVS_SERVER_SLEEP- Server-Wartezeit nur für Debug CVSIGNORE - Muster für zu ignorierende Dateien CVSREAD - Schreibschutz für update und checkout CVSUMASK - Zugriffsrechte für lokale Repositories HOME - Homedirktory PATH - Pfad für ausführbare Kommandos TMP - Direktory für temp-Files |
next | back | 2017 - 31 | Fri Apr 7 14:46:40 CEST 2017 |
Administrationskommandos ------------------------ cvs [<globale Optionen>] admin [Administrationsoptionen] files... -b[rev] Einen Zweig 'rev' als Standard festlegen. -c string Änderung des Kommentarstrings. -e[users] Löschen von Nutzern. Nutzer stehen in einer durch Kommatas getrennten Liste. -I Gehe in den interaktiven Modus. -k kflag Standardmodus für Schlüsselwortersetzung: kv (Default) Substitue keyword and value. kvl Substitue keyword, value, and locker (if any). k Substitue keyword only. o Preserve original string. b Like o, but mark file as binary. v Substitue value only. -l[rev] Die angegebenen Version 'rev' sperren -L Striktes Sperren einschalten. -m rev:msg Protokollnachricht der Version 'rev' ändern in 'msg' -n tag[:[rev]] Den symbolischen Namen 'tag' mit den Files der Version 'rev' verknüpfen. wenn 'tag' existiert wird ein Fehler angezeigt. -N tag[:[rev]] Wie -n aber wenn 'rev' schon existiert, wird weitergemacht. |
next | back | 2017 - 32 | Fri Apr 7 14:46:40 CEST 2017 |
-o range Eine Version, die durch range beschrieben wird, wird endgültig gelöscht. rev1::rev2 Between rev1 and rev2, excluding rev1 and rev2. rev:: After rev on the same branch. ::rev Before rev on the same branch. rev Just rev. rev1:rev2 Between rev1 and rev2, including rev1 and rev2. rev: rev and following revisions on the same branch. :rev rev and previous revisions on the same branch. -q Keine Protokollnachrichten ausgeben (quiet-modus). -s state[:rev] Status der Version 'rev' in 'stat' ändern. -t[file] Den beschreibenden Text in CVS-Dateien auf die angegebenen Datei festlegen. -t-text Den beschreibenden Text in CVS-Dateien auf den angegebenen Text 'text' festlegen. -u[rev] Angegebenen Version entsperren, wenn nichts angegeben, wird die aktuelle entsperrt. -U Striktes Sperren ausschalten. |
next | back | 2017 - 33 | Fri Apr 7 14:46:40 CEST 2017 |
cvs [<globale Optionen>] import [-b zweig] [-d] [-I muster] [-k kfalg] [-m infotext] [-W name] modul hersteller version Importieren eines kompletten Verzeichnisses als neuer Modul in das Repository. Neuer Kode, der bisher nicht überprüft wurde kann in das Repository eingegliedert werden. -b zweig - Importieren eines Herstellerzweiges. -d - Verwende ZEitstempel der Dateiänderung der Dateien anstelle der aktuellen Systemzeit. -I muster - Erkennungsmuster für zu ignorierende Dateien. -m infotext - Information infotext für Protokolleintrag. -W name - Name des CVS-Wrappers. modul - Name des neuen Moduls im Repository. hersteller - Herstellerkennung. version - Versionshinweis. cvs [ -d dirctory ] init Initialisieren des Repository. Einzige Option -d für die Definition von CVS-Root. Wird die Option nicht angegeben, wird die Umgebungsvariable CVSROOT benutzt. |
next | back | 2017 - 34 | Fri Apr 7 14:46:40 CEST 2017 |
Files im Repsitory ------------------ checkoutlist - verwaltet Files commitinfo - Konfiguriert commit-Informationen config - Konfiguration des Repository cvsignore - Erkennungsmuster für Dateien, die übergangen werden sollen cvswrappers - Festlegung von Standardoptionen für bestimmte CVS-Kommandos für bestimmte Dateien editinfo - RCS, Angaben für Protokolldatei-Editor history - Protokoll aller Tätigkeiten über dem Repository loginfo - Behandlung von Protokollinformationen modules - Verzeichnisse, die im Toplevel-Directory von CVS liegen heißen module. Zusätzlich können in modules logische Module beschrieben werden. notify - Enthält Informationen über die Versendung von Nachrichten für watch rcsinfo - Textschablone für commit und import taginfo - Verwaltungsinformationen für tag und rtag verifymsg - Zur Prüfung von Protokolleinträgen readers - Nutzer mit nur Leserechten writers - Nutzer mit Lese- und Schreibrechten, wenn sie nicht in readers sind |
next | back | 2017 - 35 | Fri Apr 7 14:46:40 CEST 2017 |
SVN - Subversion (Next Generation Open Source Version Control) ============================================================== Subversion Kommandos - Übersicht -------------------------------- svn Kommandozeilen Client-Programm svnversion Programm zum Erzeugen eines Statusreports für eine Kopie svnlook Tool zur Inspektion eines Subversion-Repository svnadmin Tool zur Administration des Subversion-Repository svndumpfilter Tool zur Erzeugung eines Dumpfiles mod-dav_svn Module für Apache-Server mod-authz_svn Module für Apache-Server svnserve Standalone Server, auch mit SSH nutzbar Hilfe: man svn svn help svn help <subcommando> |
next | back | 2017 - 36 | Fri Apr 7 14:46:40 CEST 2017 |
Arbeiten mit svn-Hilfen ----------------------- svn help --------- Aufruf: svn UNTERBEFEHL [Optionen] [Parameter] Geben Sie 'svn help UNTERBEFEHL' ein, um Hilfe zu einem Unterbefehl zu erhalten. Die meisten Unterbefehle akzeptieren Datei und/oder Verzeichnisparameter, wobei die Verzeichnisse rekursiv durchlaufen werden. Wenn keine Parameter angegeben werden, durchläuft der Befehl das aktuelle Verzeichnis rekursiv. Verfügbare Unterbefehle: add blame (praise, annotate, ann) cat checkout (co) cleanup commit (ci) copy (cp) delete (del, remove, rm) diff (di) export help (?, h) import info list (ls) log merge |
next | back | 2017 - 37 | Fri Apr 7 14:46:40 CEST 2017 |
mkdir move (mv, rename, ren) propdel (pdel, pd) propedit (pedit, pe) propget (pget, pg) proplist (plist, pl) propset (pset, ps) resolved revert status (stat, st) switch (sw) update (up) Subversion ist ein Programm zur Versionskontrolle. Für weitere Informationen siehe: http://subversion.tigris.org/ |
next | back | 2017 - 38 | Fri Apr 7 14:46:40 CEST 2017 |
svn help update --------------- update (up): Aktualisiert die Arbeitskopie mit Änderungen aus dem Projektarchiv. Aufruf: update [PFAD...] Ist keine Revision angegeben, wird die Arbeitskopie auf den aktuellen Stand der HEAD-Revision gebracht. Ansonsten wird die Arbeitskopie mit der durch -r angegebenen Revision synchronisiert. Für jedes aktualisierte Objekt wird eine Zeile mit einem Buchstaben für die Aktion ausgegeben. Diese haben die folgenden Bedeutungen A Added - Hinzugefügt D Deleted - Gelöscht U Updated - Aktualisiert C Conflict - Konflikt G merGed - Zusammengeführt Ein Buchstabe in der ersten Spalte symbolisiert eine Aktualisierung der Datei, während Aktualisierungen der Dateieigenschaften in der zweiten Spalte angezeigt werden. Ein »B« in der dritten Spalte zeigt an, dass die Sperre für die Datei aufgebrochen oder gestohlen wurde. .......... |
next | back | 2017 - 39 | Fri Apr 7 14:46:40 CEST 2017 |
Gültige Optionen: -r [--revision] arg : ARG (manche Befehle akzeptieren auch Wertebereiche ARG1:ARG2) Ein Revisions Parameter kann sein: NUMBER Revisionsnummer "{" DATE "}" Revision zum Startdatum "HEAD" Neueste im Projektarchiv "BASE" Basisrevision der Arbeitskopie "COMMITTED" Letzte übertragene Revision bei oder vor BASE "PREV" Letzte Revision vor COMMITTED -N [--non-recursive] : Nicht rekursiv hinabsteigen --depth PAR : begrenzt Operation durch Tiefe PAR (»empty«, »files«, »immediates« oder »infinity«) -q [--quiet] : So wenig wie möglich ausgeben --diff3-cmd arg : Verwende ARG als Merge Programm --force : Durchführung des Befehls erzwingen .... Globale Optionen: --username arg : Benutzername ARG angeben --password arg : Passwort ARG angeben --no-auth-cache : Anmeldeinformation nicht zwischenspeichern --non-interactive : Keine interaktiven Rückfragen ausgeben --config-dir arg : Benutzerkonfigurationsdateien aus dem Verzeichnis ARG lesen .... |
next | back | 2017 - 40 | Fri Apr 7 14:46:40 CEST 2017 |
Kurzfassung Subversion-Nutzung ------------------------------ Möglichkeiten des Zugriffs auf ein Repository für Nutzer: file:///pfad - lokales Filesystem http://host/pfad - Zugriff über http und WebDAV über Apache-Server https://host/pfad - Zugriff über http und WebDAV über Apache-Server aber mit SSL svn://host/pfad - Zugriff über svnserve-Server svn+ssh://host/pfad - Zugriff über ssh und svn, wie svn aber über ssh-Tunnel |
next | back | 2017 - 41 | Fri Apr 7 14:46:40 CEST 2017 |
Lokale Nutzung von Subversion - lokales Repository bei einem Nutzer Erzeugen eines leeren Repository für Subversion (lokal) mkdir -p /home/bell/Subversion chgrp svnuser /home/bell/Subversion # *) chmod g+ws /home/bell/Subversion # *) svnadmin create /home/bell/Subversion chmod -R g+ws /home/bell/Subversion # *) ls /home/bell/Subversion conf/ dav/ db/ format hooks/ locks README.txt Importieren einer Anfangsversion in das SVN-Repository (lokal) # # Quelldirectory ist in: /home/bell/Src/Einleitung # svn import /home/bell/Src/Einleitung \ file:///home/bell/Subversion/Einleitung -m "Initialzustand" chmod -R g+ws /home/bell/Subversion # *) # Repository befindet sich in /home/bell/Subversion/Einleitung # *) Notwendig, wenn fremde Nutzer auf das Repository zugreifen sollen. UNIX-File-Zugriffsrechte beachten!!! Alle Nutzer müssen in der Gruppe svnuser sein!!!! |
next | back | 2017 - 42 | Fri Apr 7 14:46:40 CEST 2017 |
Arbeiten mit einem lokalen Repository # neue Sandbox erzeugen mkdir Sandbox # Füllen der Sandbox cd Sandbox svn checkout file:///home/bell/Subversion/Einleitung # Inhalt der Sandbox ls Einleitung Makefile sysconf2.c sysconf.c # Veränderungen vornehmen und testen cd Einleitung vi sysconf.c make ./sysconf # Senden der Änderung svn commit # nur sysconf.c wird übertragen, die eventuell beim Testen # neu erzeugten Files kommen nicht ins Repository |
next | back | 2017 - 43 | Fri Apr 7 14:46:40 CEST 2017 |
Das Gleiche entfernt mittels svn+ssh Repository ist bei einem Nutzer als Server. Der Zugriff erfolgt remote die Zugriffsrechte haben. Erstellen des Repository auf dem Server!!! mkdir /home/bell/Subversion chgrp svnuser /home/bell/Subversion # *) chmod g+ws /home/bell/Subversion # *) svnadmin create /home/bell/Subversion chmod -R g+ws /home/bell/Subversion # *) Übertragen einer Anfangsversion ins Repository (remote) # Quellen in /home/bell/Src/Einleitung cd /home/bell/Src/Einleitung svn import . svn+ssh://localhost/home/bell/Subversion/Einleitung \ -m "Initialzustand" # evnetuell lokal auf dem Server nachbessern: chmod -R g+ws /home/bell/Subversion # *) *) Notwendig, wenn fremde Nutzer auf das Repository zugreifen sollen. UNIX-File-Zugriffsrechte beachten!!! Alle Nutzer müssen in der Gruppe svnuser sein!!!! |
next | back | 2017 - 44 | Fri Apr 7 14:46:40 CEST 2017 |
Arbeiten mit den Daten mittels svn+ssh (remote) # Erzeugen eines Buddelkastens mkdir Sandbox # Ab in den Buddelkasten cd Sandbox # Spielzeug holen svn checkout \ svn+ssh://localhost/home/bell/Subversion/Einleitung # Anschauen was man bekommen hat ls Einleitung # neues Spielzeug ausprobieren cd Einleitung # Spielzeug modifizieren und schauen ob es noch funktioniert vi sysconf2.c # ändern der Daten make # hoffentlich schöneres Spielzeug zurückgeben # Senden der Änderung svn commit |
next | back | 2017 - 45 | Fri Apr 7 14:46:40 CEST 2017 |
Das Gleiche mit Apache2 - Repository wird auf einem WWW-Server verwaltet Vorbereiten des Apache-Servers (SuSE 11.4) Module dav, dav_svn, authz_svn aktivieren ( /etc/sysconfig/apache2 : APACHE_MODULES=" ... dav dav_svn authz_svn ...) SVN-Location in Konfiguration einfügen ( /etc/apache2/conf.d/subversion.conf) <IfModule mod_dav_svn.c> <Location /Einleitung> DAV svn SVNPath /srv/svn/repos/Einleitung AuthType Basic AuthName "Authorization SVN" AuthUserFile /srv/svn/passwdfile Require valid-user </Location> </IfModule> Direktory erzeugen: mkdir -p /srv/svn/repos/Einleitung svnadmin create --fs-type fsfs /srv/svn/repos/Einleitung chown -R wwwrun /srv/svn/repos/Einleitung Erstinitialisierung schon als entfernter Nutzer svn import /home/bell/Src/Einleitung \ http://localhost/Einleitung/ -m "Initialwert" |
next | back | 2017 - 46 | Fri Apr 7 14:46:40 CEST 2017 |
Anzeigen: svn ls http://localhost/Einleitung svn log http://localhost/Einleitung Auschecken, bearbeiten, einchecken: svn checkout http://localhost/Einleitung cd Einleitung vi sysconf.c svn commit svn log http://localhost/Einleitung Im Browser unter http://localhost/Einleitung/ anzeigbar. |
next | back | 2017 - 47 | Fri Apr 7 14:46:40 CEST 2017 |
GIT - Stupid Content Tracker ============================ GIT wurde von Linus Torwalds ursprünglich für die Verwaltung der LINUX- Kernel-Quellen entworfen und sollte viel besser sein, als die bis dahin benutzten Versionsverwaltungssysteme. Inzwischen beteiligt sich eine größere Gruppe von Entwicklern - über 50 primäre Authoren - an der Weiterentwicklung von GIT. Wesentliche Merkmale von GIT ---------------------------- Verteilte Entwicklung, jeder Entwickler hat sein eigenes vollständiges Repository, dadurch auch viele Duplikate. Unterstützung für nicht lineare Entwicklung (Verzweigungen und Zusammenführungen möglich) Krypthografische Authentifikation der History des Projektes Code-Reviews einfacher durchführbar Effiziente Unterstützung für sehr große Projekte Toolkit Design - viele kleine Werkzeuge gehören zu Git Es gibt Übergangsmöglichkeiten zu anderen Versionsverwaltungssystemen |
next | back | 2017 - 48 | Fri Apr 7 14:46:40 CEST 2017 |
Dokumentationen --------------- Im Netz: http://git-scm.com/ - GIT Homepage http://gitref.org/ - GIT Reference http://git-scm.com/course/svn.html - GIT für SVN-Nutzer http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html - kurzes GIT Tutorial http://www.kernel.org/pub/software/scm/git/docs/everyday.html - Die 20 wichtigsten Kommandos Manuals: git - GIT mit allen Unterkommandos git-help - GIT Help-Funktion gitk - GIT Repository-Browser gittutorial gitcore-tutorial gittutorial-2 - Tutorials git selbst: git help xxxx - GIT Funktion xxxx Mit Firefox lokale Files lesen (ab SuSE 11.4): firefox file:///usr/share/doc/packages/git-core/ firefox file:///usr/share/doc/packages/git-core/user-manual.html firefox file:///usr/share/doc/packages/git-core/everyday.html |
next | back | 2017 - 49 | Fri Apr 7 14:46:40 CEST 2017 |
Programmübersicht ----------------- git - The stupid content tracker Enhält alle Unterkommandos gitk - The git repository browser git-cvsserver - A CVS server emulator for git git-shell - Restircted login shell for GIT-only SSH access git-receive-pack - Receive what is pushed into the repository git-upload-archive - Send archive back to git-archive git-upload-pack - Send objects packed back to git-fetch-pack |
next | back | 2017 - 50 | Fri Apr 7 14:46:40 CEST 2017 |
Das git-Kommando > git usage: git [--version] [--exec-path[=<path>]] [--html-path] [-p|--paginate|--no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [-c name=value] [--help] <command> [<args>] Die allgemein verwendeten Git-Kommandos sind: add stellt Dateiinhalte zur Eintragung bereit bisect Findet über eine Binärsuche die Änderungen, die einen Fehler verursacht haben branch Zeigt an, erstellt oder entfernt Zweige checkout Checkt Zweige oder Pfade im Arbeitszweig aus clone Klont ein Projektarchiv in einem neuen Verzeichnis commit Trägt Änderungen in das Projektarchiv ein diff Zeigt Änderungen zwischen Versionen, Version und Arbeitszweig, etc. an fetch Lädt Objekte und Referenzen von einem anderen Projektarchiv herunter grep Stellt Zeilen dar, die einem Muster entsprechen init Erstellt ein leeres Git-Projektarchiv oder initialisiert ein bestehendes neu |
next | back | 2017 - 51 | Fri Apr 7 14:46:40 CEST 2017 |
log Zeigt Versionshistorie an merge Führt zwei oder mehr Entwicklungszweige zusammen mv Verschiebt oder benennt eine Datei, ein Verzeichnis, oder eine symbolische Verknüpfung um pull Fordert Objekte von einem externen Projektarchiv an und führt sie mit einem anderen Projektarchiv oder einem lokalen Zweig zusammen push Aktualisiert externe Referenzen mitsamt den verbundenen Objekten rebase Baut lokale Versionen auf einem aktuellerem externen Zweig neu auf reset Setzt die aktuelle Zweigspitze (HEAD) zu einem spezifizierten Zustand zurück rm Löscht Dateien im Arbeitszweig und von der Bereitstellung show Zeigt verschiedene Arten von Objekten an status Zeigt den Zustand des Arbeitszweiges an tag Erzeugt, listet auf, löscht oder verifiziert ein mit GPG signiertes Markierungsobjekt Siehe 'git help <Kommando>' für weitere Informationen zu einem spezifischen Kommando |
next | back | 2017 - 52 | Fri Apr 7 14:46:40 CEST 2017 |
Erste Schritte mit git (lokal) Grundeinstellungen für eine Person git config --global user.name "Musterfrau" git config --global user.email "Musterfrau@mailadresse.de" Es wird ~/.gitconfig angelegt. Hilfe lesen: git help # Allgemeine Informationen über Hilfen git help log # lesen der Hilfe für log Einrichten des ersten GIT-Repositories mkdir ~/Git/Einleitung # Mein allgeines Git-Verzeichnis cd ~/Git/Einleitung git init --share=group # GIT mit Gruppenzugriffsrechten # initialisieren # locales leeres Repository entsteht cp ~/Src/Einleitung . # einfüllen meiner Files git add . # hinzufügen aller aktueller Files zur Verwaltung # Achtung die Files sind noch nicht im Repository git commit -a # Erstmalig Übertragung der Files in Repository # # das Repository befindet sich unter # ./.git Hier können wir auch gleich arbeiten. |
next | back | 2017 - 53 | Fri Apr 7 14:46:40 CEST 2017 |
Benutzung im Master cd ~/Git/Einleitung vi sysconf2.c git commit sysconf2.c vi sysconf2.c vi sysconf.c git commit sysconf.c sysconf2.c # oder git commit -a # alle geänderten Files werden übertragen |
next | back | 2017 - 54 | Fri Apr 7 14:46:40 CEST 2017 |
Arbeiten mit mehreren Nutzern neuer Nutzer (tbell) cd # /home/tbell/ mkdir Sandbox cd Sandbox # hierfuer sind Zugriffsrechte auf /home/bell/Git/Einleitung notwendig # git clone /home/bell/Git/Einleitung Einleitung.neu cd Einleitung.neu vi sysconf.c git commit -a git log vi Bemerkung git add Bemerkung git commit Bemerkung Datenübertragung neuer Nutzer (tbell) --> Master (bell) Master (bell): cd ~/Git/Einleitung # holen vom neuen Nutzer git pull /home/tbell/Sandbox/Einleitung.neu master vi Bemerkung git commit -a Datenübertragung Master --> neuer Nutzer Neuer Nutzer (tbell) cd ~/Sandbox/Einleitung.neu # Holen vom Master git pull /home/bell/Git/Einleitung master |
next | back | 2017 - 55 | Fri Apr 7 14:46:40 CEST 2017 |
Arbeiten mit Branches cd ~/Git/Einleitung # Branch "spielen" erzeugen git branch spielen # Anzeigen aller Branches git branch git checkout spielen # Wechseln nach spielen git branch vi Spielen git add Spielen # in spielen neues File Spielen git commit -a # Uebertragen ls git checkout master # wechseln nach master ls # Spielen fehlt git merge spielen ls # Spielen vorhanden weitere Kommandos git log #E History git show <hash-wert> Änderung genau anschauen git show HEAD # letzte Änderung anzeigen git show spielen # letzte Änderung des Branches spielen git tag version1 git branch -D spielen # Branch spielen wegwerfen |
next | back | 2017 - 56 | Fri Apr 7 14:46:40 CEST 2017 |
GIT mit zentralem Server 1. leeres GIT-Repository auf dem zentralem GIT-Server einrichten 2. Arbeiten mit zentralem GIT-Repository git config --global http.sslVerify false # git config --global user.name "Jan-Peter Bell" git config --global user.email "bell@informatik.hu-berlin.de" git config --global push.default matching cd Git # holen leeres Repository git clone https://bell@git.informatik.hu-berlin.de/repos/UNIX/Socket cd Socket # füllen der Daten in das lokale Direktory cp -r ../Orginal/Socket/* . git commit -a # aktualisieren lokales Repository git push origin master # uebertragen der Anfangsversion zum Server vi asdfdsa.c # editieren git commit -a # aktualisieren lokales Repository git push origin master # uebertragen der Änderung zum Server |
back | 2017 - 57 | Fri Apr 7 14:46:40 CEST 2017 |