PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Subversion für Webentwicklung



pixel
11.03.07, 19:35
Hallo zusammen,

meine Nichte möchte in die Webentwicklung mit Eclipse einsteigen. Da es unter Eclipse leider kein funktionierendes FTP-Plugin gibt gestaltet sich das hochlagen direkt aus der IDE schwierig. Im Eclipse-Forum wurde mir empfohlen auf dem Webserver subversion einzurichten da Eclipse damit umgehn kann. Soweit ich das aber weiß liege die Inhalte im svn aber in einer Datenbank und nicht als Datei also was würde mir das bringen. Die HTML-Files wären in der DB auf dem Webserver aber Apache könnte sie nicht anzeigen. Hat jemand von Euch eine Idee wie man das Problem mit Subversion lösen könnte?

Viele Grüße
pixel

PierreS
11.03.07, 19:48
Möchte sie Servlets schreiben oder reine HTML-Seiten?

Ich verwalte eigentlich alle meine Seiten (PHP) mittels svn. Im jeweiligen vhost-Verzeichnis führe ich dann einfach "svn up" aus, um die neueste Version in das richtige Verzeichnis des Apache zu laden.

Evtl. läßt sich das sogar automatisieren, daß z.B. svn nach dem commit ein Script ausführt, daß das erledigt.

MiGo
12.03.07, 08:29
Da es unter Eclipse leider kein funktionierendes FTP-Plugin gibt gestaltet sich das hochlagen direkt aus der IDE schwierig.
Das halte ich mal für ein Gerücht - zumindest bei mir funktioniert das Syncronisieren per ftp durchaus.

Ich kann mal nachsehen, wie das Plugin heisst (wenn es denn ein Plugin ist) :)

pixel
12.03.07, 09:24
Möchte sie Servlets schreiben oder reine HTML-Seiten?
Im Moment nur HTML, später dann mit JavaScript bzw. PHP


Ich verwalte eigentlich alle meine Seiten (PHP) mittels svn. Im jeweiligen vhost-Verzeichnis führe ich dann einfach "svn up" aus, um die neueste Version in das richtige Verzeichnis des Apache zu laden.
Das dachte ich mir schon das ich dann auf dem Webserver svn auch als Client aufrufen muß und den svn in das Webserver-Verzeichnis auschecken / updaten muß. Diesen manuellen Schritte (Auf Server nochmal einloggen und Befehl ausführen) würde ich Ihr gerne ersparen.



Evtl. läßt sich das sogar automatisieren, daß z.B. svn nach dem commit ein Script ausführt, daß das erledigt.
Wenn jemand wüßte wie das funktioniert wäre das super.

pixel
12.03.07, 09:27
Das halte ich mal für ein Gerücht - zumindest bei mir funktioniert das Syncronisieren per ftp durchaus.

Ich kann mal nachsehen, wie das Plugin heisst (wenn es denn ein Plugin ist) :)

Habe lang gesucht. Es gibt ein PlugIn das aber nur SFTP. Daneben gibt es ein PlugIn das FTP/Webdav kann aaaaber nur in eine Richtung. Ich kann einen Verzeichnisbaum aus einem FTP-Server in ein Projekt laden. Aber nicht mehr zurück schreiben. Das ist nur ein Import. Ich lass mich aber gerne vom Gegenteil überzeugen da ich denke ein FTP-PlugIn wäre das einfachste.

baumgartner
12.03.07, 09:36
Ich will mich nicht festlegen aber afaik kannst du in SVN Serverseitig automatisiert Skripts ausführen (ähnlich den Triggerskripts in Clearcase). Demzufolge könntest du Skriptgesteuert jedes mal ein SVN-Copy ins Apachedir machen.

EDIT: Natürlich kannst du auch ein Skript schreiben das überprüft ob sich eine neue Version im SVN befindet und dieses mit Cron steuern.

AceTheFace
12.03.07, 09:39
http://www.phpeclipse.de/tiki-index.php?page=FTP+and+WebDAV

Also hier steht "import" und "export".

Gruß,
Ace

pixel
12.03.07, 16:14
http://www.phpeclipse.de/tiki-index.php?page=FTP+and+WebDAV

Also hier steht "import" und "export".


Also ich habe das gerade mal ausprobiert. Neues, leeres Projekt angelegt und via FTP wie in der Anleitung beschrieben importiert. Nun habe ich eine Datei (index.html.bak) die im DokoRoot liegt editiert (zum testen). Wie kann ich diese nun ganz einach hochladen? Ich finde hier keine Funktion. Wenn ich wähle "Datei / Export" -> Projekt-Ordner auswählen durchsucht er wieder den gesamten Pfad auf dem Webserver. Das dauert nur unnötig lange. Anschließend präsentiert wird mir der Baum des gesamten FTP-Server präsentiert und nicht wie zu erwarten der Teil des Baums den ich vorher importiert habe. Hier wähle ich die editierte Datei (index.html.bak) aus.

Gut gemacht. An dieser Stelle wird mir ein Diff angezeigt. Ein Klick auf "Fertigstellen" bringt die Datei zum Webserver. Das Handling erscheint mir insgesamt etwas umständlich was aber daran liegen könnte das ich den "richtigen"Weg nicht kenne. Was ich vermisse ist eine schnelle Möglichkeit eine einzelne Datei schnell hochzuladen.

Weiß jemand wie das geht?

Viele Grüße
pixel

MiGo
12.03.07, 20:17
Wie kann ich diese nun ganz einach hochladen? Ich finde hier keine Funktion.
Ja, das ist ein wenig gemein :)
Du must auf die entsprechende Perspektive ("Team syncronizing perspective") wechseln (Button oben rechts, bei "php" udn "resource").

pixel
13.03.07, 16:38
Ja, das ist ein wenig gemein :)
Du must auf die entsprechende Perspektive ("Team syncronizing perspective") wechseln (Button oben rechts, bei "php" udn "resource").
ok, heute Morgen hat das noch funktioniert. Ich habe nun weiter "rum-gespielt" und jetzt erscheint, wenn ich auf diese Perspektive wechsle, im Fenster "Syncronisieren" nur noch:

keine Änderung in 'FTP()'
wo heute Morgen noch die Ordner-Struktur des Webserver zu finden war. Ich habe auch mal das komplette Projekt gelöscht, ein neues (leeres) angelegt und alles nochmal via FTP-Import neu herunter geladen. Hat aber auch nichts gebracht.

pixel
14.03.07, 16:31
ok, zumindest das Problem konnte ich lösen. Da es eine Testinstallation ist habe ich einfach das workspace-Verz. gelöscht. Danach hat's wieder funktioniert.

Allerdings funktioniert das Importieren (via FTP) nicht wirklich. Ständig meldet Eclipse einen Fehler das die Verbindung wohl weg wäre. Die genaue Fehlermeldung:

Server appears to have dropped connection

Wenn ich aber mit einem anderen Programm einen FTP-Download mache funktioniert das problemlos.

baumgartner
14.03.07, 17:18
Also ich will mich hier nicht noch einmal wichtig machen weil du meinen Lösungsansatz zu SVN offensichtlich ignoriert hast. Aber nur mal so als Frage, würde es einer angehenden Webentwicklerin schadet wenn sie die Basics eines Versionsverwaltungsprogrammes versteht und anwenden kann?

pixel
15.03.07, 10:11
Also ich will mich hier nicht noch einmal wichtig machen weil du meinen Lösungsansatz zu SVN offensichtlich ignoriert hast. Aber nur mal so als Frage, würde es einer angehenden Webentwicklerin schadet wenn sie die Basics eines Versionsverwaltungsprogrammes versteht und anwenden kann?
Also ich wollte dich und die SVN-Lösung auf keinen Fall ignorieren :rolleyes: Ich versuche es nur immer zu vermeiden zwei Baustellen parallel in einem Thread abzuhandeln, das endet nur im Chaos. Ich wollte erst mal das was schon ansatzweise funktioniert (FTP) zum laufen zu bekommen. Ich persönlich neige auch eher zur SVN-Lösung.

Folgendes habe ich bereits probiert. Auf dem Webserver gibt es den User 'web1'. Das ist mein User den ich für den Zugriff auf meine Domain benutze. Da es ein Root-Server ist habe ich natürlich auch Root-Zugang. Das Home-Verzeichnis des Users web1 liegt in /var/www/web1
Dort habe ich das Verzeichnis 'repro' angelegt und anschließend ein:

svnadmin create repro
gmacht. Und anschließend auf dem Server im Verzeichnis ../repro/conf/svnserve.conf wie folgt erstellt:

[general]
anon-access = none
auth-access = write
password-db = passwd


Um das ganze erst mal auserhalb von Eclipse zu testen habe ich aufauf meinem lokalen Rechner (als User 'sven') folgende Verzeichnisse angelegt:

Projekt
|
|----> branches
|
|----> tags
|
|----> trunk
Wenn ich es richtig verstanden habe muß ich auf meinem lokalen Rechner nun ein:

svn import Projekt --username web1 svn+ssh://dreampixel.de/repro -m "Beschreibung der Änderung"
ausführen. Allerdings frägt er dann nach einem Passwort aber es wird nicht angenommen, obwohl ich das richtige Passwort von 'web1' auf dem Webserver eingebe. Ich habe dann auch mal versuch den kompletten Pfad, also:

... svn+ssh://dreampixel.de/var/www/web1/repro
anzugeben. Was mache ich falsch?

Muß SVN auf dem Server noch gestartet werden? Ich habe in /etc/ini.d/ kein Startskript gefunden. Server ist Debian 3.1

Viele Grüße
pixel

baumgartner
15.03.07, 11:06
Du hast da ein paar Sachen durcheinander geworfen... :-)

SVN+SSH dient dazu die lokale Anmeldung über das SSH Protokoll zu umgehen. Das heisst, jeder Benutzer der Schreibzugriff auf das SVN hat und einen "svnserve" mit der Option -t gestartet hat kann auf das Repo zugreifen. Es ist hier sehr(!) leicht möglich Verzeichnisse die nur für bestimmte Benutzer freigegeben sind zu umgehen. Um auf das Repo zuzugreifen müsstest du also als user web1 einen Prozess mit "svnserve -t" starten. Diese Lösung ist allerdings nur heranzuziehen wenn bereits eine Userstruktur auf dem Server bereits vorhanden ist. Ich würde dir davon gänzlich abraten!

Darf ich fragen warum du das Repo unter var/www angelegt hast? Theoretisch kann da vielleicht jeder mit dem Apache in die Files vom Repo rein und so die Config-datei mit den Passwörtern auslesen. Dementsprechend würde ich vielleicht einen User svn (ohne Passwort) mit einem eigenem Homeverzeichnis anlegen.

Dort würde ich dann mit "svnadmin create --fs-type fsfs Mein_Repo" anlegen. Du kannst Repos auch in einer Ordnerstruktur anlegen. Also einen Verzeichnisbaum Dokumente, Projekte, Privat anlegen und darunter dann die Repos erstellen. Der Svnserver kann damit umgehen. Wenn du das Repo so erstellt hast kannst du wie du es bereits getan hast die svnserver.conf und die passwd bearbeiten.
Damit du nun über das svn-Protokoll zugreifen kannst gibt es 2 Möglichkeiten. 1.) Du startest jedes mal einen Svnserver-Prozess über den inetd wofür mir die Erklärung jetzt zu langwierig ist oder 2.) Du startest einen Svnserver-Prozess mit "svnserve -d -r /dein/svn/rootdir". Damit wird ein Dämonprozess in dem von dir angegebenem Rootdir gestartet.

Nun müsstest du dich mit 'svn import Projekt --username web1 svn://dreampixel.de/repro -m "Beschreibung der Änderung" ' verbinden können und den Ordner Projekt importieren.

Es gibt noch Wege das ganze über Apache2 zu realisieren aber das würde jetzt den Rahmen sprengen. Ich hab aber vor zu dem Thema einmal ein Tut zu schreiben :-)

pixel
15.03.07, 11:30
Du hast da ein paar Sachen durcheinander geworfen... :-)
Das ist gut möglich


SVN+SSH dient dazu die lokale Anmeldung über das SSH Protokoll zu umgehen. Das heisst, jeder Benutzer der Schreibzugriff auf das SVN hat und einen "svnserve" mit der Option -t gestartet hat kann auf das Repo zugreifen. Es ist hier sehr(!) leicht möglich Verzeichnisse die nur für bestimmte Benutzer freigegeben sind zu umgehen. Um auf das Repo zuzugreifen müsstest du also als user web1 einen Prozess mit "svnserve -t" starten.

Das für dies für jeden User gestartet werden soll fände ich ungeschickt. Gibt es eine Möglichkeit svn auf dem Server zentral einzurichzen und darin mehere Projekte (Repos) anzulegen. Beispiel:

Projekt1 -> Lesen/Schreiben nur User web1
Projekt2 -> Lesen/Schreiben nur User web2
[...]


Diese Lösung ist allerdings nur heranzuziehen wenn bereits eine

.. eine was?

baumgartner
16.03.07, 09:39
Du könntest das entweder mit mehreren Repos realisieren oder mit Apache2-Webdav und Authz (wozu ich ja noch etwas schreiben möchte). Eigentlich hab ich dazu oben schon alles geschrieben, denke aber du hast den Teil nicht gelesen weil ich zu früh auf den Absenden-Button geklickt habe (aus versehen) und das ganze erst später ergänzt.

EDIT: Es gibt 2 Tuts im Howtobereich des Forums die ich persönlich allerdings nicht ausführlich genug finde.
http://www.linuxforen.de/forums/showthread.php?t=120365&highlight=svn
http://www.linuxforen.de/forums/showthread.php?t=187902&highlight=svn