HowToCode: Fundamentale Sachen mit SVN & Trac
Bereits in einem sehr frühen HowToCode Beitrag habe ich ein paar "fundamentale" Sachen erwähnt die ein Software-Projekt braucht. In meiner Freizeit bastel ich an einem Community Projekt auf Basis von ASP.NET MVC. Da ein TFS für Community Projekte (die nicht Open Source sein wollen/sind) eigentlich unerschwinglich sind, nutzen wir SVN als Source Code Verwaltung & Trac zum Managen. In diesem Post geht es um die Zusammenarbeit von Visual Studio mit diesen Tools und wo es noch etwas klemmt.
Team Foundation Server – die eierlegende Wollmilchsau
In der Firma nutzen wir (unter anderem) das Team System 2008 und sind auch eigentlich mehr oder weniger zufrieden damit – auch wenn der TFS bzw. dessen TeamExplorer ab und an rumzickt.
Das tolle an diesem Server ist, dass er so ziemlich alles vereint, was man sich wünscht: Von Anforderungsmanagement, über Builds, Source Control, Tests etc. deckt er recht viel ab (ob es immer 100% zufriedenstellend ist, ist eine andere Sache
). In vielen Fällen kann man allerdings nicht auf diesen Server zurückgreifen, weil die Lizenzen auch recht kostenintensiv sind und für kleine Hobby Projekte lohnt es sich er recht nicht. Das Problem dabei: Die Features braucht man irgendwie doch.
Was "braucht" man zum Entwickeln?
In einem Projekt, welches zu den Hobbyprojekten gehört, nehmen wir folgende Sachen:
- Source Code Verwaltung: Subversion
- "Mangement"/Bugtracking/WorkItems/Tickets/Wiki: Trac
Diese zwei Sachen, neben Visual Studio, sind eigentlich sehr praktisch und wenn es etwas größere Hobbyprojekte werden unerlässlich.
Ohne Aufgabenmanagement & Bugtracking verliert man recht schnell den Überblick was noch getan werden muss. In kleineren Stil geht das noch, allerdings wird es nach einiger Zeit etwas mühsam und wenn man einen Projektleiter hat, der etwas Wert auf Projektmanagement legt, wird hier sicherlich zustimmen
Das ganze kann man selber hosten, aber auch hosten lassen, so nehmen wir z.B. das Angebot von CvsDude.com
Integration von Visual Studio
Wer mit SVN was zutun hat, wird meist auch an TortoiseSVN nicht vorbeikommen. Um eine Integration ins Visual Studio zu bekommen bedarf es noch AnkhSvn.
Jetzt kommt noch was cooles: Wer die Tickets aus dem Trac direkt im Visual Studio bearbeiten möchte dem empfehle ich noch einen Blick auf den TrackExplorer zu werden – angelehnt ist dies sicherlich an den TeamExplorer vom Team System von Microsoft.
Wie sieht das ganze aus?
Trac:
Browse Sourcecode (mit Änderungsverfolgung ähnlich Google Code)
Weitere Features:
- Bugtracking/Tickets für WorkItems
- Tagging
- Wiki
- Blog
- RoadMap
SVN + Tortoise + AnkhSVN + Visual Studio:
Checkin/Checkout direkt im Solution Explorer:
Das Mergen ist zwar irgendwie im Defaultfall etwas doof, aber nix ist perfekt. Ansonsten ist es sehr nett in Visual Studio integriert. Diese Integration ist durch AnkhSvn hinzugekommen.
TracExplorer:
Das Beste wäre jetzt noch direkt aus dem Visual Studio beim Checkin Tickets auszuwählen und diese dann auf Closed (etc.) zu setzen. Ein Ansatz zeigt der TracExplorer, welcher sich auch nett in Visual Studio integriert:
Ticketsübersicht:
Bei einem Doppelklick öffnet sich im Visual Studio die Webseite zu diesem Ticket. Es gibt auch leider noch kein Contextmenü in dem man direkt aus dem Visual Studio den Status des Tickets ändern kann – nur mit dem Umweg über die Webseite.
Checkin mit Tickets?
Prinzipell ist dies mit Hilfe von Tortoise möglich, allerdings integriert es sich leider nicht in AnkhSvn, welches wir zum Checkin nutzen. Aber gute Ansätze sind da – und alles für 0€ Lizenzkosten – für Hobbyprojekte oder Open Source Sachen empfehlenswert.
Feedback
Kennt jemand vielleicht doch eine Möglichkeit direkt aus dem Visual Studio heraus Tickets aus dem Trac zu bearbeiten und Checkins damit zu verknüpfen? Es ist kein "dringendes" Feature, aber nett wäre es schon. Hat sonst jemand noch Erfahrungen mit Open Source Tools + Visual Studio gemacht?




Peter Bucher
27. May 2009
Als MVP bekommst du eine kostenlose Lizenz für VisualSVN.
Bist du mit AnkhSvn bisher zufrieden?
Als ich das AnkhSvn ausprobiert habe, war es nicht brauchbar.
Robert Mühsig
28. May 2009
Mit AnkhSvn bin ich eigentlich recht zufrieden. Ich könnte aber mal VisualSvn ausprobieren
Mike Jones
28. May 2009
Den VisualSvn-Server kann ich jedem Empfehlen.
Ich hatte vorher Subversion selber mit einem Apache aufgesetzt und alles eingerichtet. Das wurde speziell in der Benutzerverwaltung und der Rechteverteilung immer recht mühsam und auch nicht gerade übersichtlich.
Mit dem Server kann man sich subversion in 2 Minuten installieren, kann Benutzer anlegen, Gruppen zuweisen, etc.
Die Verwaltung ist echt super einfach.
Das Visual Studio Plugin hatte ich mir noch nicht angeschaut. Ich hab es mir eben installiert und arbeite mal ein paar Tage damit. Bis jetzt sind mir keine nennenswerten Unterschiede zu ANKH aufgefallen.
Robert Mühsig
28. May 2009
Gibts bei dem Plugin dann ebenfalls Zugriff auf die Tickets/Workitems und kann beim Checkin das entsprechende auswählen?
Mike Jones
28. May 2009
Wenn du die Tickets von TRAC meinst, dann muss man das TRAC-Plugin verwenden.
Weder ANKH, noch VisualSvn zeigen einem die vorhandenen Tickets.
Oder hab ich was verpasst?
Robert Mühsig
28. May 2009
Genau – ich meine die Tickets vom TRAC.
Gibts noch ein anderes Trac-Plugin oder meinst du den Trac-Explorer.
martin
6. June 2009
Hallo,
super Artikel! Privat haben wir zum Homepages erstellen schon immer TortoiseSVN verwendet.
Das es ein Visual Studio Plugin dafür gibt weiß ich jetzt
Vielen dank!
Michael Topf
26. June 2009
Hallo Robert,
wir wollten auch erst TRAC einsetzen für uns war es aber ein Hindernis das TRAC nur ein Projekt verwalten kann. Wir setzen daher inzwischen Redmine ein, das unserer Meinung nach neben der Mehrprojektfähigkeit auch in anderen Bereich über TRAC hinausgeht.
Es gibt hier zwar noch ein paar Funktionen die fehlen (z.B. private Tickets), aber diese Funktionen sollen in den nächsten Versionen kommen. Auch die Benutzeroberfläche finde ich etwas benutzerfreundlicher als TRAC.
In Sachen Integration fehlte uns bisher die Zeit, aber zumindest kann man beim Einchecken ins SVN die Ticketnummer aus Redmine angeben (z.B. #0815) und diese wird dann bei der Anzeige des Kommentars im Redmine richtig verlinkt.
Michael
Ken
28. June 2009
@Michael: Das Verlinken der Tickets in den Check-In-Kommentaren beherrscht Trac auch schon.
Der Clou wäre dann allerdings, wenn man den Status des Tickets direkt beim Check-In ändern könnte…so wie es beim TFS der Fall ist.
Michael Topf
2. July 2009
@Ken: Ja, war mir auch bekannt. Bei einem Projekt an dem ich mitgearbeitet hatte (@Robert: war übrigens bei T-Systems) hatte man die Integration auch ziemlich perfektioniert. Meiner Meinung nach konnte man da auch den Status der Tickets mit ändern über bestimmte Befehle im SVN Kommentar.
Außerdem konnte man nur einchecken, wenn es das Ticket tatsächlich gab (also ohne Ticketnummer konnte man nix einchecken) und das Ticket musste im richtigen Status sein. Man konnte also nix mehr auf dieses Ticket einchecken wenn es geschlossen war.
Meiner Meinung nach wurden dann aus Trac gleich noch die Release Notes für eine Lieferung als PDF generiert.
Viele Grüße
Michael
Ken
2. July 2009
Grandios dieser Ansatz. Ich hab auch gleich mal Google gefragt…angeblich gehts so:
Ticket #102 (closed: fixed)
Das werde ich heute gleich mal ausprobieren.
Ken
2. July 2009
..geht natürlich nicht. Vorschläge?
Michael Topf
3. July 2009
Hallo,
@Ken: also so out of the box ging es meiner Erinnerung nach auch nicht, ich versuch mal den Kollegen bei T-Systems zu erreichen, ob der mir verrät was alles zu tun war.
Michael
Ken
19. July 2009
Ich habs jetzt, wie man den Status der Tickets per Kommentar ändern kann.
Dazu muss man im SVN noch eine Option setzen…bei cvsdude.com nennt die sich “switch on SVN-Trac hook”. Das sorgt wohl dafür, dass sich das Trac ins SVN integriert und beide auch direkt miteinanden reden können.
Wie auch immer…habs grad getestet. Es funktioniert.
Paul
28. November 2009
Das ganze funktioniert über Hooks. Bei CVS-Dude (ich kenn die Seite nicht) haben die sicherlich die entsprechenden Hooks realisiert und stellen sie den Benutzen zur Verfügung, so dass man sie dann nur noch über “switch on SVN-Trac hook” aktivieren zu braucht.
Wenn man ein Projekt auf einem eigenen Server hostet, kommt man nicht umhin, diese Hooks selbst zu implememtieren. Bei VisualSVN kann man die Hooks bearbeiten, indem man die Eigenschaften eines Repositories öffnet und dort dann auf Hooks bearbeiten klickt. Hilfe zu den verschiedenen Hooks finden sich auf der Webseite von SVN (http://subversion.tigris.org, Beispiele: http://subversion.tigris.org/tools_contrib.html#hook_scripts) oder über eine google/bing-Suche.
Darüber kann man dann auch steuern, dass nur Checkins mit Kommentar erlaubt sind, etc.
Paul
28. November 2009
Hier noch der Link zu der konkreten Anleitung:
http://trac.edgewall.org/wiki/TracFaq#can-trac-automatically-update-a-ticket-when-i-commit-a-changeset