Seite 1 von 1

Subversion aufsetzen für Web-App

Verfasst: 06.04.2011 13:54
von mad-manne
Hallo liebe Programmiererkollegen ...
ich überlege gerade, ob ich nun nicht auch endlich mal ein SVN aufsetze um eine Intranet-WebApplikation, die ich für einen Kunden programmiere etwas besser "kontrollieren" zu können. Dabei geht es mir vor allem nochmal um ein paar Verständnissfragen.

Hier zunächst mal das aktuelle Setup:
Ich habe auf dem Apache zwei verschiedene Virtual Hosts. Der eine zeigt auf die LIVE-Umgebung und der zweite ist meine area51(Entwicklungsumgebung). Die Scripte werden logischerweise in area51 weiterentwickelt und getestet. Sobald Neuerungen als stable betrachtet werden, muss ich alle beteilligten Scripte, Datenbankänderungen, etc. in die LIVE-Umgebung kopieren. Eine Möglichkeit zu einem alten Entwicklungsstand zurückzukehren habe ich so natürlich nicht!

geplantes Setup mit SVN
  • Wenn ich nun auf dem Linuxserver noch subversion installiere, dann kann ich dort soweit ich es verstehe ein repository erzeugen, welches dann ja zunächst leer sein wird?!
  • Dann würde ich mit einem geeigneten SVN-Client(TortoiseSVN in meinem Fall) die aktuelle LIVE-Umgebung in das repository committen ?!
  • Danach würde ich die area51 zunächst leeren und dann einen SVN-checkout dorthin "übertragen" ?!
  • In Zukunft müsste ich dann einfach die stabile Version aus area51 zunächst ins repository committen und dann im Live-System einen SVN-checkout veranlassen?!
Was ich dabei vor allem noch nicht verstanden habe ... entstehen dabei die "Versionen" automatisch oder muss ich da selbst Hand anlegen?

Was muss ich da sonst noch alles beachten, vor allem in Bezug auf "zusätzliche" Dateien(Grafiken, Template-Dateien, etc.)

Freue mich auf eure Antworten,
Manne.

P.S.: Ich weiss, dass git grade schwer im kommen ist, aber ich glaube für meine Zwecke(ich entwickle hier allein!) und habe nicht die MEGA-Ansprüche sollte SVN auch ausreichen und da kenne ich wenigstens aus meinen Zeiten hier aus dem WebsiteTeam den Client :D

Re: Subversion aufsetzen für Web-App

Verfasst: 06.04.2011 14:16
von gn#36
mad-manne hat geschrieben: geplantes Setup mit SVN
  • Wenn ich nun auf dem Linuxserver noch subversion installiere, dann kann ich dort soweit ich es verstehe ein repository erzeugen, welches dann ja zunächst leer sein wird?!
Richtig, das ist sogar so leer, dass du bevor du direkt dein Projekt importierst für eventuelle Branches etc. noch eine Verzeichnisstruktur mit tags/ branches/ und trunk/ anlegen solltest.
  • Dann würde ich mit einem geeigneten SVN-Client(TortoiseSVN in meinem Fall) die aktuelle LIVE-Umgebung in das repository committen ?!
  • Danach würde ich die area51 zunächst leeren und dann einen SVN-checkout dorthin "übertragen" ?!
Ja, so würde ich das auch machen, anschließend dann eventuell vorher in area51 vorhandene Änderungen einpflegen.
  • In Zukunft müsste ich dann einfach die stabile Version aus area51 zunächst ins repository committen und dann im Live-System einen SVN-checkout veranlassen?!
Genau, du kannst natürlich auch instabile Versionen commiten, damit du sie von woanders bearbeiten kannst, solange du keinen erneuten Checkout machst ist das ja kein Problem. Alternativ verwendest du in der Live und der area51 Version verschiedene Zweige / Branches deines Repository, dann kannst du per Merge bestimmen, was in die Live Version soll und ein Checkout der "aus versehen" durchgeführt wurde kopiert dir nicht eine instabile Version in den deine Live Seite.
Was ich dabei vor allem noch nicht verstanden habe ... entstehen dabei die "Versionen" automatisch oder muss ich da selbst Hand anlegen?
Die Versionen werden einfach durchnummeriert. Ein frisches Repository startet bei 0, jeder Commit erhöht das um 1. Wenn du Nummern wie 3.0.1 haben willst musst du das selber festlegen (meist per Tag gemacht, wenn du z.B. einen Blick in das phpBB SVN Repository wirfst).
Was muss ich da sonst noch alles beachten, vor allem in Bezug auf "zusätzliche" Dateien(Grafiken, Template-Dateien, etc.)
Dateien sind Dateien - ist eigentlich völlig egal was, das kann alles im Repository verwaltet werden. Änderungen an Textdateien jeder Art sind natürlich besser komprimierbar, da man Änderungen abspeichern kann, statt die ganze Datei speichern zu müssen, aber Binärdateien gehen auch. Dynamisch von deinem System erzeugte Dateien würde ich nicht im Repository ablegen sondern per svn:ignore ignorieren, ebensowenig hochgeladene Dateien von Benutzern (egal welcher Art), vor allem wenn das System auch einen Datenbankeintrag anlegt über die Datei. Wenn man will kann man das natürlich trotzdem tun.

P.S.: Ich weiss, dass git grade schwer im kommen ist, aber ich glaube für meine Zwecke(ich entwickle hier allein!) und habe nicht die MEGA-Ansprüche sollte SVN auch ausreichen und da kenne ich wenigstens aus meinen Zeiten hier aus dem WebsiteTeam den Client :D
Der TortoiseGit Client funktionert nahezu genauso und beim Mergen muss man sich nicht immer an den kompletten Pfad erinnern. Du kannst aber von SVN jederzeit auf Git umsteigen, wenn dein Repository grob richtig aufgebaut ist (also z.B. die Unterteilung in branches/ tags/ trunk/ einhält und unter branches/branchname/ jeweils eine ähnliche Struktur wie unter trunk/ zu finden ist und nicht irgendwelche einzelnen unterordner (ja, ich weiß ist nicht zwingend exakt so nötig, erleichtert es aber ungemein)).

Re: Subversion aufsetzen für Web-App

Verfasst: 06.04.2011 14:31
von mad-manne
Hi Martin,
erstmal Danke für deine Antwort ...
gn#36 hat geschrieben:Der TortoiseGit Client funktionert nahezu genauso ...
Im Chat wurde mir eben (erwartungsgemäss) von bantu, nickvergessen und Mungo auch zu git geraten :P

Ich nutze zwecks Dokumentation phpDocumentor und habe demnach im ersten DocBlock einen @version-tag, den ich momentan manuell pflege ...
damit git(oder eben SVN) den automatisch pflegen kann, muss man den Server aber bestimmt irgendwie so konfigurieren, dass er dies auch tatsächlich tut ?!

Gruss,
Manne.

Re: Subversion aufsetzen für Web-App

Verfasst: 06.04.2011 19:28
von gn#36
Ob und wie das bei Git ginge weiß ich nicht, aber bei SVN kannst du die Property "keywords" auf "Id" (oder alternativ auch auf andere Dinge wie z.B. Revision) setzen, dann werden automatisch in den Checkouts alle Vorkommen von $Id$ ersetzt durch einen Versionsstring der den Dateinamen, die SVN Version, den Autor und das Änderungsdatum enthält (kann man auch alle einzeln verwenden wenn man will, dafür gibt es dann entsprechende andere Properties). Also kannst du z.B.

Code: Alles auswählen

@version $Id$
oder

Code: Alles auswählen

@version $Revision$
oder sowas verwenden wenn du die Keywords auf Id bzw. Revision (oder alternativ eine Liste mit Id und Revision oder so) und im Documentor sollte das dann als

Code: Alles auswählen

$Id: calc.c 148 2011-04-06 19:30:43Z Karl Heinz Otto $
bzw.

Code: Alles auswählen

$Revision: 148$
angezeigt werden.

Wird natürlich erst nach dem nächsten Commit ersetzt.

Siehe auch http://svnbook.red-bean.com/en/1.4/svn. ... words.html

EDIT: offenbar braucht man ein externes Skript, um das bei Git zu realisieren: https://git.wiki.kernel.org/index.php/G ... pansion.3F