Trac - 1

Seznámení s Trac, opensource systémem pro správu projektů.

23.3.2007 06:00 | Radim Kolář | přečteno 10014×

Proč Trac

Když jsem tu před pár týdny popisoval wiki MoinMoin, uvedl jsem, že ho osobně používám pro správu projektů jako wiki zápisníček a bug tracker. MoinMoin wiki je natolik snadno konfigurovatelné, že není moc práce do něj fukcionalitu bug trackeru, pokud to umíte, snadno dodělat. Stačí dvě, tři šablony a několik maker.

Toto řešení rozhodně předčilo stand-alone bug trackery jako jsou Bugzilla a Mantis protože wiki je úžasný poznámkový bloček (navíc s historií), a značně zvedne efektivitu práce. Před tím, než jsem začal používat wiki, jsem používal pro ukládání poznámek nejprve .html + GUI editor pak jsem z důvodu menší pracnosti přešel na prosté textové soubory. Sice se snáze editovaly, ale zase jim chyběly hypertextové odkazy, což začalo vadit hned jak překročily přibližně doustránkovou velikost. Wiki bych se teď již rozhodně nevzdal. Navíc díky makrům se v MoinMoin dá například integrovat seznam bug reportů přímo do stránky.

S tímto řešením jsem byl poměrně dlouhou dobu spokojen. Problémy nastaly, až když počet bug reportů vzrostl. V bug reportech se nedalo moc dobře listovat a vyhledávání také nebylo ideální, jelikož vyhledávací subsystém wiki neumožňuje formulování dotazů typu: vypiš všechny bug reporty, které jsou otervřené a nebyly modifikovány za poslední měsíc. Bylo mi jasné, že systém je třeba buďto přeprogramovat pro ukládání bug reportů do SQL nebo holt nainstalovat bugzillu či něco podobného a oželit integraci bug-report systému s wiki.

Za několik dnů jsem si při prohlížení stránek souvisejících s replikací PostgreSQL databází povšiml aplikace na Mammoth PostgreSQL, kde měli jakýsi systém integrující wiki a bug tracker. Jelikož jsem před několika dny podobnou aplikaci viděl jinde, pojal jsem podezření, že se jedná o stock a nikoliv inhouse aplikaci. To se po kliknutí na About potvrdilo. Aplikace se jmenovala...

Trac - open source project

Trac je wiki integrované s bug trackerem a prohlížečem source code repository. Trac je naprogramován v Pythonu 2.4. Jedná se o minimalistickou aplikaci - žádné zbytečné funkce, které využije jen malá část uživatelů. Pokud někdo nějakou nadstandardní fukcionalitu potřebuje, má možnost naprogramovat si plugin. Tento vcelku rozumný přístup se odrazil i na velikosti tarballu, který má včetně dokumentace má pouhých 420 kB.

Trac využívá template systém Clearsilver, díky kterému je rychlejší než MoinMoin, který je naprogramován v Pythonu komplet. Kromě template systému umí Trac používat Silver City pro syntax highlighting. Doporučuji používat, zářivé barvy za to stojí.

Velmi sympatické je, že Trac používá pro ukládání dat SQL backend. Standardně se sice používá SQLite, ale PostgreSQL je už nějakou dobu podporován také. Podpora MySQL existuje v současnosti pouze v testovací verzi, počítá se s tím, že v Trac 0.10.4 bude již dostatečně odladěná pro produkční nasazení. Musím se přiznat, že dost mne překvapuje, že podpora PostgreSQL byla implementována dříve než MySQL.

Trac může běžet jako standalone WWW server (rychlé), jako CGIčko (pomalé), FastCGI (rychlé) nebo v prostředí mod_python (potřeba Apache2), kterému osobně moc nefandím (podezírám jej z masivních memory leaků). Já jsem si nakonec vybral FastCGI.

Trac nemá vlastní databázi pro autentifikaci uživatelů, používá k tomu WWW server. Standalone trac potřebuje mít k dispozici tabulku uživatelů vytvořenou pomocí htdigest, případně htpasswd. Naneštěstí PAM podporován není. Používání externí autentifikace je dobrý nápad, uživatelé si nebudou muset pamatovat další heslo, protože většina intranet serverů má již autentifikaci nakonfigurovanou.

Po instalaci binárek je potřeba vytvořit prostředí pro projekt. Trac umožňuje spravovat více samostatných projektů. Každý projekt má svůj bug tracker, wiki, source code repository a autorizaci uživatelů. Prostředí se vytvoří příkazem initenv v administrativním programu trac-admin. Jedná se o interaktivní program, kterému odpovíme na pár otázek týkajících se jména projektu a databázového driveru.

Při použití SQLite databáze je nastavení jasné, jediným nastavovatelným parametrem je jméno .db souboru. V případě Postgresu je dobré používat specifické databázové schema, místo defaultního PUBLIC, abychom do jedné databáze mohli umístit více projektů. Dále je dobré mít z bezpečnostních i administrativních důvodů vytvořeného pro každý projekt samostatného databázového uživatele. Databázi je nutné vytvořit s kódováním UTF8.

Data je potřeba zálohovat. Trac-admin má na to příkaz hotbackup, který naneštěstí plně podporuje jen SQLite. U ostatních databází zazálohuje jen adresář s prostředím (t.j. filesystém) a zálohování vlastních dat v databázi nechá na administrátora. Kromě příloh, které jsou uloženy ve filesystému a nikoliv v databázi, se data v adresáři projektu prakticky nemění. Kromě již zmíněných příloh, obsahuje adresář projektu ještě konfiguraci, pluginy, šablony a makra.

Příkazem trac-admin se kromě záloh, dělají i upgrady. V každé major verzi bývá díky novým funkcím také změna struktury databáze. Kromě struktury databáze lze upgradovat i dokumentaci, která se instaluje ve formě wiki stránek. Tuto dokumentaci mohou, podobně jako všechny wiki stránky, uživatelé editovat, ale je nutné počítat s tím, že upgrade dokumentace všechny změny přepíše. Uživateli provedené změny zůstanou přístupné v historii stránky, a tak je možná jejich ruční reintegrace do aktualizované dokumentace.

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=1437