Outils pour utilisateurs

Outils du site


tech:notes_git_trac

Ceci est une ancienne révision du document !


Notes git Trac

Install

Dépendance

# ​pysqlite
​setuptools
​Genshi 
babel
docutils
Pygments​
pytz
sudo apt-get install python-pysqlite2 apache2-utils sqlite3 python-setuptools
 
easy_install --user pip
export PATH=$PATH:$HOME/.local/bin
pip install --user --upgrade pip
 
pip install --user Genshi babel docutils Pygments pytz
pip install --user trac
trac-admin projet1 initenv
 
cd projet1
htpasswd -c .htpasswd jean
trac-admin /home/jean/trac/projet1 permission add jean TRAC_ADMIN

Lancement

 tracd -p 8000 --pidfile=/var/run/z_trac-8000.pid --basic-auth="projet1,projet1/.htpasswd,acme.fr" --protocol=http  -s ~/projet1
trac.ini
[trac]
repository_type = git
repository_dir = /home/jean/trac/repo/.git
 
[components]
tracopt.versioncontrol.git.* = enabled
 
[logging]
log_level = WARN

On efface les pages Wiki par défaut

trac-admin ~/trac/projet1 'wiki remove *'

Config compte utilisateur Jean

trac-admin ~/trac/projet1 'session set email jean jean@acme.fr'
trac-admin ~/trac/projet1 'session set name jean "Prenom NOM"'

Un peu de français

trac-admin ~/trac/projet1 'ticket_type change task Tâche'
trac-admin ~/trac/projet1 'ticket_type change defect Incident'
trac-admin ~/trac/projet1 'ticket_type change enhancement Amélioration'
 
trac-admin ~/trac/projet1 'priority change blocker Bloquant'
trac-admin ~/trac/projet1 'priority change critical Critique'
trac-admin ~/trac/projet1 'priority change major Majeur'
trac-admin ~/trac/projet1 'priority change minor Mineur'
 
trac-admin ~/trac/projet1 'resolution change fixed Résolut'
trac-admin ~/trac/projet1 'resolution change wontfix Rejeté'
trac-admin ~/trac/projet1 'resolution change duplicate Doublon'

Racine du site sur Wiki, ou Ticket ou autre

trac.ini
[trac]
#default_handler = TicketModule
default_handler = WikiModule

Changement des droits par défauts

trac-admin trac/projet1 'permission remove anonymous BROWSER_VIEW'
trac-admin trac/projet1 'permission remove anonymous CHANGESET_VIEW'
trac-admin trac/projet1 'permission remove anonymous FILE_VIEW'
trac-admin trac/projet1 'permission remove anonymous LOG_VIEW'     
trac-admin trac/projet1 'permission remove anonymous MILESTONE_VIEW'
trac-admin trac/projet1 'permission remove anonymous REPORT_SQL_VIEW'
trac-admin trac/projet1 'permission remove anonymous REPORT_VIEW'
trac-admin trac/projet1 'permission remove anonymous ROADMAP_VIEW'   
trac-admin trac/projet1 'permission remove anonymous SEARCH_VIEW'  
trac-admin trac/projet1 'permission remove anonymous TICKET_VIEW'   
trac-admin trac/projet1 'permission remove anonymous TIMELINE_VIEW'  
#trac-admin trac/projet1 'permission remove anonymous WIKI_VIEW'
 
trac-admin trac/projet1 'permission add authenticated TICKET_VIEW'
#trac-admin trac/projet1 'permission add authenticated WIKI_VIEW'
 
trac-admin trac/projet1 'permission add jean BROWSER_VIEW'
trac-admin trac/projet1 'permission add jean CHANGESET_VIEW'
trac-admin trac/projet1 'permission add jean FILE_VIEW'
trac-admin trac/projet1 'permission add jean LOG_VIEW'     
trac-admin trac/projet1 'permission add jean MILESTONE_VIEW'
trac-admin trac/projet1 'permission add jean REPORT_SQL_VIEW'
trac-admin trac/projet1 'permission add jean REPORT_VIEW'
trac-admin trac/projet1 'permission add jean ROADMAP_VIEW'   
trac-admin trac/projet1 'permission add jean SEARCH_VIEW'  
trac-admin trac/projet1 'permission add jean TICKET_VIEW'   
trac-admin trac/projet1 'permission add jean TIMELINE_VIEW'
 
# Autoriser tous les utilisateurs authentifié à changer le champ Description des tickets
trac-admin ~/trac/projet1 'permission add authenticated TICKET_EDIT_DESCRIPTION'
 
# Autoriser l'utilisateur jean à modifier les commentaires des tickets
trac-admin ~/trac/projet1 'permission add jean TICKET_EDIT_COMMENT'

Gestion plus fine des droits

Installation PrivateTicketsPlugin

easy_install -Z -U --user https://trac-hacks.org/svn/privateticketsplugin/
trac.ini
[privatetickets]
group_blacklist = anonymous, authenticated, labusers
 
[components]
privatetickets.* = enabled
 
[trac]
permission_policies = PrivateTicketsPolicy, DefaultPermissionPolicy, LegacyAttachmentPolicy
# Il faut garder TICKET_VIEW !
# permission remove authenticated  TICKET_VIEW
# Il faut aussi garder TICKET_MODIFY si l'utilisateur doit pouvoir éditer ses tickets
# permission remove authenticated  TICKET_MODIFY
 
trac-admin trac/projet1 'permission add authenticated TICKET_VIEW_OWNER'
trac-admin trac/projet1 'permission add authenticated TICKET_VIEW_SELF'

Placer logo.png dans projet1/htdocs/logo.png

trac.ini
[header_logo]
alt = ACME logo
height = 53
link = /report/8
src = site/logo.png
width = 393

Thème

Cacher les liens vers le guide d'utilisation.
Ne pas montrer les différents liens vers les pages d'aide. Ceci permet de réduire la verbosité des pages.

Hide help links.
Don't show the various help links. This reduces the verbosity of the pages.

http://trac.edgewall.org/ticket/2911

Config derrière Nginx en proxy

Voir :

Bloquons le port depuis extérieure

iptables -A INPUT -i venet0 -p tcp -m tcp --dport 8000 -j REJECT 

Pour rendre les règles persistantes

apt-get install iptables-persistent
/etc/nginx/sites-available/trac
  upstream trac_backend {
          server  127.0.0.1:8000;
          #server  127.0.0.1:8001;
          #server  127.0.0.1:8002;
}
 
  server {
          listen          80;
          server_name     trac.acme.fr ;
 
          access_log      /var/log/nginx/trac-acme.log ;
          error_log       /var/log/nginx/trac-acme-error.log info;
 
          location / {
                  rewrite         ^/(.*)$ https://trac.acme.fr/$1 redirect;
          }
 
  }
  server {
          listen          443;
          server_name     trac.acme.fr;
 
          access_log      /var/log/nginx/trac-acme-ssl.log ;
          error_log       /var/log/nginx/trac-acme-ssl-error.log info;
 
          client_max_body_size 4M;
 
          ssl                  on;
          ssl_certificate /etc/ssl/private/wiki.acme.fr.crt;
          ssl_certificate_key /etc/ssl/private/wiki.acme.fr.key;
          ssl_session_timeout 5m;
          ssl_prefer_server_ciphers on;
          ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
          ssl_ciphers ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES:+HIGH:+MEDIUM;
          ssl_dhparam /etc/ssl/private/dh2048.pem;
          add_header Strict-Transport-Security max-age=2678400;
 
          add_header           Front-End-Https    on;
 
          location / {
                  proxy_pass      http://trac_backend;
                  include         /etc/nginx/proxy_params;
                  # my system doesn't have the proxy.conf file so I needed to add the following two lines to get redirects working:
                  # proxy_set_header Host $host;
          }
 
  }
ln -s /etc/nginx/sites-available/trac /etc/nginx/sites-enabled/

Config des modules / extensions

TestManager

http://sourceforge.net/projects/testman4trac/

Voir https://www.youtube.com/watch?v=BIi3QMT0rT4

Ordre d'installation des extensions

  1. TracGenericClass
  2. TracGenericWorkflow
  3. TestManager

Gestion de plusieurs clients

# Comme le plugin est sur un dépôt SVN nous avons besoin du /usr/bin/svn
sudo apt-get install subversion
 
# Dépendance de ce plugin
sudo apt-get install python-lxml
 
easy_install -Z -U --user https://trac-hacks.org/svn/clientsplugin/trunk/

Désactivation création de liens camelCase

trac.ini
[wiki]
ignore_missing_pages = true

Création d'une date d'échéance (deadline)

Création de champ personalisé

Ce plugin est intégré dans la nouvelle version de Trac

easy_install -U -Z --user https://trac-hacks.org/svn/customfieldadminplugin/0.11
trac.ini
[components]
customfieldadmin.* = enabled

Ajout d'un type Date

https://trac-hacks.org/wiki/DateFieldPlugin

easy_install -U -Z --user https://trac-hacks.org/svn/datefieldplugin/1.0/
trac.ini
[components]
datefield.* = enabled
 
[ticket-custom]
due_date = text
due_date.date = true
due_date.label = Echéance
# special value <now> works with 1.0 branch only
#due_date.value = <now>
due_date.value =
due_date.date_empty = true

Désactiver une rubrique

trac.ini
[metanav]
help = disabled
about = disabled
# Cache API link (XmlRpcPlugin)
rpc = disabled
 
[mainnav]
roadmap = disabled

Rubrique principale / Racine du site

trac.ini
[trac]
#default_handler = WikiModule
default_handler = TicketModule

Clients en ligne de commande

Cartman

https://tamentis.com/projects/cartman/

pip install --user git+https://github.com/tamentis/cartman
~/.local/bin/cm help

Tracshell

Voir :

easy_install --user pyyaml

Droits en écriture requis sur /usr/local/bin

pip install --user git+https://github.com/stefanv/tracshell-fixes

Programmation API

Perl

Python 3

import xmlrpc.client
server = xmlrpc.client.ServerProxy("https://user:P@ssw0rd@trac.acme.fr/login/xmlrpc")
multicall = xmlrpc.client.MultiCall(server)
 
print( server.ticket.query('max=0') )
 
for t in server.ticket.query('max=0&status!=closed,format=count'):
        print(t);
 
server.ticket.get(5)
 
 
server.system.listMethods()
 
print(server.system.methodHelp('ticket.query'))

Cloner un ticket

import xmlrpc.client
s = xmlrpc.client.ServerProxy("https://user:P@ssw0rd@trac.acme.fr/login/xmlrpc")
ticket=s.ticket.get(30)
 
summary=ticket[3]["summary"]
description=ticket[3]["description"]
 
del ticket[3]["summary"]
del ticket[3]["description"]
del ticket[3]["_ts"]
del ticket[3]["time"]
del ticket[3]["changetime"]
 
s.ticket.create(summary, description, ticket[3], False, datetime.datetime.now() )

Obtenir la liste des tickets ayant une échéance

#! /usr/bin/env python3
 
import datetime
from operator import itemgetter, attrgetter
import xmlrpc.client
 
s = xmlrpc.client.ServerProxy("https://user:pass@trac.acme.fr/login/xmlrpc")
 
Tickets = []
for num in s.ticket.query('max=0&due_date!=&status!=closed'):
    ticket=s.ticket.get(num);
    if 'due_date' in ticket[3].keys():
        due_date=ticket[3]["due_date"]
        due_date=datetime.datetime.strptime(due_date, "%d/%m/%Y").strftime("%Y-%m-%d")
    else:
        due_date=''
 
    summary=ticket[3]["summary"]
    summary=summary.replace('\'', '')
    summary=summary.replace('"', '')
    summary=summary.replace(';', '')
    Tickets.append([num, due_date, summary])
 
for num, date, summary in sorted(Tickets, key=itemgetter(1), reverse=False):
    print(num, date, summary)
tech/notes_git_trac.1742825205.txt.gz · Dernière modification : de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki