{"id":209,"date":"2011-05-27T17:43:32","date_gmt":"2011-05-27T16:43:32","guid":{"rendered":"http:\/\/blog.bit-dynamics.de\/?p=209"},"modified":"2011-05-27T17:43:32","modified_gmt":"2011-05-27T16:43:32","slug":"source-control-management-git-trac-mod_wsgi-debian-lenny-squeeze-ispconfig","status":"publish","type":"post","link":"https:\/\/hive-it.de\/2011\/05\/27\/source-control-management-git-trac-mod_wsgi-debian-lenny-squeeze-ispconfig\/","title":{"rendered":"Modernes Source Control Management mit GIT, TRAC und mod_wsgi unter Debian Lenny \/ Squeeze mit ISPConfig"},"content":{"rendered":"
Bei jeder Art der Softwareentwicklung sollte ein SCM, auch bekannt als Versionierungsverwaltung \/ -software, im Hintergrund benutzt werden. Gerade bei verteilten Teams kann eine parallele Zusammenarbeit am gleichen Code ohne eine Hilfe im Hintergrund sonst sehr chaotisch und zeitraubend ablaufen. Wird an der selben Datei gearbeitet, passiert es ohne Software \u00f6fter mal, das \u00c4nderungen des einen Kollegen durch den anderen \u00fcberschrieben werden – \u00e4rgerlich und unn\u00f6tig!<\/p>\n
Ein entscheidender Vorteil ist bei der Quellcodeverwaltung aber auch die Nachvollziehbarkeit von \u00c4nderungen (Wer hat was, wann ver\u00e4ndert) und die M\u00f6glichkeit diese im Handumdrehen r\u00fcckg\u00e4ngig zu machen. Viele Probleme bei einem h\u00e4ndischen Zusammenf\u00fchren und notieren von \u00c4nderungen werden so komplett hinf\u00e4llig.<\/p>\n
Das SCM Tool unserer Wahl ist GIT<\/a>. Modern, vielseitige Funktionen und (inzwischen) auch in alle entscheidenden Tools integriert (Eclipse und Trac in unserem Fall). Und seitdem es GitHUB <\/a>gibt, in unseren Augen auch die Zukunft. F\u00fcr Open Source Projekte ist Git Hub sicherlich die erste Wahl, da es kostenlos ist und sehr gute Kolaborations-Funktionen. F\u00fcr closed source Entwicklungen, wie wir sie auch haben, kommt Github allerdings aus Kostengr\u00fcnden nicht in Frage, da man mit wenig Aufwand alle Funktionen von Github auch auf einem eigenen dedizierten Server bereit stellen kann.<\/p>\n Wie man nun auf einem Debian Squeeze Web-Server, der mit ISPConfig betrieben wird GIT als SCM, Trac als Weboberfl\u00e4che f\u00fcr das Projektmanagement und als Bugtracker mit Hilfe von mod_wsgi einrichtet, soll im Folgenden beschrieben werden.<\/p>\n <\/p>\n Wir gehen in dieser Anleitung von einem aktuellen Debian Squeeze aus. Dort ist es mit den Grundvorrausetzungen (Python, Git) besser bestellt und Lenny sollte man so oder so nicht mehr aufsetzen. Grunds\u00e4tzlich sollte man aber die Git \/ Trac Konfiguration gleich durchf\u00fchren k\u00f6nnen, wenn bei den Voraussetzungen alles passt. D.h. insbesondere Python in der richtigen Version installiert, mod_wsgi in der aktuell Version 3.3<\/p>\n <\/p>\n Leider ist es damit noch nicht getan. Um Trac mit GIT nutzen zu k\u00f6nnen, m\u00fcssen noch einige Einstellungen in der Trac.ini ge\u00e4ndert werden, sowie neue f\u00fcr Git hinzugef\u00fcgt. Ich liste im folgenden daher nur die zu \u00c4ndernden \/ Hinzu zu f\u00fcgenden Werte auf.<\/p>\n Detaillierte Informationen zu Trac finden sich im Trac Wiki.<\/p>\n Warum eigentlich Source Control Management? Bei jeder Art der Softwareentwicklung sollte ein SCM, auch bekannt als Versionierungsverwaltung \/ -software, im Hintergrund benutzt werden. Gerade bei verteilten Teams kann eine parallele Zusammenarbeit am gleichen Code ohne eine Hilfe im Hintergrund sonst sehr chaotisch und zeitraubend ablaufen. Wird an der selben Datei gearbeitet, passiert es ohne Software […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[11,14,15,19,20,24,29,30,31,36,39,40,41],"yoast_head":"\nInstallation von Git, Trac und mod_wsgi auf Debian Sqeeze<\/h2>\n
Grundvoraussetzungen Server<\/span><\/h3>\n
\n
\n
apt-get install python<\/pre>\n<\/li>\n<\/ol>\n<\/li>\n
\n
apt-get install libapache2-mod-wsgi<\/pre>\n<\/li>\n<\/ol>\n<\/li>\n
\n
Installation und Einrichtung von GIT<\/h3>\n
\n
\n
apt-get install git-core<\/pre>\n<\/li>\n
cd \/var\/www\/scm.bit-dynamics.de\/<\/pre>\n
su kundenname_trac<\/pre>\n
mkdir repositories<\/pre>\n<\/li>\n
cd repositories<\/pre>\n
mkdir TESTProjekt<\/pre>\n
cd TESTProjekt<\/pre>\n
git-init<\/pre>\n
\n
\n
\u00a0Initialized empty Git repository in \/var\/www\/clients\/client1\/web1\/repositories\/TESTProjekt\/.git\/<\/pre>\n
(Optional): Um den Pfad zu vereinfachen kann man den .git Ordner auch direkt in den \/repositories\/ Ordner verschieben und in den entsprechenden Projektnamen umbenenenn. Das ist aber rein kosmetischer Natur<\/pre>\n
\n
\n
exit<\/pre>\n
Trac installieren<\/h3>\n
\n
\n
da im Squeeze Repo nur 11.7 und in Lenny etwas noch \u00e4lteres liegt nehmen wir die aktuelle von der trac Webseiten<\/del>)\n\n
\n
vi \/etc\/apt\/sources.list<\/pre>\n<\/li>\n
\n
deb http:\/\/backports.debian.org\/debian-backports<\/em> squeeze-backports main<\/pre>\n<\/li>\n<\/ol>\n<\/li>\n
apt-get update<\/pre>\n<\/li>\n
apt-get install trac<\/pre>\n<\/li>\n
\n
\n
apt-get install python-setuptools<\/pre>\n
\neasy_install Babel==0.9.5<\/pre>\n
easy_install Trac<\/pre>\n
\n
\n
easy_install http:\/\/github.com\/hvr\/trac-git-plugin\/tarball\/master<\/pre>\n
Trac konfigurieren<\/h4>\n
\n
\n
su kundenname_trac<\/pre>\n
cd \/var\/www\/clients\/client1\/web1\/<\/pre>\n
mkdir trac<\/pre>\n
cd trac<\/pre>\n
\n
\n
trac-admin Testprojekt initenv<\/pre>\n
Name des Projekts [My Project]><\/em> <-- Eure Entscheidung, \"Testprojekt\" z.B.<\/pre>\n
Datenbankverbindungsstring [sqlite:db\/trac.db]><\/em> <-- Enter, au\u00dfer ihr wollt unbedingt gegen SQL connecten. W\u00fcrde ich aber nicht machen, da die Performance mit sqlite passt und das Repository sp\u00e4ter besser zu backupen oder zu verschieben ist<\/pre>\n
\n
\n
trac-admin Testprojekt<\/pre>\n
deploy .\/deploy<\/pre>\n
exit<\/pre>\n
\n
\n
cp .\/Testprojekt\/deploy\/cgi-bin\/trac.wsgi ..\/web\/<\/pre>\n
\n
\n
cd ..<\/pre>\n
htpasswd -c .trac-htpasswd Admin<\/pre>\n
Password: <-- hier dann das Passwort f\u00fcr den User \"Admin\" eingeben<\/pre>\n
\n
\n
WSGIScriptAlias \/ \/var\/www\/clients\/client1\/web1\/web\/trac.wsgi\nWSGIDaemonProcess trac user=web1 group=client1\n\n<directory \/var\/www\/clients\/client1\/web1\/web>\nWSGIProcessGroup trac\nWSGIApplicationGroup %{GLOBAL}\nSetEnv trac.env_parent_dir \/var\/www\/clients\/client1\/web1\/trac\n<\/directory>\n\n<LocationMatch \/>\nAuthType Basic\nAuthName \"Bit Dynamics Source Control\"\nAuthUserFile \/var\/www\/clients\/client1\/web1\/.trac-htpasswd\nRequire valid-user\n<\/LocationMatch><\/pre>\n
\n
\n
trac-admin trac\/Testprojekt<\/pre>\n
permission add Admin TRAC_ADMIN<\/pre>\n
exit<\/pre>\n
\n
trac.ini f\u00fcr Git Nutzung konfigurieren<\/h4>\n
\n
\n
cd trac\/Testproject\/conf<\/pre>\n
vi trac.ini<\/pre>\n
\n
\n
[components]\ntracext.git.git_fs.csetpropertyrenderer = enabled\ntracext.git.git_fs.gitconnector = enabled\ntracext.git.git_fs.gitwebprojectsrepositoryprovider = enabled\n\n[git]\ncached_repository = false\ngit_bin = \/usr\/bin\/git\ngit_fs_encoding = utf-8\npersistent_cache = false\nshortrev_len = 6\ntrac_user_rlookup = true\nuse_committer_id = false\nuse_committer_time = false\nwiki_shortrev_len = 7\n\n[trac]\nrepository_type = git<\/pre>\n
Weitere Optimierungsm\u00f6glichkeiten<\/h2>\n
\n
\n
\n
\n
Quellen f\u00fcr weitere Informationen<\/h2>\n
\n