Subversion Repository unter Windows erstellen

Gute Links und Tutorials könnt ihr hier posten.
Antworten
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Donnerstag 11. Oktober 2007, 09:28

Hallo!

(Beim Schreiben dieses Berichts war Subversion in der Version 1.4.5 aktuell.)

Installieren:

Zuerst hole ich mir Subversion vom Webserver. Auf der Homepage http://subversion.tigris.org/ ist immer irgendwo ein Link zur aktuellen Version zu finden.

Mir passt die ZIP-Version besser als das automatisierte Setup. Diese ZIP-Version findet sich hier:
http://subversion.tigris.org/servlets/P ... olderID=91

Ganz unten: "svn-win32-1.4.5.zip"

Nun entpacke ich die Datei "svn-win32-1.4.5.zip" in irgendeinen Ordner. Dieser enthält jetzt den Ordner "svn-win32-1.4.5". Diesen benenne ich sofort nach "svn" um. Den Ordner "svn" kopiere ich jetzt in den Programme-Ordner von Windows.

Zielordner: *C:\Programme\svn*

Den "bin"-Ordner füge ich dem Windows-Pfad hinzu.
Dafür wird an die Umgebungsvariable *PATH* ";C:\Programme\svn\bin" (ohne die Anführungszeichen) angehängt.

Systemsteuerung -> System -> Erweitert -> Umgebungsvariablen

Damit wäre Subversion schon installiert und Einsatzbereit.

SVN-Repository erstellen:

Dazu erstelle ich mir den neuen Ordner *C:\svn*. Dann öffne ich die DOS-Konsole und wechsle mit dem Befehl ``CD \D C:\svn`` in diesen Ordner.

Das Kommandozeilenprogramm *svnadmin* ist unter Anderem auch dafür zuständig, neue Repositories zu erstellen.

Der Befehl ``svnadmin create mein_programm`` erstellt unterhalb des Ordners *C:\svn* das neue Repository *mein_programm*.

So ein Repository ist sozusagen der Container oder die Datenbank, in der alles aufbewahrt wird. Und es ist keine schlechte Idee, den gesamten Ordner *C:\svn* in den täglichen Sicherungen zu berücksichtigen.

Mehr hat man nicht zu tun um lokal ein SVN-Repository zu erstellen.

Tortoise-SVN:

Tortoise-SVN ist ein Tool, welches sich in den Windows-Explorer einfügt. Damit kann man, wunderbar einfach, die Daten eines Repositories verwalten.

Zu finden unter: http://tortoisesvn.net/

Man muss wissen, dass es immer zwei Orte gibt, an denen die Daten liegen. Einmal im Repository und einmal in der Arbeitskopie. Man arbeitet nicht direkt mit den Dateien im Repository, sondern mit den Dateien in der Arbeitskopie. Wenn man fertig ist, dann gleicht man die Arbeitskopie mit dem Repository ab.

Es hat sich eingebürgert, dass man in Subversion drei spezielle Ordner erstellt. *trunk*, *tags* und *branches*

In *trunk* findet sich immer die aktuelle Version der Dateien.

In *tags* liegen Kopien der Releases. Also der Dateien zu einem veröffentlichten Release.

Z.B. so:

Code: Alles auswählen

tags/release_0.0.1/
tags/release_0.1.0/
...
In Unterordnern von *branches* arbeitet man, wenn eine Änderung am Code den *trunk*-Zweig zu lange außer Gefecht setzen würde. Der Code im *trunk*-Ordner sollte nämlich immer funktionieren bzw. kompilierbar sein. Das ist wichtig, dass andere Entwickler auch damit arbeiten können.

Diese Ordner erstelle ich mit Tortoise-SVN. Zuerst erstelle ich mir aber noch den Ordner, in dem am Programm gearbeitet wird.

*C:\dev\mein_programm*

Wenn man im Explorer mit der rechten Maustaste auf den Ordner *mein_programm* klickt, dann findet man nach der Installation von Tortoise-SVN einen neuen Menüpunkt "Tortoise-SVN" im Kontextmenü. Dort klicke ich auf *Repo-Browser*. Danach werde ich gefragt, welches Repository ich öffnen möchte. Als URL gebe ich "file:///C:/svn/mein_programm" ein. -- Es öffnet sich der *Repo-Browser* und zeigt das eben erstellte, leere Repository.

Ein Rechtsklick auf das Repository eröffnet die Möglichkeiten, die man im Repo-Browser hat. Unter Anderem auch "Create folder...". Und Das setze ich auch ein um die drei Spezielordner zu erstellen.

Code: Alles auswählen

file:///J:/svn/mein_programm/
  |-branches/
  |-tags/
  |-trunk/
Man wird jedes Mal nach einer Bemerkung gefragt. Das ist ein wichtiger Punkt bei Subversion. So lässt sich später nachvollziehen, was wann von wem gemacht wurde. Übergehe diesen Schritt NIE. Gib immer etwas sinnvolles ein.


Noch etwas ist dabei wichtig. SEHR WICHTIG!!!

Verwende keine Umlaute oder Sonderzeichen. Weder in der Bemerkung noch als Ordner- oder Dateiname. Tu es nicht!

Es muss dir genügen, wenn ich hier behaupte: "Du bekommst Probleme, wenn du Umlaute verwendest! Sogar große Probleme."

Repository auschecken:

Nachdem die Spezezialordner erstellt wurden, genügt es fürs Erste, wenn wir sie nicht weiter beachten und einfach nur im *trunk*-Ordner arbeiten. Aber gearbeitet wird ja nie direkt im Repository sondern in der Arbeitskopie. Deshalb müssen wir den *trunk*-Ordner auschecken und damit unsere Arbeitskopie als SVN-Arbeitskopie kennzeichnen.

Mit der rechten Maustaste klicke ich dazu wieder auf den Ordner *C:\dev\mein_programm*. Im Kontextmenü unterhalb des Menüpunktest *Tortoise-SVN* findet man den Menüpunkt *Checkout*. Es öffnet sich das Fenster "Checkout".

Als URL of repository gebe ich "file:///C:/svn/mein_programm/trunk" ein. Als Checkout directory sollte automatisch "C:\dev\mein_programm" angegeben sein. Mit einem Klick auf die Schaltfläche "OK" wird der Ordner *C:\dev\mein_programm* als Arbeitskopie von *file:///C:/svn/mein_programm/trunk* markiert. Dazu hat SVN automatisch den unsichtbaren Unterordner *.svn* erstellt. Dieser darf nicht gelöscht werden, da SVN diesen Ordner zum Arbeiten braucht.

Arbeiten:
Das ist jetzt nur ein Beispiel mit einer Textdatei. Aber so funktioniert es auch mit Code, Binärdateien, Bildern, ...

Ich erstelle in der Arbeitskopie die Textdatei "hallo_welt.txt". In diese Textdatei schreibe ich "Hallo Welt". Die Datei ist noch nicht registriert. Das erledige ich mit Tortoise-SVN.

Ein Klick mit der rechten Maustaste auf die neue Textdatei. --> Tortoise-SVN --> Add...

Und schon ist die Datei gekennzeichnet. Sie ist noch nicht im Repository. Das erledige ich mit einem Klick mit der rechten Maustaste auf den Ordner *C:\dev\mein_programm*. --> Tortoise-SVN --> Commit...

Nicht vergessen, jede Änderung im Repository muss beschrieben werden, damit man später nachverfolgen kann, wer, was, wann und vielleicht sogar warum am Repository geändert hat.

Nachdem man etwas an der Arbeitskopie geändert hat, muss man nur wieder ein neues Commit durchführen um das Repository auf dem neuesten Stand zu halten. Dabei wird jeder Versionsstand gespeichert. So kann man jederzeit wieder zu einer alten Version zurück kehren.

Wenn ich jetzt also die Textdatei ändere und dann noch einmal einen Commit durchführe, dann wird im Repository die alte und die neue Version der Textdatei gespeichert.

Mit *Tortoise-SVN* --> Show log... kannst du dir die Geschichte der Textdatei ansehen. Du kannst dir damit auch die Unterschiede zwischen den Versionen der Textdatei anzeigen lassen. Probier einfach mal aus, was du dort alles mit der rechten Maustaste tun kannst.

Bild

Bild

mfg
Gerold
:-)
Zuletzt geändert von gerold am Donnerstag 11. Oktober 2007, 10:07, insgesamt 1-mal geändert.
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Donnerstag 11. Oktober 2007, 10:00

...fertig bin. ;-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Donnerstag 11. Oktober 2007, 11:58

Wer sich mit TortoiseMerge z.B. wegen der visuellen Darstellung nicht ganz anfreunden kann, sollte einen Blick auf WinMerge werfen.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Sonntag 28. Oktober 2007, 11:40

Subversion unter Linux installieren:
http://bauer-martin.com/node/37

mfg
Gerold
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 29. Oktober 2007, 08:38

Tortoise-SVN ist eigentlich nett. Allerdings buddelt es sich tief in den Dateiexplorer ein. Wem das nicht gefällt, kann sich PySVN (auch "SVN workbench" genannt) ansehen: http://pysvn.tigris.org/

Ich selber nutzte Eclipse mit dem Subclipse Plugin.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 29. Oktober 2007, 09:30

Ich habe inzwischen aufgehört, GUIs für VCS-Systeme zu nutzen. Teilweise weil die Systeme die ich nutze (Bazaar, Mercurial und Git) noch nicht so viele brauchbare GUIs haben, teilweise weil sie über SSH nicht nutzbar sind und teilweise einfach weil ich mit der Shell einfach schneller bin.

Wobei man zugeben muss, dass Systeme wie Git von der Usability doch besser sind als SVN. Bei SVN muss man sich immer mit den Pfaden von den Branches, Tags etc. kümmern, bei Git nutzt man die einfach und kümmert sich nicht, wo die gespeichert sind.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Dienstag 30. Oktober 2007, 10:47

Das ist aber etwas unfair. Einer der großen Vorteile von SVN gegenüber CVS war ja gerade die einfache Behandlung von Branches und Tags als simple Verzeichnisse...
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Antworten