Ergebnis 1 bis 10 von 10

Thema: Subversion Tutorial

  1. #1
    TP-Specialist Avatar von max.m
    Registriert seit
    Dec 2005
    Ort
    Stuttgart
    Beiträge
    2.021

    Subversion Tutorial

    Hier gibt es ein Tutorial zu Subversion, es wird bisher nur Windows berücksicht, Linux soll noch folgen.
    Zuerst möchte ich mich an dieser Stelle bei den Korrekturlesern Cybergreek, fuchzga und Florian für die geopferte Zeit bedanken.
    Inhaltsverzeichnis:

    1 Allgemeines
    1.1 Allgemeine Links
    1.2 Warum Versionsverwaltung? Änderungen zum Entwicklungsprozess ohne Versionsverwaltung
    1.3 Begrifflichkeiten
    2 Server aufsetzen und konfigurieren
    2.1 Links
    2.2 Apache
    2.3 Subversion
    3 Erste Operationen
    3.1 Hinweise
    3.2 Links
    3.3 Nach dem ersten Auschecken (gilt für alle Varianten)
    3.4 TortoiseSVN
    3.5 Kommandozeile
    3.6 Eclipse



    1 Allgemeines

    1.1 Allgemeine Links

    Linksammlung Subversion:
    http://weblogs.asp.net/nleghari/arti...ubversion.aspx

    Online Buch Versionskontrolle mit Subversion (überwiegend deutsch) mit Befehlsreferenz:
    http://svnbook.red-bean.com/nightly/de/index.html

    Einführung in Subversion (Theorie und Probleme von Versionskontrollsystemen):
    http://informatik.unibas.ch/lehre/ss...ehrung-svn.pdf

    PDF über Tags und Branches in Subversion:
    http://informatik.unibas.ch/lehre/hs...9_branches.pdf

    Subversion Befehlsreferenz-Karte als PDF und PNG:
    http://www.addedbytes.com/cheat-shee...n-cheat-sheet/

    Subversion-Clients für Apple und Linux (von TortoiseSVN empfohlen):
    http://tortoisesvn.net/node/58

    Apache Dokumentation (deutsch):
    http://httpd.apache.org/docs/2.2/de/

    Eclipse PDT (PHP Development Tools):
    http://www.eclipse.org/pdt/


    1.2 Warum Versionsverwaltung? Änderungen zum Entwicklungsprozess ohne Versionsverwaltung


    • Sourcecode wird zentral auf einem Server gespeichert (einfaches Backup am Server möglich, einfache Verteilung).
    • Versionen werden von Subversion verwaltet. Subversion kann jeden Zustand nach Datum und Uhrzeit wiederherstellen.
    • Die Entwickler ziehen sich die aktuellste Version des Sourcecodes vom Server in ihre lokale Arbeitskopie.
    • Subversion kann die meisten Konflikte (Änderungen an einer Datei von unterschiedlichen Entwicklern) selbst lösen. Manuelles Eingreifen ist nur selten nötig.
    • Entwickler können Änderungen rückgängig machen, man kann auf alte Versionsstände zugreifen.
    • Unterschiedliche Versionen einer Software bei unterschiedlichen Kunden stellen auch kein Problem dar, es kann in Zweigen entwickelt werden, sogenannten Branches. (Beispiel: Kunde 1 hat Version 1, Kunde 2 hat Version 2, aus irgendwelchen Gründen bekommt Kunde 1 Version 2 nicht. Kunde 1 entdeckt einen Bug in Version 1. Der wird jetzt mittels eines Branches für Version 1 behoben, falls der Fehler auch in Version 2 noch vorhanden ist kann er einfach gemerged werden und braucht nicht zweimal gecoded werden.)


    1.3 Begrifflichkeiten

    Grundbegriffe von Subversion

    Repository: der Ordner auf dem Server in welchem zentral auf dem Subversion-Server die Sourcecode-Dateien und Verzeichnisse gespeichert werden. Es wird nicht nur die aktuelle Version (Revision) gespeichert sondern alle Revisionen. Es kann auf dem Server für unterschiedliche Projekte unterschiedliche Repositories geben.

    Revision: eindeutiger Versionsstand des gesamten Repositories.

    Lokale Arbeitskopie / Working Copy: nach dem ersten checkout hat man den aktuellen Stand des Repository lokal auf dem Arbeitsrechner vorliegen. Auf diesem Stand entwickelt man.

    auschecken / checkout: initiales Laden des Repository als lokale Arbeitskopie.

    update: in eine vorhandene lokale Arbeitskopie den neuesten Stand aus dem Repository laden.

    add: neue Dateien und Verzeichnisse zum Hinzufügen in das Repository markieren.

    commit: Änderungen in das Repository übertragen. Dabei werden auch die durch add markierten Ordner und Dateien ins Repository geladen.

    mergen: nennt man das Zusammenführen zweier Versionen einer Datei (Entwickler A und B checken Änderungen in ein und derselben Datei ein). Wird von Subversion automatisch gemacht, in Ausnahmefällen kommt es zu Konflikten, dann muss der Entwickler manuell mergen.

    Verzeichnisstruktur: die typische Verzeichnisstruktur per Definition von Subversion sieht folgendermaßen aus:

    - Repositoryname
    - branches
    - tags
    - trunk

    In den Verzeichnissen wird jeweils gespeichert: siehe Erklärungen branch, tag, trunk.

    branch / Verzweigung: zusätzlicher Entwicklungszweig, z.B. für Bugfixing. Bei Bugfixing werden nur die Fixe auf dem Branch entwickelt, alles andere wird auf dem Hauptentwicklungszweig weiterentwickelt. Der Fix wird dann in den Hauptentwicklungszweig gemerged. Ein branch wird im Repository im Verzeichnis „branches“ abgelegt. (Siehe Verzeichnisstruktur). Beispielhaft könnte das so aussehen:

    Subversion Tutorial-1_branch.jpg

    Links ist der Hauptentwicklungszweig, zu Versionen 1 und 2 gibt es jeweils einen Fixbranch. Heißt: Version 1 geht in Produktion, parallel wird schon für das nächste Release auf dem Hauptentwicklungszweig weiterentwickelt. In Produktion tritt ein Bug auf, also wird ein Fixbranch für Version 1 erstellt, da die Weiterentwicklung für Version 2 nicht mit dem Fix für Version 1 in Produktion darf.

    tag / Markierung: ist ein Versionsstand der genau so „eingefroren“ wird. Gespeichert wird dieser Stand als Kopie im Verzeichnis „tags“. (Siehe Verzeichnisstruktur).

    trunk /Hauptentwicklungszweig: hier werden die Dateien für das Projekt gespeichert.

    Im folgenden zweiten Teil geht es darum wie man einen Subversion-Server mit SSL-Verschlüsselung unter Windows aufsetzt und konfiguriert.
    Geändert von max.m (18.05.2010 um 06:02 Uhr)

  2. #2
    TP-Specialist Avatar von max.m
    Registriert seit
    Dec 2005
    Ort
    Stuttgart
    Beiträge
    2.021

    Server mit SSL-Verschlüsselung unter Windows aufsetzen und konfigurieren

    2 Server aufsetzen und konfigurieren


    Hinweis:
    Dieses Tutorial habe ich unter einer VMWare mit Windows XP Professional und Windows 7 getestet.

    2.1 Links

    XAMPP Download: http://www.apachefriends.org/de/xampp-windows.html#628
    Alternatives, bei Entwicklern sehr beliebtes Paket, bringt u.a. Apache, PHP, MySQL mit.

    Subversion Download: http://sourceforge.net/projects/win32svn/

    Apache Download: http://www.apache.org/dist/httpd/binaries/win32/

    Visual SVN Server Download: http://www.visualsvn.com/server/
    Auf Visual SVN Server werde ich nicht näher eingehen, damit kann man aber schnell einen lauffähigen SVN-Server unter Windows aufsetzen.

    Für dieses Tutorial wird entweder das Apache-Paket oder XAMPP benötigt.

    2.2 Apache

    Beschreibung:
    In diesem Kapitel installieren wir den Apache, erstellen ein SSL-Zertifikat und konfigurieren Apache für den Zugriff über https.

    Fehleranalyse:
    wenn der Apache nicht mehr startet oder Fehler auftreten ist ein Blick ins Error-Log des Apache sinnvoll. Zu finden unter: C:\pfad\zum\apache\logs\error.log

    Hinweis für Benutzer die Skype installiert haben:
    Skype belegt standardmäßig den Port 80, dadurch gibt es Probleme mit dem Apache weil Port 80 schon belegt ist. Deshalb vor der Installation vom Apache in Skype auf Aktionen -> Optionen -> Erweitert -> Verbindung -> bei „Ports 80 und 443 als Alternative…“ das Häkchen entfernen. Skype neu starten und der Port 80 sollte frei sein.

    Apache installieren:
    Paket httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi (aktuelle Version bei Erstellung des Tutorials) von o.g. Link herunterladen und installieren.
    Alternativ kann man auch auf das beliebte Paket XAMPP von den Apachefriends benutzen
    (http://www.apachefriends.org/de/xampp-windows.html#628). Es ist jedoch unbedingt der Punkt Sicherheit http://www.apachefriends.org/de/xampp-windows.html#1217 zu beachten, vor allem wenn das ganze produktiv eingesetzt werden soll! Die Version zum nativen Apache ist nur geringfügig anders (XAMPP: Apache 2.2.14, OpenSSL 0.9.8l; nativ: Apache 2.2.15, OpenSSL 0.9.8m-r2).

    Apache starten:
    C:\pfad\zum\apache\Apache-2.2\bin\httpd.exe aufrufen (DOS-Box nicht schließen, sonst wird Apache wieder beendet).

    Test ob Apache läuft:
    im Browser localhost eintippen, dann sollte eine Seite mit „It works!“ angezeigt. Falls nicht: Punkt Fehleranalyse beachten.

    Überprüfen ob Apache einen Path-Eintrag hat:
    (Rechtsklick Arbeitsplatz -> Eigenschaften -> Erweitert -> Umgebungsvariablen). Bei Systemvariablen schauen ob die Variable Path einen Eintrag für Apache hat, wenn nicht hinter den letzten Eintrag ein Semikolon setzen und den Pfad eintragen: C:\Pfad\zum\apache\bin hinzufügen.

    SSL
    Warum überhaupt SSL-Verschlüsselung:
    Bei SSL geht es um Sicherheit, der Datenverkehr wird verschlüsselt. An dieser Stelle zitiere ich einfach die Wikipedia:
    http://de.wikipedia.org/wiki/Hyperte...rotocol_Secure

    „Das HTTPS-Protokoll wird zur Verschlüsselung und zur Authentifizierung der Kommunikation zwischen Webserver und Browser im World Wide Web verwendet. Ohne Verschlüsselung sind Web-Daten für jeden, der Zugang zum entsprechenden Netz hat, als Klartext lesbar. Mit der zunehmenden Verbreitung von Funkverbindungen, die etwa an WLAN-Hotspots häufig unverschlüsselt ablaufen, nimmt die Bedeutung von HTTPS zu, da hiermit die Inhalte unabhängig vom Netz verschlüsselt werden. Es stellt dabei das einzige Verschlüsselungsverfahren dar, das ohne gesonderte Softwareinstallation auf allen Internet-fähigen Computern unterstützt wird. Die Authentifizierung dient dazu, dass sich jede Seite der Identität des Verbindungspartners vergewissern kann – ein Problem, das durch Phishing-Angriffe zunehmend Bedeutung bekommt.“

    Zum einfachen Test in eurem lokalen Netzwerk ist die SSL-Verschlüsselung nicht nötig, im produktiven Einsatz, vor allem mit Zugriff über das Internet, ist die Verschlüsselung dringend zu empfehlen.

    SSL-Zertifikat erstellen:
    Die verfügbaren Kommandos kann man sich auf der Kommandozeile auflisten lassen indem man einen „falschen“ Befehl eintippt, z.B.:
    Code:
    openssl –help
    Dann kommt dieser Fehler „openssl:Error: '-help' is an invalid command“ und eine Befehlsliste. Eine andere Möglichkeit kenne ich leider nicht.
    Die Onlinedoku ist hier zu finden: http://www.openssl.org/docs/apps/openssl.html

    Auf der Kommandozeile ins Apache\conf-Verzeichnis navigieren: C:\pfad\zum\apache\conf und folgenden Befehl eintippen.
    Hinweis für XAMPP: zuvor noch die Zielwahl-Datei „openssl“ aus dem Verzeichnis C:\pfad\zum\apache\bin nach C:\pfad\zum\apache\conf kopieren.
    Code:
    openssl req -config openssl.cnf -new -out localhost.csr
    Die Abfragen beantworten.

    Danach folgenden Befehl eintippen:
    Code:
    openssl rsa -in privkey.pem -out localhost.key
    Wieder Abfrage eintippen (Pass Phrase muss mit der Pass Phrase einen Schritt davor
    übereinstimmen).

    Jetzt folgenden Befehl eintippen:
    Code:
    openssl x509 -in localhost.csr -out localhost.cert -req -signkey localhost.key -days 500
    httpd.conf anpassen:
    Bevor man Änderungen vornimmt empfehle ich eine Sicherungskopie der httpd.conf zu erstellen. httpd.conf (C:\pfad\zum\apache\conf\httpd.conf) in einem Editor öffnen. Eintrag
    Code:
    Listen 80
    suchen und eine Zeile darunter hinzufügen:
    Code:
    Listen 443
    Diese Zeile suchen (Bei XAMPP nicht nötig):
    #LoadModule ssl_module modules/mod_ssl.so
    und den Kommentar (#) am Anfang der Zeile entfernen.

    Folgenden Block von:
    Code:
    <IfModule ssl_module>
    bis:
    Code:
    </IfModule>
    auskommentieren (# an den Anfang der Zeile).

    Darunter folgenden Block hinzufügen:
    Code:
    SSLMutex default
    SSLRandomSeed startup builtin
    SSLSessionCache none
    <VirtualHost *:443>
       SSLEngine On
       SSLCertificateFile "C:/pfad/zum/apache/conf/localhost.cert"
       SSLCertificateKeyFile "C:/pfad/zum/apache/conf/localhost.key"
       DocumentRoot "C:/pfad/zum/apache/htdocs"
    </VirtualHost>
    Hinweis XAMPP: Zeile
    Code:
    Include "conf/extra/httpd-ssl.conf"
    auskommentieren.

    allgemeiner Hinweis:
    Bei SSLCertificateFile SSLCertificateKeyFile und DocumentRoot die Pfade anpassen. Darauf achten dass man Slashs und keine Backslashs verwendet. Die Anführungszeichen bei den Pfadangaben sind wichtig wenn der Pfad Leerzeichen enthält, können ansonsten weggelassen werden.

    Im Verzeichnis DocumentRoot liegen eure Webseiten.

    Datei speichern und Apache neu starten.

    Apache neu starten und Aufruf testen:
    In der geöffneten DOS-Box aus "Apache starten" mit Strg + C den Apache beenden (oder einfach die DOS-Box schließen) und den Apache wieder starten.

    Aufruf ohne SSL: http://localhost/
    Bzw.: http://localhost:8080/
    Aufruf mit SSL: https://localhost/
    Hier muss man beim ersten Aufruf das Zertifikat installieren, am besten permanent.

    2.3 Subversion

    Beschreibung:
    In diesem Kapitel installieren wir Subversion, erstellen ein Subversion-Repository und für den Zugriff User- / Passwort-Dateien und konfigurieren Apache für SVN.

    Subversion installieren:
    Paket Setup-Subversion-1.5.1.en-us.msi (aktuelle Version bei Erstellung des Tutorial) von o.g. Link herunterladen und installieren. Darauf achten dass die Version zum installierten Apache passt (steht unter „Description“). Binding Apache 2.2 auswählen. Danach überprüfen ob es einen Path-Eintrag für Subversion gibt (Rechtsklick Arbeitsplatz -> Eigenschaften -> Erweitert -> Umgebungsvariablen). Bei Systemvariablen schauen ob die Variable Path einen Eintrag für Subversion hat, wenn nicht hinter den letzten Eintrag ein Semikolon setzen und den Pfad eintragen: C:\Pfad\zu\subversion\bin hinzufügen.

    Ordner für Repositories und User / Passwort-Datei anlegen:
    Unter C:\pfad\zur\lokalen\arbeitskopie die beiden Ordner svn (Ordner für die Repositories) und svn_conf (Ordner für User / Passwort-Datei) anlegen.

    User / Passwort-Datei erzeugen:
    Auf der Kommandozeile in das Verzeichnis C:\pfad\zum\apache\bin navigieren und folgenden Befehl eintippen (max ist der Benutzername, pass.pwd der Dateiname der angelegt wird):
    Code:
    htpasswd -c C:\pfad\svn_conf\pass.pwd max
    Danach zweimal das Passwort eintippen. Um Benutzer hinzuzufügen einfach den Befehl wieder aufrufen und den Parameter –c weglassen. Ruft man den Befehl wieder mit -c auf sind die vorhandenen Benutzer weg (Datei wird neu angelegt).

    Repository anlegen:
    Mit der Konsole in das Verzeichnis C:\pfad\svn navigieren und folgenden Befehl eintippen (testrepo ist der Repositoryname). Die Konsole darf erst nach der Installation von Subversion, bzw. dem manuellen Path-Eintrag geöffnet worden sein, sonst zieht der Path-Eintrag nicht:
    Code:
    svnadmin create testrepo
    SVN in Apache aktivieren:
    Mit dem Explorer ins Subversionverzeichnis navigieren, dort aus dem bin-Verzeichnis die beiden Dateien:

    mod_dav_svn.so
    mod_authz_svn.so

    kopieren und im Apache-Modulverzeichnis (C:\pfad\zu\apache\modules) einfügen.

    Mit dem Explorer ins Subversionverzeichnis navigieren, dort aus dem bin-Verzeichnis die beiden Dateien:

    libdb44.dll
    intl3_svn.dll

    kopieren und im Apache-Verzeichnis bin (C:\pfad\zu\apache\bin) einfügen.

    httpd.conf editieren:
    Erst wieder eine Sicherungskopie anlegen.
    Datei C:\pfad\zum\apache\conf\http.conf in einem Editor öffnen und den Kommentar (#) in den folgenden Zeilen entfernen (Bei XAMPP nicht nötig):
    Code:
    #LoadModule dav_fs_module modules/mod_dav_fs.so
    #LoadModule dav_module modules/mod_dav.so
    Folgende zwei Zeilen an das Ende des LoadModule-Abschnittes hinzufügen:
    Code:
    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so
    Und an das Ende der Datei folgendes einfügen:
    Code:
    # Subversion Repo konfigurieren
    <Location /svn>
      DAV svn
      SVNListParentPath on
      SVNParentPath "C:\pfad\svn"
      SSLRequireSSL
      AuthType Basic
      AuthName "SVN Tutorial"
      AuthUserFile "C:\pfad\svn_conf\pass.pwd"
      Require valid-user
    </Location>
    Hinweis:
    SVNParentPath zeigt auf den Ordner der weiter oben im Abschnitt Ordner für Repositories und User / Passwort-Datei anlegen erstellt wurde.
    AuthUserFile zeigt auf die pass.pwd-Datei die weiter oben im Abschnitt User / Passwort-Datei anlegen erzeugt wurde.
    Die Anführungszeichen bei den Pfadangaben sind wichtig wenn der Pfad Leerzeichen enthält, können ansonsten weggelassen werden.
    SSLRequireSSL erzwingt eine https-Verbindung und in SVNParentPath liegen die Repositories.

    Datei speichern und Apache neustarten.

    Repository im Browser aufrufen:
    Aufruf ohne SSL: http://localhost/svn/testrepo/ (hier kommt mit SSLRequireSSL eine Fehlermeldung)
    Aufruf mit SSL: https://localhost/svn/testrepo/

    Im nächsten Teil behandeln wir die grundlegenden Operationen in Subversion.
    Geändert von max.m (26.03.2011 um 11:48 Uhr) Grund: Download-Link Subversion hat sich geändert

  3. #3
    TP-Specialist Avatar von max.m
    Registriert seit
    Dec 2005
    Ort
    Stuttgart
    Beiträge
    2.021
    3 Erste Operationen

    3.1 Hinweise

    Subversionclients die sich ins Betriebssystem integrieren behandle ich nur für Windows (TortoiseSVN).
    Für Linux und Mac OS siehe 1.1 allgemeine Links den letzten Link, ungetestet.

    Hier eine kleine Linksammlung für die Integration von Subversion in diversen IDE / Editoren:

    NetBeans:
    Subversionclient integriert: http://netbeans.org/features/ide/collaboration.html
    Guided Tour Subversion – Netbeans IDE 6.8 Tutorial: http://netbeans.org/kb/docs/ide/subversion.html

    Zend Studio auch integriert: http://www.zend.com/de/products/studio/features#source

    PhpED Integration recht einfach: http://www.nusphere.com/kb/technical...ed_and_svn.htm

    Komodo auch integriert: http://docs.activestate.com/komodo/4.4/scc.html

    Dreamweaver CS4 http://www.adobe.com/newsletters/edg...le1/index.html

    Zum Thema Checkout in Entwicklungsumgebungen behandle ich nur Eclipse.

    3.2 Links

    Tortoise SVN: http://tortoisesvn.tigris.org/
    Eclipse PDT: http://www.eclipse.org/pdt/
    Subclipse Update-Site für Eclipse: http://subclipse.tigris.org/update_1.6.x/

    3.3 Nach dem ersten Auschecken (gilt für alle Varianten)

    Typische Repository-Struktur (siehe Punkt Verzeichnisstruktur bei Begrifflichkeiten) anlegen: In der lokalen Arbeitskopie die drei Ordner branches, tags, trunk anlegen und committen.
    Anschließend checkt man nur noch direkt das gewünschte Verzeichnis aus (trunk, branch oder tag).

    Hier mal ein Beispiel welches man sich auschecken kann. Es handelt sich um das später noch erwähnte WinMerge, ein Open Source Mergetool welches wie viele Open Source-Projekte bei sourceforge.net gehostet ist.

    http://sourceforge.net/scm/?type=svn&group_id=13216

    Hinweis: Das Repository ist sehr groß, hat bei mir ca. 30 Minuten für den Checkout benötigt!

    3.4 TortoiseSVN

    Hinweis:
    Hier installieren wir den Windows-Subversionclient TortoiseSVN und die wichtigsten Befehle werden erklärt.

    Installieren (benötigt Adminrechte):
    TortoiseSVN herunterladen (http://tortoisesvn.net/downloads) und installieren. Das Programm bindet sich ins Kontextmenü ein, siehe Screenshot:

    Subversion Tutorial-2_tortoisekontextmenu.jpg

    Die wichtigsten Befehle
    Repository auschecken:

    Im Windowsexplorer nach C:\pfad\ordnername (wo dieser Ordner liegt ist erstmal egal, dorthin wird die lokale Arbeitskopie ausgecheckt) navigieren. Rechtsklick auf Ordnername dann im Kontextmenü auf „SVN Checkout“ klicken. Im folgenden Fenster die URL zum Repository angeben und wohin ausgecheckt werden soll.

    Subversion Tutorial-3_tortoisecheckout.jpg

    Nach dem checkout sieht man im Ordner testrepo den versteckten Ordner (vorausgesetzt der Explorer ist so konfiguriert dass diese angezeigt werden) das Verzeichnis „.svn“. In diesem Ordner werden bei checkout, update und commit Kopien der Dateien gespeichert. Das geht auf Kosten des Speicherplatzes, aber es können beispielsweise lokale Änderungen ohne Netzwerkverbindung angezeigt werden. Dieses Verzeichnis lässt man so und ändert nichts darin. So ein Verzeichnis wird in jedem Unterordner angelegt.

    Jetzt kann man wie von Windows gewohnt neue Ordner und Dateien in der lokalen Arbeitskopie anlegen. Diese sind jetzt noch nicht in Subversion sondern liegen nur lokal vor. Als erstes legen wir im Repository folgende Ordner an (siehe Kapitel 3.3):


    • branches
    • tags
    • trunk

    Add to Sourcecontrol:
    In der lokalen Arbeitskopie auf den Repositoryname rechtsklicken -> TortoiseSVN -> Add. Hier werden alle Dateien / Ordner angezeigt die geadded werden können. Nach Bedarf auswählen und mit OK bestätigen. Jetzt sind die Dateien zu Subversion hinzugefügt aber noch nicht für andere verfügbar.

    Committen:
    In der lokalen Arbeitskopie auf den Repositoryname rechtsklicken -> SVN Commit hier werden alle Dateien angezeigt die geändert wurden. Hier kann wieder selektiert werden. Bei Message kann (sollte) ein (sinnvoller!) Kommentar eingetragen werden. Mit OK bestätigen. Der Schritt Add to Sourcecontrol kann ausgelassen werden, bei Commit werden auch die noch nicht hinzugefügten Dateien / Ordner angezeigt. Die müssen nur selektiert werden und werden dann geadded und committet. Nach dem commit sind diese Dateien im zentralen Repository und für alle Entwickler verfügbar.

    Update:
    Lokale Arbeitskopie aus zentralem Repository aktualisieren.

    Diff:
    Vergleich der geänderten Datei (nur möglich wenn Änderungen vorgenommen wurden, ansonsten ist der Menüpunkt auch nicht sichtbar) in der lokalen Arbeitskopie mit der letzten Version im Repository.

    Diff with previous Version:
    Vergleich einer Datei mit der Vorgängerversion (Bei lokalen Änderungen wird die vorletzte Version aus dem Repository genommen nicht die letzte).
    Hinweis zu Diff: ich habe bei mir ein externes Mergetool namens WinMerge integriert. Download:
    http://winmerge.org/downloads/?lang=de
    Hinweise zur Subversion-Integration:
    http://winmerge.org/docs/manual/VersionControl.html

    Screenshot wie ein Diff mit Winmerge aussieht:
    Man sieht schön die farbliche Markierung der Änderung, in der Werkzeugleiste hat man die Möglichkeit zur nächsten, zur vorigen, zur ersten und zur letzten Änderung zu springen. Außerdem kann man alle Unterschiede nach rechts oder links kopieren, bzw. in der Textansicht durch Rechtsklick auf einen Unterschied diesen nach links oder rechts kopieren.

    Subversion Tutorial-4_diff.jpg

    Show Log:
    Änderungen der Revisionen anschauen.

    Repo Browser:
    hier kann man durch verschiedene Repositories browsen.

    Check for Modifications:
    die Änderungen in der lokalen Arbeitskopie.

    Revision Graph:
    hier kann man sich die Revisionen grafisch anzeigen lassen und z.B. die aktuelle lokale Revision markieren:

    Subversion Tutorial-5_revisiongraph.jpg

    Hier wurde in Revision eine Datei namens test.php angelegt. Diese wurde vier mal modifiziert und eingecheckt. Dann wurde sie in index.php umbenannt. Es gab wieder Änderungen bis Revision 158 und „Modified“ bedeutet dass in der lokalen Arbeitskopie Änderungen gemacht wurden die noch nicht committed wurden.

    Resolved:
    Subversion wird mitgeteilt dass ein Konflikt behoben wurde.

    Update to Revision:
    lokale Arbeitskopie zu einer bestimmten Revision updaten.

    Revert:
    damit kann man alle Änderungen in der lokalen Arbeitskopie rückgängig machen.

    Cleanup:

    bei Modifikationen in der lokalen Arbeitskopie werden die durchzuführenden Arbeiten in eine Log-Datei geschrieben, dann werden die betroffenen Ressourcen gesperrt und die in der Log-Datei eingetragenen Aktionen durchgeführt. Nach erfolgreicher Durchführung wird die Log-Datei gelöscht und die Sperre aufgehoben. Geht dabei etwas schief bleibt die Ressource gesperrt. In diesem Fall ruft man Cleanup auf, die Log-Datei wird dann falls nötig voll abgearbeitet und die Sperre aufgehoben.

    Lock:
    sperrt eine Datei (Verzeichnisse können nicht gesperrt werden). Nur der Entwickler der sie gelockt hat kann die Datei einchecken. Sinnvoll für binäre Dateien, die können nicht automatisch gemerged werden.

    Release Lock:
    hebt die Sperre auf, commit muss aber extra durchgeführt werden.

    Export:
    exportiert die lokale Arbeitskopie an eine andere Stelle. Ich nutze diese Funktion vor einem Deployment, die versteckten Ordner .svn werden nicht exportiert und sollen auch nicht deployed werden.

    Relocate:
    Repository umplatzieren, von URL nach URL.

    Settings:
    hier können allgemeine Einstellungen gemacht werden wie z.B. die Sprache umstellen, einen Proxy eintragen, etc.

    3.5 Kommandozeile

    Hinweis:
    Hier werden die wichtigsten Kommandos auf der Kommandozeile erklärt.

    Hilfe:
    Hilfe auf der Kommandozeile aufrufen:
    svn help
    svnadmin help
    Umgebungsvariable $SVN_EDITOR anlegen:

    1. Variable ist nur für die aktuell geöffnete Konsole gesetzt:

    Code:
    set SVN_EDITOR=C:\WINNT\notepad.exe
    2. Variable ist permanent gesetzt:
    Code:
    setx SVN_EDITOR C:\WINNT\notepad.exe -m
    Die Variable wird benötigt um beim commit einen Kommentar zu schreiben (alternativ kann der Kommentar auch direkt auf der Kommandozeile mitgegeben werden). Natürlich kann auch jeder beliebige andere Editor gesetzt werden (UltraEdit, Notepad++,…). Test ob die Umgebungsvariable richtig gesetzt ist: auf der Konsole folgendes eintippen:
    Code:
    set SVN_EDITOR
    alternative (so werden alle Umgebungsvariablen die mit SVN beginnen gelistet):
    Code:
    set SVN
    Dann sollte als Ergebnis folgendes ausgegeben werden:
    Code:
    SVN_EDITOR=C:\WINNT\notepad.exe
    Repository auschecken:
    In der Konsole ins gewünschte Verzeichnis navigieren (bei mir: C:\temp\svntut) und folgenden Befehl eintippen:
    Code:
    svn co https://localhost/svn/testrepo --username <Benutzername>  --password <Passwort>
    Passwort kann auch weggelassen werden (also inklusive –-password), dann wird danach gefragt und man kann es „unsichtbar“ eintippen. Beim ersten Checkout muss man das Zertifikat noch akzeptieren, am besten gleich permanent.

    Neuen Ordner und Datei anlegen (kann natürlich auch im Windowsexplorer gemacht werden):
    Folgenden Befehl auf der Konsole eintippen (zuvor ins lokale Repository\trunk navigieren):
    Code:
    mkdir ordner
    -> Enter (Ordner „ordner“ wurde angelegt)
    Code:
    cd ordner
    -> Enter (wechseln in den Ordner „ordner“)
    Code:
    copy con index.php
    eintippen und Enter drücken -> gewünschten Inhalt der Datei eintippen -> F6 drücken um Editiermodus zu beenden -> Enter zum beenden

    Add to Sourcecontrol:
    Folgenden Befehl auf der Konsole eintippen:
    Code:
    cd ..
    -> Enter (Ebene höher gehen, also von „ordner“ im vorigen Abschnitt aus gesehen)
    Code:
    svn add ordner
    eintippen (wird inklusive Unterordner / Dateien [index.php] geadded)

    Committen:
    Folgenden Befehl auf der Konsole eintippen:

    1. svn commit (Kommentar wird im externen Editor geschrieben) oder
    2. svn commit –m "Kommentar" (Kommentar wird direkt geschrieben, Variable $SVN_EDITOR muss nicht gesetzt sein)

    eintippen, dadurch werden die Änderungen ins Repository geladen und sind jetzt für alle anderen Entwickler verfügbar.

    Tag erzeugen:
    Folgenden Befehl eintippen:
    Code:
    svn copy trunk tags/version1
    svn commit -m "Tag Version 1"
    Der Ordner version1 ist der Tag. Der Inhalt von trunk wird dort reinkopiert. Mit dem zweiten Befehl wird der Tag für alle Entwickler verfügbar gemacht, d.h. ins zentrale Repository überführt (commit).

    Branch erzeugen und auschecken:
    Am besten erzeugt man den Branch direkt im Repository:
    Code:
    svn copy –m "Brunch 1" https://localhost/svn/testrepo/trunk
    https://localhost/svn/testrepo/branches/branch1
    Den Branch kann man dann mit svn checkout auschecken:
    Code:
    svn checkout https://localhost/svn/testrepo/branches/branch1
    Branch in Hauptentwicklungszweig überführen und einchecken:
    Auf der Kommandozeile in trunk wechseln.
    Entwicklungszweig in trunk überführen:
    Code:
    svn merge https://localhost/svn/testrepo/branches/branch1
    Zusammenführung einchecken:
    Code:
    svn commit -m "Zusammenführung Branch mit Hauptzweig"
    3.6 Eclipse

    Subclipse installieren (hier nicht behandelte Alternative: Subversive):
    Update-Site http://subclipse.tigris.org/update_1.6.x/ in Eclipse eintragen (Help -> Install New Software -> Add), die drei Einträge markieren und installieren (siehe Screenshot).

    Subversion Tutorial-6_subclipseupdate.jpg

    SVN-Einstellungen:
    Die Einstellungen für SVN sind in Eclipse zu finden unter: Window -> Preferences -> Team -> SVN

    Repository auschecken:
    Dann File -> New –> Other -> SVN -> Checkout Projects from SVN -> Create a New Repository Location -> URL eintippen (https://localhost/svn/testrepo) und Next klicken. Select Folder auswählen was man braucht (im Normalfall den Trunk) -> Next. Die restlichen Einstellungen lassen und Finish klicken. Dann kommt das Fenster New Project, da entsprechend auswählen (hier habe ich PHP genommen, PHP -> PHP Project), weiterklicken, Project Name eingeben und Finish klicken. Somit hat man ein neues PHP-Eclipseprojekt direkt aus Subversion heraus erstellt.
    Die Subversion-Befehle findet man unter Rechstklick auf das Projekt (oder ein File oder einen Ordner) -> Team (ähnlich wie bei TortoiseSVN).

    Die von mir am häufigsten genutzten Befehle:
    Synchronize with Repository:
    hier wird eine Eclipse-View “Team Synchronize” geöffnet welche die Unterschiede zwischen der lokalen Arbeitskopie und dem Repository darstellt.

    Commit:
    man kann selektiv die Änderungen ins Repository übertragen.

    Update to Head:
    man lädt sich die neueste Version aus dem Repository.

    Update to Version:
    man kann sich eine bestimmte Version aus dem Repository holen.

    Branch / Tag und Merge:
    nutze ich ausschließlich auf der Kommandozeile.

    Show History:
    man kann sich die Änderungen der einzelnen Revisionen anschauen. Revision - Datum - Autor - Kommentar - betroffene Pfade.

    Add to Version Control:
    neu angelegt Dateien adden.

    Add to svn:ignore:

    Diese Dateien / Ordner werden von SVN ignoriert, also z.B. bei einem commit nicht mehr vorgeschlagen wenn sie Änderungen beinhalten.

    Cleanup:
    siehe Cleanup bei TortioseSVN.




    So, das war es. Viel Spass beim durcharbeiten. Wenn jemand Fehler findet bitte per PN an mich oder direkt hier im Thread.

    Gruß max.m

  4. #4
    TP-Moderator Avatar von Cybergreek
    Registriert seit
    Nov 2005
    Ort
    Köln
    Beiträge
    1.666
    Ich hatte es zwar vorher schon gelesen, aber auch an dieser Stelle ein dickes Lob!
    Grüße vom Griechen,
    Cybergreek!

    everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht

  5. #5
    TP-Specialist Avatar von max.m
    Registriert seit
    Dec 2005
    Ort
    Stuttgart
    Beiträge
    2.021
    Vielen Dank.

  6. #6
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678
    Zitat Zitat von Cybergreek Beitrag anzeigen
    Ich hatte es zwar vorher schon gelesen, aber auch an dieser Stelle ein dickes Lob!
    Ich habe es leider noch nicht gelesen, aber ich schließe mich dem Lob an. Bei dem Umfang -und mit Sicherheit bei der guten Qualität- könnte das Tut durchaus das Zeug zu einem Standardwerk haben! Chapeau!

  7. #7
    TP-Insider Avatar von gryphius
    Registriert seit
    Aug 2003
    Ort
    Bochum
    Beiträge
    503
    Nice Besten Dank!

  8. #8
    TP-Specialist Avatar von max.m
    Registriert seit
    Dec 2005
    Ort
    Stuttgart
    Beiträge
    2.021
    Bitte.

  9. #9
    TP-Newbie
    Registriert seit
    Mar 2011
    Beiträge
    1

    Thumbs up Super Tutorial

    Hallo,

    ich bedanke mich recht herzlich für dieses tolle Tutorial. Wäre sehr cool, wenn es auch noch die angekündigte Variante für Linux geben wird. Oder gibts die sogar schon?
    Hat alles super geklappt bei mir. Das einzige etwas schwierige war, Subversion runterzuladen.
    Da hat sich der Link geändert und der neue Link ist allgemein:
    http://subversion.apache.org/packages.html
    bzw. um deinem Tutorial zu folgen, habe ich diesen hier verwendet:
    http://sourceforge.net/projects/win32svn/

    Vielleicht spart sich jemand ja damit etwas Suchaufwand

    Viele Grüße
    Ein Leser

  10. #10
    TP-Specialist Avatar von max.m
    Registriert seit
    Dec 2005
    Ort
    Stuttgart
    Beiträge
    2.021
    Hallo Leser,

    freut mich dass es Dir gefallen hat.
    Die Linux-Variante gibt es noch nicht, ich habe SVN aber erst kürzlich auf einem Debian-Server aufgesetzt, evtl. habe ich die Tage Zeit und schreib die Schritte noch zusammen und ergänze das Ganze.

    Vielen Dank für den Hinweis zum Download-Link, habe ich im Tutorial geändert.

    Grüße max.m

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Subversion-Tutorial
    Von max.m im Forum Support-Forum
    Antworten: 18
    Letzter Beitrag: 17.05.2010, 22:07
  2. [Sonstige] Frage zu Subversion
    Von Master_T2 im Forum Traum-Dynamik
    Antworten: 4
    Letzter Beitrag: 11.04.2009, 19:01
  3. [Sonstige] Subversion Repository Webserver
    Von skaterpunk001 im Forum Traum-Dynamik
    Antworten: 12
    Letzter Beitrag: 20.09.2008, 20:27
  4. Subversion und Apache-Modul
    Von Master_T2 im Forum Traum-Dynamik
    Antworten: 1
    Letzter Beitrag: 19.06.2008, 17:15
  5. Subversion + Webserver
    Von gryphius im Forum Traum-Dynamik
    Antworten: 2
    Letzter Beitrag: 10.04.2006, 02:49

Stichworte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51