trac est un outil intégré de gestion de projet, avec wiki, gestion de bugs, feuille de route. On peut aussi le brancher avec un système de gestion de version. Je l’ai utilisé pendant un moment, et j’ai arrêté de l’utiliser plus par manque de besoin que parce qu’il ne m’allait pas. Je le réutiliserai donc volontier à l’occasion.
Installation
Il s’agit d’une installation locale.
$ mkdir ~/Trac
Ajout de projets :
$ trac-admin ~/Trac/Projet1 initenv Projet1 'sqlite:db/trac.db'
$ cp Trac/Projet1/conf/trac.ini Trac
$ trac-admin ~/Trac/Projet2 initenv Projet2 'sqlite:db/trac.db' \
--inherit=~/Trac/trac.ini
Démarage du serveur :
$ tracd --port 8080 ~/Trac/Projet1 ~/Trac/Projet2
On peut voir sur la page http://localhost:8080/
que ça fonctionne,
mais il n’y a pas encore d’utilisateur.
Ajout d’un utilisateur (administrateur) :
$ htpasswd -c ~/.htpasswd anne
$ trac-admin ~/Trac/Projet2 permission add anne TRAC_ADMIN
$ tracd -p 8080 --basic-auth="*,/home/anne/.htpasswd,nom_de_domaine" \
~/Trac/Projet1 ~/Trac/Projet2
Configuration
C’est dans les fichiers ~/Trac/trac.ini
pour la partie commune
où les fichiers ~/Trac/Projet1/conf/trac.ini
pour les configurations
spécifiques.
Par exemple :
[mainnav]
wiki.label = Home
tickets.href = /report/1
[metanav]
help = disabled
about = disabled
Installation de TagsPlugin
$ sudo easy_install https://trac-hacks.org/svn/tagsplugin/tags/0.6
puis, dans trac.ini
:
[tags]
ignore_closed_tickets = true
ticket_fields = component, keywords, milestone
[components]
tractags.* = enabled
$ trac-admin ~/Trac/Projet2 upgrade
$ trac-admin ~/Trac/Projet2 wiki upgrade
Puis redémarrer le seveur.
Installation ChildTicketsPlugin :
unzip childticketsplugin-r11365.zip
cd childticketsplugin
sudo easy_install 0.12
Et modifier trac.ini
pour l’ajouter :
[components]
childtickets.* = enabled
childtickets.childtickets.tracchildticketsmodule = enabled
et configurer le plugin dans la rubrique :
[childtickets]
Import files
$ trac-admin ~/Trac/Projet2 wiki load <path> [...]
ou
... wiki import <page> [file]
Par exemple, la mise à jour de la doc :
$ trac-admin ~/Trac/Projet2 wiki import UserManual \
~/Projet2//Manual/index.moin
Cf. cette note
pour voir la génération de index.moin
en txt2tags
.
SVN repos
Depuis le menu adminitrateur :
Name: MonSvn
Type: svn
Directory: /var/svn
Puis:
$ trac-admin ~/Trac/Projet2 repository resync "MonSvn"
et hop: on voit apparaitre un nouvel onglet [Browse source]
.
Reste à prevenir SVN pour la synchro.
Pour cela, il faut ajouter un //hook// post-commit
pour
appeler :
trac-admin $ENV changeset added "toto" $REV
à chaque changeset
.
mkdir /tmp/svn_cache
chown -R root:subversion /tmp/svn_cache
cd /var/svn/hooks
sudo vim post-commit
#!/bin/sh
export PYTHON_EGG_CACHE="/tmp/cache"
REPOS="$1"
REV="$2"
/usr/local/bin/trac-admin /home/anne/Trac/Projet2 changeset added /var/svn "$2"
$ chmod 755 post-commit
On met presque la même chose dans post-revprop-change
mais avec modified
au lieu de added
dans la commande trac-admin
.
$ touch post-revprop-change
$ vi post-revprop-change
#!/bin/sh
export PYTHON_EGG_CACHE="/tmp/cache"
REPOS="$1"
REV="$2"
/usr/local/bin/trac-admin /home/anne/Trac/Projet2 changeset modified /var/svn "$2"
$ chmod 755 post-revprop-change
Raccoucis
Dans mon .bashrc
, quelques fonctions pratiques :
function trac_start () {
tracd -d --hostname=localhost -p 8080 \
--basic-auth="*,/home/anne/.htpasswd,pacatech" \
-e ~/Trac
}
function trac_stop () {
echo ""
echo "DIY: kill this process to stop trac daemon:"
echo ""
psam | grep tracd | grep htpasswd
}
function trac_bkp () {
NAME=Trac-``date +"%Y%m%d"``
TAR=$NAME.tar.gz
mkdir $NAME
trac-admin ~/Trac/Projet1 hotcopy $NAME/CartoC
trac-admin ~/Trac/Projet2 hotcopy $NAME/Divers
tar zcf $TAR $NAME
rm -rf $NAME
echo "trac backup ``du -sh $TAR``"
}
Voir aussi :
- Afficher un pourcentage dans une page HTML
- VNC : Virtual Network Computing
- Git : déménagement d'un dépôt
- Quelques liens au sujet de l'analyse statique
- Ocaml: mon principal langage de développement
- Disque dur externe
- Les profiles dans Firefox
- Cryptographie et mail sous Android
- Quelques liens au sujet du C
- Git rebase : pour diviser un commit