<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PINC-Blog &#187; Trac</title>
	<atom:link href="http://www.pincservices.de/wordpress/tag/trac/feed" rel="self" type="application/rss+xml" />
	<link>http://www.pincservices.de/wordpress</link>
	<description>yet another developer blog</description>
	<lastBuildDate>Sat, 10 Sep 2011 07:53:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Trac-Themes</title>
		<link>http://www.pincservices.de/wordpress/trac-themes</link>
		<comments>http://www.pincservices.de/wordpress/trac-themes#comments</comments>
		<pubDate>Thu, 28 Jan 2010 21:38:12 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Projektverwaltung]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Werkzeuge]]></category>
		<category><![CDATA[htdocs_location]]></category>
		<category><![CDATA[Templates]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[Trac]]></category>

		<guid isPermaLink="false">http://www.pincservices.de/wordpress/?p=410</guid>
		<description><![CDATA[2 Jahre ist es jetzt in etwa her, dass ich einen Artikel über Eigene Templates in Trac geschrieben habe. Seitdem ist ein wenig passiert. Diesen Änderungen möchte ich hiermit Rechnung tragen. Ich habe das ganze Trac-Themes genannt, weil es weniger um Templating an sich gehen soll, sondern eher um eine Möglichkeit gemeinsame Styles festlegen zu [...]]]></description>
			<content:encoded><![CDATA[<p>2 Jahre ist es jetzt in etwa her, dass ich einen Artikel über <a href="http://www.pincservices.de/wordpress/eigene-templates-in-trac">Eigene Templates in Trac</a> geschrieben habe. Seitdem ist ein wenig passiert. Diesen Änderungen möchte ich hiermit Rechnung tragen. Ich habe das ganze Trac-Themes genannt, weil es weniger um Templating an sich gehen soll, sondern eher um eine Möglichkeit gemeinsame Styles festlegen zu können.</p>
<p>Leider ist es mit Trac immer noch nicht möglich unter einem Environment mehrere Projekte bzw. Repositories laufen zu lassen. Darum wird für jedes Projekt eine eigene Trac-Umgebung angelegt. Wichtig hierbei ist insbesondere für Firmen, dass alle Projekte zumindest in der Grundstruktur gleich aussehen und die Firmenfarben tragen.</p>
<h3>&#8220;&#8230; was bisher geschah&#8221;</h3>
<p>Wer zuerst probieren will, wie und was er alles anpassen kann, sollte sich das Verzeichnis <code>templates</code> unterhalb seiner Trac-Umgebung anschauen. Standardmäßig liegt dort die Datei <code>site.html</code>. Wenn man sie das erste Mal aufmacht, kommt sie sehr unscheinbar daher, denn wie man sieht, sieht man nichts. Nur einen <code>html</code>-Tag und ein paar unbekannt anmutende Python-Attribute.<br />
Auf der Seite <a href="http://trac.edgewall.org/wiki/TracInterfaceCustomization">http://trac.edgewall.org/wiki/TracInterfaceCustomization</a> ist glücklicherweise bereits ein Beispiel-Code für den Inhalt dieser Datei. Für jene, die gerne lieber mehrere Dateien nutzen wollen hier gleich die Anpassung mit Einbindung externer Dateien:</p>
<pre class="brush: xml;">
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
      xmlns:py=&quot;http://genshi.edgewall.org/&quot;
      xmlns:xi=&quot;http://www.w3.org/2001/XInclude&quot;
      py:strip=&quot;&quot;&gt;

  &lt;!--! Add site-specific style sheet --&gt;
  &lt;head py:match=&quot;head&quot; py:attrs=&quot;select('@*')&quot;&gt;
    ${select('*|comment()|text()')}
    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot;
          href=&quot;${href.chrome('common/style.css')}&quot; /&gt;
  &lt;/head&gt;

  &lt;body py:match=&quot;body&quot; py:attrs=&quot;select('@*')&quot;&gt;
    &lt;!--! Add site-specific header --&gt;
    &lt;div id=&quot;siteheader&quot;&gt;
       &lt;xi:include href=&quot;site_header.cs&quot;&gt;
         &lt;xi:fallback /&gt;
       &lt;/xi:include&gt;
    &lt;/div&gt;

    ${select('*|text()')}

    &lt;!--! Add site-specific footer --&gt;
    &lt;div id=&quot;sitefooter&quot;&gt;
      &lt;xi:include href=&quot;site_footer.cs&quot;&gt;
        &lt;xi:fallback /&gt;
      &lt;/xi:include&gt;
    &lt;/div&gt;
  &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Interessanterweise funktioniert das einfache Anlegen einer <code>site_header.cs</code> und <code>site_footer.cs</code> nicht immer &#8211; bzw. bei mir hat das noch nie funktioniert -, wie es auf manchen Seiten beschrieben wird.<br />
Mit diesem Grundgerüst ausgestattet lässt sich schon anfangen herumzuspielen. Für weiterführende Informationen zu Genshi und Clearsilver &#8211; den Engines im Hintergrund &#8211; sei auf folgende Seiten verwiesen:</p>
<ul>
<li><a href="http://genshi.edgewall.org/">http://genshi.edgewall.org/</a></li>
<li><a href="http://www.clearsilver.net/docs/">http://www.clearsilver.net/docs/</a></li>
</ul>
<h3>Neue und alte Freunde</h3>
<p>Ein altbekannter Helfer beim Erstellen von Templates ist auch in der Version 0.11.5 noch vorhanden. Der Konfigurationsparameter <code>template_dir</code>.</p>
<pre class="brush: plain;">
[inherit]
template_dir=
</pre>
<p>Mit diesem Parameter lässt sich das Verzeichnis für die Templates festlegen und wodurch verschiedene Seiten mit ein und demselben Template ausgestattet werden können.</p>
<p>Daneben ist ein neuer Freund dazugekommen der Parameter <code>htdocs_location</code>. Mit diesem Parameter werden alle internen URLs, die mit &#8220;common/&#8221; beginnen in die URL umgeschrieben, die als Wert angegeben wurde.</p>
<pre class="brush: plain;">
[trac]
htdocs_location=http://localhost/mytemplate
</pre>
<p>Führt, dazu, dass aus</p>
<pre class="brush: xml; gutter: false;">
&lt;link rel=&quot;stylesheet&quot; href=&quot;/trac/templating/chrome/common/css/trac.css&quot; type=&quot;text/css&quot; /&gt;
</pre>
<p>folgendes wird</p>
<pre class="brush: xml; gutter: false;">
&lt;link rel=&quot;stylesheet&quot; href=&quot;http://localhost/mytemplate/css/trac.css&quot; type=&quot;text/css&quot; /&gt;
</pre>
<p><strong>Achtung!</strong> Leider hat die Sache einen Haken. Eigene Links aus der <code>site.html</code> werden nicht übersetzt. Der folgende Code</p>
<pre class="brush: plain; gutter: false;">
${href.chrome('common/style.css')}
</pre>
<p>wird nur in <code>"/trac/templating/chrome/common/style.css"</code> umgewandelt, aber nicht weiter.</p>
<p>Wichtig ist außerdem zu beachten, dass <code>htdocs_location</code> nur für statische Inhalte, wie Bilder, JavaScript- und CSS-Dateien gedacht ist. Templates werden nicht automatisch von dort erkannt. Diese müssen explizit über <code>template_dir</code> konfiguriert werden. Leider ist es hier nur möglich lokale Verzeichnisse zu setzen. Wer z.B. versucht eine Internetadresse anzugeben, bekommt zwar keine Fehlermeldung, wird aber mit einem Standard-Template &#8220;belohnt&#8221;.</p>
<p>Abschließend möchte ich sagen, dass &#8211; gefühlt &#8211; wesentlich mehr über die <code>trac.ini</code> konfigurierbar ist, als es noch vor 2 Jahren der Fall war. Das macht definitiv Lust auf mehr, aber dennoch bleibt das ein oder andere noch zu tun.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pincservices.de/wordpress/trac-themes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Und plötzlich war alles dunkel &#8230;</title>
		<link>http://www.pincservices.de/wordpress/und-plotzlich-war-alles-dunkel</link>
		<comments>http://www.pincservices.de/wordpress/und-plotzlich-war-alles-dunkel#comments</comments>
		<pubDate>Sat, 14 Nov 2009 09:40:03 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Projektverwaltung]]></category>
		<category><![CDATA[Werkzeuge]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Genshi]]></category>
		<category><![CDATA[gtk+]]></category>
		<category><![CDATA[Trac]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.pincservices.de/wordpress/?p=343</guid>
		<description><![CDATA[Ich weiss nicht, was passiert ist, aber nach dem Upgrade von Ubuntu auf 9.10 wurden diverse Entwickler-Tools unbenutzbar. Dabei handelt es sich insbesondere um Anwendungen, die nicht direkt aus dem Ubuntu-Repository stammen. Im Folgenden will ich auf Eclipse und Trac eingehen. Eclipse 3.5 Nachdem auf GTK+ 2.18 aktualisiert wurde, funktionieren diverse Buttons in Eclipse nicht [...]]]></description>
			<content:encoded><![CDATA[<p>Ich weiss nicht, was passiert ist, aber nach dem Upgrade von Ubuntu auf 9.10 wurden diverse Entwickler-Tools unbenutzbar. Dabei handelt es sich insbesondere um Anwendungen, die nicht direkt aus dem Ubuntu-Repository stammen. Im Folgenden will ich auf Eclipse und Trac eingehen.</p>
<h3>Eclipse 3.5</h3>
<p>Nachdem auf GTK+ 2.18 aktualisiert wurde, funktionieren diverse Buttons in Eclipse nicht mehr. Schnell wird man dank Google auf der Suche nach einem Fix bzw. Workaround fündig (<a href="http://library.gnome.org/devel/gtk/2.18/gtk-migrating-ClientSideWindows.html">Migrating to client-side windows</a>). Offensichtlich ist die Umgebungsvariable <code>GDK_NATIVE_WINDOWS</code> für das Problem verantwortlich. Diese muss auf den Wert <code>true</code> gesetzt werden, damit SWT-basierte Java-Oberflächen (Anmerkung: auch andere Java-Applikationen mit SWT haben das Problem) wieder in altem Glanz erstrahlen.</p>
<pre class="brush: bash;">
#!/bin/bash
env GDK_NATIVE_WINDOWS=true &lt;your/eclipse/path&gt;/eclipse
</pre>
<p><em>(Den Pfad <code>&lt;your/eclipse/path&gt;</code> bitte an das jeweilige Installationsverzeichnis von Eclipse anpassen.)</em></p>
<p>Leider ist dies nur ein bescheidener Workaround, denn sobald man Eclipse aus sich heraus neu startet (z.B. nach Upgrades oder Plugin-Installationen) existiert das alte Problem wieder. Genauso, wenn man den Workspace versucht zu wechseln, da sich Eclipse auch hier herunterfährt und neu startet.</p>
<p>Ein richtiger Fix ist für die Version 3.5.2 angedacht bzw. soll in der 3.6 schon integriert sein, welche für die SDK-Variante bereits existiert. Nur für JEE-Developer wird es wohl noch etwas dauern.</p>
<p>Von einem globalen Umsetzen der Variable <code>GDK_NATIVE_WINDOWS</code> wird an diversen Stellen explizit abgeraten. Hier sei aber anzumerken, dass die Eclipse-Installation aus den Ubuntu-Repositories genau das macht. Für alle, die etwas &#8220;wagemutiger&#8221; sind hier das Startskript mit <code>export</code>.</p>
<pre class="brush: bash;">
#!/bin/sh

# work around e#290395 / LP: #458703
export GDK_NATIVE_WINDOWS=true

xuldir=/usr/lib/xulrunner-$(/usr/bin/xulrunner-1.9.1 --gre-version)
LD_LIBRARY_PATH=$xuldir${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} &lt;your/eclipse/path&gt;/eclipse
 &quot;$@&quot;
</pre>
<p><em>(Den Pfad <code>&lt;your/eclipse/path&gt;</code> bitte an das jeweilige Installationsverzeichnis von Eclipse anpassen.)</em></p>
<p>Dieses Skript am besten unter <code>/usr/local/bin</code> als <code>eclipse</code> ablegen und alle Links, die vorher direkt auf die Eclipse-Startdatei gegangen sind auf dieses Skript umbiegen.</p>
<h3>Trac</h3>
<p>Interessanterweise &#8211; was die primäre Motivation für diesen Kurzkommentar war &#8211; hat es auch das Bugtracking-Tool Trac erwischt. Zum Glück nicht so &#8220;heftig&#8221; wie Eclipse, aber dafür umso unverständlicher. </p>
<p>Ich habe lokal Trac mittels <code>easy_install</code> installiert gehabt. Nach dem Upgrade auf Ubuntu 9.10 erhielt ich plötzlich auf allen Trac-Seiten einen 500-Fehler. Nach kurzem Suchen fand ich in der <code>error.log</code>-Datei von Apache (Pfad unter Ubuntu: <code>/var/log/apache2/error.log</code>) folgenden Eintrag:</p>
<pre class="brush: plain; light: true;">
... [error] [client 127.0.0.1] ImportError: No module named genshi, ...
</pre>
<p>Warum das Modul plötzlich nicht mehr vorhanden war kann ich zum aktuellen Zeitpunkt nicht erklären, aber das war noch nicht das Ende.</p>
<p>Just in dem Moment wo ich mit </p>
<pre class="brush: plain; light: true;">
sudo easy_install Genshi
</pre>
<p>das entsprechende Modul installieren wollte, quittierte mir Ubuntu die Nachricht, dass <code>easy_install</code> nicht existiert. Ein kurzer Blick in Synaptic unter <code>python-setuptools</code> bestätigte die Vermutung, dass das Paket nicht installiert war. Ich möchte an dieser Stelle nicht ausschließen, dass es beim Upgrade in der Liste der zu deinstallierenden Pakete dabei war, aber dennoch ärgerlich. Also war auch hier nachinstallieren angesagt. </p>
<p>Zum Glück fügte sich dann alles sehr schnell. Das Genshi-Modul installierte sich ohne Probleme.</p>
<p>Abschließend musste noch der Workaround für einen Bug (<a href="http://trac.edgewall.org/ticket/7526">http://trac.edgewall.org/ticket/7526</a>)  eingebaut werden. Einfach die <code>compat.py</code> im <code>functional/tests</code>-Ordner in <code>testcompat.py</code><br />
umbenennen und die <code>compat.pyc</code> in <code>compat.pyc.old</code> umbenennen oder gleich löschen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pincservices.de/wordpress/und-plotzlich-war-alles-dunkel/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hudson und Grails am heimischen Herd</title>
		<link>http://www.pincservices.de/wordpress/hudson-und-grails-am-heimischen-herd</link>
		<comments>http://www.pincservices.de/wordpress/hudson-und-grails-am-heimischen-herd#comments</comments>
		<pubDate>Wed, 12 Aug 2009 22:01:52 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Projektverwaltung]]></category>
		<category><![CDATA[Werkzeuge]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[Trac]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.pincservices.de/wordpress/?p=217</guid>
		<description><![CDATA[Nachdem sich verschiedene Projekte bei mir angesammelt haben und ich für jedes in der Regel ein entsprechendes Trac-Projekt angelegt habe, fehlte mir immer mehr die projektübergreifende Oberfläche. Mit den Wochen und Monaten schwängerte sich mein Geist mit dem Gedanken sich an Trac &#8220;zu vergreifen&#8221; und selbst so eine Oberfläche zu schreiben. Zum Glück kam mir [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem sich verschiedene Projekte bei mir angesammelt haben und ich für jedes in der Regel ein entsprechendes Trac-Projekt angelegt habe, fehlte mir immer mehr die projektübergreifende Oberfläche.</p>
<p>Mit den Wochen und Monaten schwängerte sich mein Geist mit dem Gedanken sich an Trac &#8220;zu vergreifen&#8221; und selbst so eine Oberfläche zu schreiben. Zum Glück kam mir eine neue Anforderung in den Weg, die mir die Arbeit teilweise abnahm: der Wunsch eines Continuous Integration Systems &#8211; kurz CI.</p>
<p>Da ich schon gute Erfahrungen mit Hudson gemacht hatte, war die Entscheidung schnell getroffen das System auch für mich einzusetzen. Die Vorteile:</p>
<ul>
<li>einfache Installation</li>
<li>Open Source</li>
<li>kostenfrei</li>
</ul>
<p>Allerdings musste gewährleistet werden, dass man damit Grails-Projekte bauen kann. Schaut man in die Plugin-Liste schreit es einen förmlich an: &#8220;Hier bin ich. Ist total easy-schneasy. Machs einfach!&#8221;</p>
<p>Aber wie so oft bei so offensichtlichen Aktionen liegt die Tücke im Detail. Leider hören &#8211; wie so oft &#8211; die Tutorials im Netz bei der Hälfte auf und vermitteln einem das Gefühl, dass man zu doof für die IT-Welt ist. Deshalb möchte ich hier einfach meine Erfahrungen bei der Einrichtung von Hudson mit den Grails- und Trac-Plugin auf einem Ubuntu-System vorstellen.</p>
<h3>System</h3>
<ul>
<li>Ubuntu 09.04</li>
<li>Tomcat 6 (aus den Ubuntu-Repository)</li>
<li>Trac (manuell installiert)</li>
<li>Grails 1.1.1</li>
</ul>
<p><em>Anmerkung</em><br />
Ob Trac jetzt manuell oder aus dem Repository installiert wurde, ist eigentlich egal.</p>
<h3>Hudson</h3>
<p>Als erstes ging es darum Hudson zu installieren. Zwar bietet Ubuntu auch hier an über eine kleine Erweiterung der Repositories Hudson als Daemon zu installieren, allerdings bin ich persönlich kein großer Freund davon. Deshalb Alternative: war-File downloaden und einfach im Tomcat deployen.</p>
<p style="color: red; font-weight: bold;">Achtung!!! Wenn man das macht, sollte man vorsichtig beim Neustart aus Hudson heraus sein. Die Applikation fährt interessanterweise den Tomcat runter, bekommt ihn aber danach nicht mehr gestartet.</p>
<p>Zwei Dinge muss man dabei beachten, die aber auch auf der Hudson-Seite dokumentiert sind.</p>
<ol>
<li>die Variable HUDSON_HOME muss gesetzt sein &#8211; habe ich bei mir direkt in das Tomcat-Startskript geschrieben (Faulheit siegt)</li>
<li>Es müssen teilweise noch Verzeichnis-Rechte angepasst werden, damit Hudson korrekt läuft</li>
</ol>
<p>Nachdem Hudson nun endlich sein Pracht im Browser präsentiert geht es weiter mit dem Grails-Plugin.</p>
<h3>Grails</h3>
<p>Die Installation von Plugins ist in Hudson sehr simpel &#8211; oder wie manch Web 2.0-Entwickler sagen würde: &#8220;kissy&#8221; (von KISS &#8211; Keep it stupid simple). Einfach Häkchen setzen und auf &#8220;Installieren&#8221; klicken. Wie schon erwähnt, kann es hierbei dazu kommen, dass Hudson den kompletten Tomcat versucht neu zu starten, was zumindest bei mir nicht funktioniert hat. Ggf. einfach den Tomcat manuell neu starten.</p>
<p>Nachdem das Plugin installiert ist, müssen noch einige Konfigurationen durchgeführt werden. Als erstes muss der &#8220;Grails Builder&#8221; in der globalen Konfiguration von Hudson angelegt werden. Hier kann man verschiedene Grails-Installationen angeben, was insbesondere durch die teilweise Inkompatibilität der Versionen von großem Vorteil ist. Da die Sache in zwei Textboxen geregelt wird, verzichte ich mal auf den obligatorischen Screenshot.<br />
Hat man jetzt die notwendigen Installationen angegeben kann man sich gütlich an die Konfiguration des Jobs machen. Hier muss ich vorausschicken, dass ich bereits einige Jobs angelegt hatte.</p>
<p>Unter dem Punkt &#8220;Build Verfahren&#8221; kann man über den Button &#8220;Build-Schritt hinzufügen&#8221; ein &#8220;Build with Grails&#8221; anlegen. Dabei lassen sich verschieden Werte konfigurieren. Nach einigem Herumprobieren waren aber nur drei relevant:</p>
<ol>
<li>Grails Installation (wurde eben in der globalen Konfiguration angelegt)</li>
<li>Targets</li>
<li>grails.work.dir</li>
</ol>
<p>Die Targets kann sich jeder selbst aussuchen aus der Liste, die &#8220;grails help&#8221; ausgibt. Bei mir sind das <code>"test-app -unit --non-interactive" war doc</code>.<br />
Wichtig ist allerdings vor allem der Parameter grails.work.dir!</p>
<p>Das Grails-Plugin erwartet standardmäßig, dass es Zugriff auf das Verzeichnis /usr/share/tomcat6/.grails besitzt um auf den scriptCache zugreifen zu können. Da dieses Verzeichnis aber nicht zwingend freigegeben werden soll, muss ein alternatives Verzeichnis über <code>grails.work.dir</code> gesetzt werden. Andernfalls müssen die Zugriffsrechte mittels <code>sudo chmod -R 777 /usr/share/tomcat6/.grails</code> gesetzt werden.<br />
Das Projekt-Verzeichnis hat noch eine weitere Bedeutung. Wenn man z.B. in Subversion seinen Code unter &#8220;trunk&#8221; eincheckt und keinen expliziten Modulpfad angelegt hat, wird automatisch trunk als Projektname auch in Hudson beim Bauen verwendet. Nun kann man sich vorstellen, dass bei mehreren Projekten, die alle in &#8220;trunk&#8221; liegen dies zu einer Überschneidung führt, die nicht unbedingt erwünscht ist.</p>
<p>Nichtsdestotrotz, bin ich hiermit bereits an das Ende meiner Vorstellung gekommen. Nach der Konfiguration des Jobs einfach auf &#8220;Jetzt bauen&#8221; klicken und schauen was passiert &#8211; ich hoffe mal es funktioniert. Ansonsten: bitte nicht hauen, bei mir läufts <img src='http://www.pincservices.de/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>Trac</h3>
<p>Für alle, die jetzt fragend dastehen und wissen wollen: &#8220;aber er hat doch was von Trac erzählt&#8221;. Ja, das habe ich und ja, auch das geht sehr einfach. Nachdem man das Trac-Plugin installiert hat, erscheint ein Eingabefeld in der Job-Konfiguration, in dem man einen Link zum Trac-Projekt hinterlegen. Nachdem man diesen gespeichert hat, erscheint ein simpler Menüpunkt auf der Job-Seite &#8220;Trac&#8221;, der zu der entsprechenden Trac-Seite führt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pincservices.de/wordpress/hudson-und-grails-am-heimischen-herd/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Projektübergreifende Templates in Trac</title>
		<link>http://www.pincservices.de/wordpress/projektubergreifende-templates-in-trac</link>
		<comments>http://www.pincservices.de/wordpress/projektubergreifende-templates-in-trac#comments</comments>
		<pubDate>Fri, 21 Mar 2008 05:42:43 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Projektverwaltung]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Corporate Identity]]></category>
		<category><![CDATA[Individualisierung]]></category>
		<category><![CDATA[Projektmanagement]]></category>
		<category><![CDATA[Templates]]></category>
		<category><![CDATA[Trac]]></category>

		<guid isPermaLink="false">http://www.pincservices.de/wordpress/projektubergreifende-templates-in-trac</guid>
		<description><![CDATA[Im Beitrag http://www.pincservices.de/wordpress/eigene-templates-in-trac habe ich bereits vorgestellt wie man projektspezifische Designanpassungen machen kann bzw. wie die Projektliste in Trac anpassbar ist. Damals habe ich geschrieben, dass es scheinbar keine Möglichkeit gibt projektübergreifende Templates zu erstellen. Nun die frohe Kunde: Es geht doch. Leider bietet Trac keine Möglichkeit über eine globale Variable das allgemeine Templateverzeichnis zu [...]]]></description>
			<content:encoded><![CDATA[<p>Im Beitrag <a href="http://www.pincservices.de/wordpress/eigene-templates-in-trac">http://www.pincservices.de/wordpress/eigene-templates-in-trac</a><br />
habe ich bereits vorgestellt wie man projektspezifische Designanpassungen machen kann bzw. wie die Projektliste in <a href="trac.edgewall.org/" target="_blank">Trac</a> anpassbar ist. Damals habe ich geschrieben, dass es scheinbar keine Möglichkeit gibt projektübergreifende Templates zu erstellen. Nun die frohe Kunde: Es geht doch.</p>
<p>Leider bietet Trac keine Möglichkeit über eine globale Variable das allgemeine Templateverzeichnis zu definieren. Man muss hierfür die <em>trac.ini </em>im Verzeichnis <em>conf</em> der jeweiligen Projektumgebung anpassen. In dieser Datei gibt es folgenden Abschnitt:</p>
<pre class="brush: plain;">
[inherit]
plugins_dir =
templates_dir =
</pre>
<p>Hier kann man das eigene Templateverzeichnis angeben, welches als Default verwendet werden soll.<br />
Im Fall des Beispiels aus dem obigen Beitrag würde man den Eintrag</p>
<pre class="brush: plain;">templates_dir = /home/testUser/trac/templates</pre>
<p>setzen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pincservices.de/wordpress/projektubergreifende-templates-in-trac/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eigene Templates in Trac</title>
		<link>http://www.pincservices.de/wordpress/eigene-templates-in-trac</link>
		<comments>http://www.pincservices.de/wordpress/eigene-templates-in-trac#comments</comments>
		<pubDate>Sun, 16 Mar 2008 13:23:03 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Projektverwaltung]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Genshi]]></category>
		<category><![CDATA[Templates]]></category>
		<category><![CDATA[Trac]]></category>

		<guid isPermaLink="false">http://www.pincservices.de/wordpress/?p=17</guid>
		<description><![CDATA[Tipps bei der Erstellung von individuellen Templates fÃ¼r Trac. ]]></description>
			<content:encoded><![CDATA[<p>Wer bereits ein größeres Programmierprojekt durchgeführt hat, wird die Erfahrung gemacht haben, dass man auf ein Bugtrackingsystem nicht wirklich verzichten kann.<br />
Im Beitrag <a href="http://www.pincservices.de/wordpress/10-im-kampf-jira-vs-trac">1:0 im Kampf JIRA vs. Trac</a> habe ich schon zwei solche Systeme angesprochen JIRA und Trac, wobei ich hier auf letzteres eingehen möchte.</p>
<p>Nachdem man sich mit diversen Funktionen und Plugins in Trac &#8220;angefreundet&#8221; hat, stellt sich meistens die grundlegende Frage: &#8220;Wie kann ich das Design von Trac so ändern, dass es zu meinem Projekt passt&#8221;. Das fängt beim Logo an und hört bei der Anzeige der Projektliste auf &#8211; insofern man mehrere Projekte hat.</p>
<p>Trac bietet hierfür auf der eigenen Projektseite auch ein <a href="http://trac.edgewall.org/wiki/TracInterfaceCustomization" target="_blank">Tutorial</a>, deshalb möchte ich hier nur eine kurze Einführung geben und dann auf ein paar Fallstricke bei der Individualiserung des Layouts eingehen, die in dem Tutorial nicht auftauchen. Auf das Ein- bzw. Ausblenden von Navigationspunkten oder die entsprechenden Verlinkungen wird hier nicht eingegangen.</p>
<p>Das Templatingsystem von Trac basiert auf <a href="http://genshi.edgewall.org/" target="_blank">Genshi</a>, einer Pythonbibliothek, die es erlaubt Text aus diversen Quellen für das Web aufzubereiten. Trac bedient sich hierbei vor allem des HTML-Parsers.</p>
<p>In dem Verzeichnis <em>trac/templates </em>unterhalb des Trac-Installationsverzeichnisses befinden sich alle html-Dateien für das Default-Template. Insbesondere die <em>layout.html</em> und die <em>index.html </em>sind hier relevant. Die layout.html bestimmt das Aussehen der projektspezifischen Seiten und die index.html die Seite für die Projektliste. Unter <em>trac/htdocs</em> befinden sich  die Bilder,  Javascript-Dateien und die CSS-Dateien.</p>
<p>Trac bietet pro Projekt diverse Stellen zur Individualisierung des Designs an. Eine eigene <em>site.html</em> im Verzeichnis <em>templates</em> und ein eigenes Verzeichnis <em>htdocs</em>, in der eine <em>style.css</em> angelegt werden kann.</p>
<p>Um das Layout der Projektliste anzupassen sollte man folgende Zeile in die Konfigurationsdatei vom Webserver (z.B. die <em>default</em> von Apache) schreiben</p>
<pre class="brush: python; light: true;">
SetEnv TRAC_ENV_INDEX_TEMPLATE &quot;/home/testUser/trac/templates/index.html&quot;
</pre>
<p>beim Setzen der Variable TRAC_ENV_INDEX_TEMPLATE muss darauf geachtet werden, dass sich das Verzeichnis <em>templates</em> nicht unterhalb des Elternverzeichnisses der Umgebungen (Environments) liegt. Wenn z.B. folgendes definiert ist</p>
<pre class="brush: python; light: true;">SetEnv TRAC_ENV_PARENT_DIR &quot;/home/testUser/trac/&quot;</pre>
<p> kommt es auf der Seite für die Projektliste (definiert durch die <em>index.html</em>) zu einer Fehlermeldung, dass die Datei <em>VERSION</em> für das Projekt templates fehlt. Aus diesem Grund sollte die Variable TRAC_ENV_PARENT_DIR auf ein anderes Verzeichnis zeigen. Z.B.</p>
<pre class="brush: python; light: true;">SetEnv TRAC_ENV_PARENT_DIR &quot;/home/testUser/trac/projects&quot;</pre>
<p>Nachdem diese Vorbereitungen getroffen sind, kann man daran gehen, die eigenen Templates zu entwerfen und umzusetzen.</p>
<p>Für projektspezifische Templates kann, wie bereits gesagt, die <em>site.html</em> verwendet werden. In dieser Datei ist vor allem der Ausdruck</p>
<pre class="brush: plain; light: true;">${select('*|text()')}</pre>
<p>relevant. Dieser wird in Verbindung mit</p>
<pre class="brush: python; light: true;">py:match=&quot;body&quot;</pre>
<p>verwendet und bedeutet soviel wie: &#8220;Nimm alle Subtags und jeden Text unterhalb vom Body-Tag&#8221;. Wenn man jetzt aber auf einzelne Elemente zugreifen möchte, z.B. nur den Content- oder den Main-Bereich, dann kann man folgenden Ausdruck verwenden:</p>
<pre class="brush: python; light: true;">${select('div[@id=&quot;main&quot;]|text()')}</pre>
<p>bzw.</p>
<pre class="brush: python; light: true;">${select('div/div[@id=&quot;content&quot;]|text()')}</pre>
<p>Der Ausdruck in der Select-Anweisung ist eine Untermenge von XPath (siehe hierzu <a href="http://genshi.edgewall.org/wiki/Documentation/0.4.x/xpath.html" target="_blank">Genshi XPath</a>).</p>
<p><strike>Leider bietet Trac scheinbar noch kein projektübergreifendes Templating an.</strike></p>
<p>[Update]</p>
<p>Es gibt doch eine Möglichkeit. Siehe hierzu <a href="http://www.pincservices.de/wordpress/projektubergreifende-templates-in-trac">diesen Beitrag</a>.</p>
<p>Weitere Informationen zum dem Thema befinden sich auf der Seite <a href="http://trac.edgewall.org/wiki/TracInterfaceCustomization" target="_blank">http://trac.edgewall.org/wiki/TracInterfaceCustomization</a>, sowie ein Beispiel auf <strike><a href="http://querdenker.kicks-ass.org/trac/querdenker/wiki/TracTemplating" target="_blank">http://querdenker.kicks-ass.org/trac/querdenker/wiki/TracTemplating</a></strike>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pincservices.de/wordpress/eigene-templates-in-trac/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>1:0 im Kampf JIRA vs. Trac</title>
		<link>http://www.pincservices.de/wordpress/10-im-kampf-jira-vs-trac</link>
		<comments>http://www.pincservices.de/wordpress/10-im-kampf-jira-vs-trac#comments</comments>
		<pubDate>Tue, 11 Mar 2008 20:50:36 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Projektverwaltung]]></category>
		<category><![CDATA[JIRA]]></category>
		<category><![CDATA[Spring IDE]]></category>
		<category><![CDATA[Trac]]></category>

		<guid isPermaLink="false">http://www.pincservices.de/wordpress/?p=13</guid>
		<description><![CDATA[Mal wieder ist es geschehen, dass eine kommerzielle Software Ã¼ber die OpenSource-Variante siegt. In diesem Fall aber (leider) zu Recht. Die Entwicklung von Spring IDE wurde lange Zeit ausschlieÃŸlich mittels Trac realisiert. Zu meinem Bedauern haben sich die Verantwortlichen nun doch unter die Leitung von SpringSource gefÃ¼gt und betreiben das Bugtracking mit JIRA. Erreichbar ist [...]]]></description>
			<content:encoded><![CDATA[<p>Mal wieder ist es geschehen, dass eine kommerzielle Software Ã¼ber die OpenSource-Variante siegt. In diesem Fall aber (leider) zu Recht.</p>
<p>Die Entwicklung von Spring IDE wurde lange Zeit ausschlieÃŸlich mittels <a href="http://trac.edgewall.org/">Trac</a> realisiert. Zu meinem Bedauern haben sich die Verantwortlichen nun doch unter die Leitung von SpringSource gefÃ¼gt und betreiben das Bugtracking mit JIRA. Erreichbar ist die Seite von Spring IDE zwar immer noch unter <a href="http://www.springide.org">http://www.springide.org</a> und auch wird dort noch Trac verwendet, aber nur noch der Blog und das Wiki. Geht man auf Tickets, landet man direkt auf der JIRA-Seite.</p>
<p>Dieser Schritt ist allerdings auch verstÃ¤ndlich, da sich dadurch alle Spring-Subprojekte unter einem &#8220;Dach&#8221; vereint finden lassen.</p>
<p>Ein anderer Grund fÃ¼r den Schritt kÃ¶nnte auch die fehlende AttraktivitÃ¤t von Trac sein. Ein produktiver Einsatz ist nur bedingt mÃ¶glich, da bestimmte Elemente noch nicht vorhanden sind. Z.B. ist eine Administration bis Version 0.10 nur von der Konsole aus mÃ¶glich gewesen oder nachdem man das Webadmin-Plugin explizit hinzugeladen hat. AuÃŸerdem ist die Rechteverwaltung fÃ¼r grÃ¶ÃŸere Projekte &#8211; mit mehreren Teams / Entwicklern &#8211; noch relativ rudimentÃ¤r gehalten. Zwar wurden einige dieser Probleme bereits in der Version 0.11 gefixt, aber leider existiert diese bis heute immer noch als Beta (<a href="http://trac.edgewall.org/wiki/TracDownload">http://trac.edgewall.org/wiki/TracDownload</a>).</p>
<p>Dennoch wache ich mit einem Auge Ã¼ber die Entwicklung von Trac und hoffe, dass ich bald frohe Kunde verbreiten kann.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pincservices.de/wordpress/10-im-kampf-jira-vs-trac/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

