tech:notes_git_trac
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| tech:notes_git_trac [2025/03/24 15:06] – créée - modification externe 127.0.0.1 | tech:notes_git_trac [2026/06/07 19:12] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | < | ||
| + | {{tag> | ||
| + | |||
| + | # Notes git Trac | ||
| + | |||
| + | * http:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * http:// | ||
| + | |||
| + | * https:// | ||
| + | ** Renommer un compte | ||
| + | ** Création d'un admin pour la gestion de compte (ACCTMGR_USER_ADMIN) différent de TRAC_ADMIN | ||
| + | |||
| + | |||
| + | |||
| + | http:// | ||
| + | |||
| + | Voir plugins : | ||
| + | * http:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | Pour les tickets voir aussi : | ||
| + | * https:// | ||
| + | |||
| + | ~~~bash | ||
| + | apt-cache search trac | grep ^trac- | grep -v ' | ||
| + | ~~~ | ||
| + | |||
| + | Bugs : | ||
| + | * https:// | ||
| + | |||
| + | Besoin : | ||
| + | * Groupes | ||
| + | * Ticket Parent / Enfant | ||
| + | * Notification par mail | ||
| + | * Traduction complète en français | ||
| + | ** Traduction Workflow | ||
| + | ** http:// | ||
| + | ** http:// | ||
| + | |||
| + | ## Install | ||
| + | |||
| + | Dépendance | ||
| + | ~~~ | ||
| + | # pysqlite | ||
| + | setuptools | ||
| + | Genshi | ||
| + | babel | ||
| + | docutils | ||
| + | Pygments | ||
| + | pytz | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | sudo apt-get install python-pysqlite2 apache2-utils sqlite3 python-setuptools | ||
| + | |||
| + | easy_install --user pip | ||
| + | export PATH=$PATH: | ||
| + | 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 / | ||
| + | ~~~ | ||
| + | |||
| + | Lancement | ||
| + | ~~~bash | ||
| + | tracd -p 8000 --pidfile=/ | ||
| + | ~~~ | ||
| + | |||
| + | `trac.ini` | ||
| + | ~~~ini | ||
| + | [trac] | ||
| + | repository_type = git | ||
| + | repository_dir = / | ||
| + | |||
| + | [components] | ||
| + | tracopt.versioncontrol.git.* = enabled | ||
| + | |||
| + | [logging] | ||
| + | log_level = WARN | ||
| + | ~~~ | ||
| + | |||
| + | On efface les pages Wiki par défaut | ||
| + | |||
| + | ~~~bash | ||
| + | trac-admin ~/ | ||
| + | ~~~ | ||
| + | |||
| + | Config compte utilisateur Jean | ||
| + | ~~~bash | ||
| + | trac-admin ~/ | ||
| + | trac-admin ~/ | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | Un peu de français | ||
| + | ~~~bash | ||
| + | trac-admin ~/ | ||
| + | trac-admin ~/ | ||
| + | trac-admin ~/ | ||
| + | |||
| + | trac-admin ~/ | ||
| + | trac-admin ~/ | ||
| + | trac-admin ~/ | ||
| + | trac-admin ~/ | ||
| + | |||
| + | trac-admin ~/ | ||
| + | trac-admin ~/ | ||
| + | trac-admin ~/ | ||
| + | ~~~ | ||
| + | |||
| + | Racine du site sur Wiki, ou Ticket ou autre | ||
| + | |||
| + | `trac.ini` | ||
| + | ~~~ini | ||
| + | [trac] | ||
| + | # | ||
| + | default_handler = WikiModule | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Changement des droits par défauts | ||
| + | |||
| + | ~~~bash | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | #trac-admin trac/ | ||
| + | |||
| + | trac-admin trac/ | ||
| + | #trac-admin trac/ | ||
| + | |||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | |||
| + | # Autoriser tous les utilisateurs authentifié à changer le champ Description des tickets | ||
| + | trac-admin ~/ | ||
| + | |||
| + | # Autoriser l' | ||
| + | trac-admin ~/ | ||
| + | |||
| + | ~~~ | ||
| + | |||
| + | |||
| + | #### Gestion plus fine des droits | ||
| + | |||
| + | Installation PrivateTicketsPlugin | ||
| + | ~~~bash | ||
| + | easy_install -Z -U --user https:// | ||
| + | ~~~ | ||
| + | |||
| + | `trac.ini` | ||
| + | ~~~ini | ||
| + | [privatetickets] | ||
| + | group_blacklist = anonymous, authenticated, | ||
| + | |||
| + | [components] | ||
| + | privatetickets.* = enabled | ||
| + | |||
| + | [trac] | ||
| + | permission_policies = PrivateTicketsPolicy, | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | # Il faut garder TICKET_VIEW ! | ||
| + | # permission remove authenticated | ||
| + | # Il faut aussi garder TICKET_MODIFY si l' | ||
| + | # | ||
| + | |||
| + | trac-admin trac/ | ||
| + | trac-admin trac/ | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Logo | ||
| + | |||
| + | Placer logo.png dans projet1/ | ||
| + | |||
| + | `trac.ini` | ||
| + | ~~~ini | ||
| + | [header_logo] | ||
| + | alt = ACME logo | ||
| + | height = 53 | ||
| + | link = /report/8 | ||
| + | src = site/ | ||
| + | width = 393 | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Thème | ||
| + | |||
| + | Cacher les liens vers le guide d' | ||
| + | Ne pas montrer les différents liens vers les pages d' | ||
| + | |||
| + | ~~~ | ||
| + | Hide help links. | ||
| + | Don't show the various help links. This reduces the verbosity of the pages. | ||
| + | ~~~ | ||
| + | |||
| + | http:// | ||
| + | |||
| + | |||
| + | ## Config derrière Nginx en proxy | ||
| + | |||
| + | Voir : | ||
| + | * http:// | ||
| + | |||
| + | Bloquons le port depuis extérieure | ||
| + | ~~~bash | ||
| + | iptables -A INPUT -i venet0 -p tcp -m tcp --dport 8000 -j REJECT | ||
| + | ~~~ | ||
| + | |||
| + | Pour rendre les règles persistantes | ||
| + | ~~~bash | ||
| + | apt-get install iptables-persistent | ||
| + | ~~~ | ||
| + | |||
| + | `/ | ||
| + | ~~~nginx | ||
| + | upstream trac_backend { | ||
| + | server | ||
| + | # | ||
| + | # | ||
| + | } | ||
| + | |||
| + | server { | ||
| + | listen | ||
| + | server_name | ||
| + | |||
| + | access_log | ||
| + | error_log | ||
| + | |||
| + | location / { | ||
| + | rewrite | ||
| + | } | ||
| + | |||
| + | } | ||
| + | server { | ||
| + | listen | ||
| + | server_name | ||
| + | |||
| + | access_log | ||
| + | error_log | ||
| + | |||
| + | client_max_body_size 4M; | ||
| + | | ||
| + | ssl on; | ||
| + | ssl_certificate / | ||
| + | ssl_certificate_key / | ||
| + | ssl_session_timeout 5m; | ||
| + | ssl_prefer_server_ciphers on; | ||
| + | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; | ||
| + | ssl_ciphers ALL: | ||
| + | ssl_dhparam / | ||
| + | add_header Strict-Transport-Security max-age=2678400; | ||
| + | |||
| + | add_header | ||
| + | |||
| + | location / { | ||
| + | proxy_pass | ||
| + | include | ||
| + | # my system doesn' | ||
| + | # proxy_set_header Host $host; | ||
| + | } | ||
| + | |||
| + | } | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | ln -s / | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Config des modules / extensions | ||
| + | |||
| + | ### TestManager | ||
| + | |||
| + | http:// | ||
| + | |||
| + | Voir https:// | ||
| + | |||
| + | Ordre d' | ||
| + | # TracGenericClass | ||
| + | # TracGenericWorkflow | ||
| + | # TestManager | ||
| + | |||
| + | ## Gestion de plusieurs clients | ||
| + | |||
| + | ~~~bash | ||
| + | # Comme le plugin est sur un dépôt SVN nous avons besoin du / | ||
| + | sudo apt-get install subversion | ||
| + | |||
| + | # Dépendance de ce plugin | ||
| + | sudo apt-get install python-lxml | ||
| + | |||
| + | easy_install -Z -U --user https:// | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Désactivation création de liens camelCase | ||
| + | |||
| + | `trac.ini` | ||
| + | ~~~ini | ||
| + | [wiki] | ||
| + | ignore_missing_pages = true | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Création d'une date d' | ||
| + | |||
| + | Voir : | ||
| + | * http:// | ||
| + | * https:// | ||
| + | |||
| + | ### Création de champ personalisé | ||
| + | Ce plugin est intégré dans la nouvelle version de Trac | ||
| + | |||
| + | ~~~bash | ||
| + | easy_install -U -Z --user https:// | ||
| + | ~~~ | ||
| + | |||
| + | `trac.ini` | ||
| + | ~~~ini | ||
| + | [components] | ||
| + | customfieldadmin.* = enabled | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Ajout d'un type Date | ||
| + | |||
| + | https:// | ||
| + | |||
| + | ~~~bash | ||
| + | easy_install -U -Z --user https:// | ||
| + | ~~~ | ||
| + | |||
| + | `trac.ini` | ||
| + | ~~~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 = | ||
| + | due_date.date_empty = true | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Menu de navigation | ||
| + | |||
| + | Désactiver une rubrique | ||
| + | |||
| + | `trac.ini` | ||
| + | ~~~ini | ||
| + | [metanav] | ||
| + | help = disabled | ||
| + | about = disabled | ||
| + | # Cache API link (XmlRpcPlugin) | ||
| + | rpc = disabled | ||
| + | |||
| + | [mainnav] | ||
| + | roadmap = disabled | ||
| + | ~~~ | ||
| + | |||
| + | Rubrique principale / Racine du site | ||
| + | |||
| + | `trac.ini` | ||
| + | ~~~ini | ||
| + | [trac] | ||
| + | # | ||
| + | default_handler = TicketModule | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Clients en ligne de commande | ||
| + | |||
| + | Voir : | ||
| + | * http:// | ||
| + | |||
| + | |||
| + | ### Cartman | ||
| + | |||
| + | https:// | ||
| + | |||
| + | ~~~bash | ||
| + | pip install --user git+https:// | ||
| + | ~/ | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Tracshell | ||
| + | |||
| + | Voir : | ||
| + | * https:// | ||
| + | |||
| + | ~~~bash | ||
| + | easy_install --user pyyaml | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | Droits en écriture requis sur / | ||
| + | ~~~bash | ||
| + | pip install --user git+https:// | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Programmation API | ||
| + | |||
| + | Perl | ||
| + | * https:// | ||
| + | |||
| + | Python 3 | ||
| + | |||
| + | ~~~python | ||
| + | import xmlrpc.client | ||
| + | server = xmlrpc.client.ServerProxy(" | ||
| + | multicall = xmlrpc.client.MultiCall(server) | ||
| + | |||
| + | print( server.ticket.query(' | ||
| + | |||
| + | for t in server.ticket.query(' | ||
| + | print(t); | ||
| + | | ||
| + | server.ticket.get(5) | ||
| + | |||
| + | |||
| + | server.system.listMethods() | ||
| + | |||
| + | print(server.system.methodHelp(' | ||
| + | ~~~ | ||
| + | |||
| + | Cloner un ticket | ||
| + | ~~~python | ||
| + | import xmlrpc.client | ||
| + | s = xmlrpc.client.ServerProxy(" | ||
| + | ticket=s.ticket.get(30) | ||
| + | |||
| + | summary=ticket[3][" | ||
| + | description=ticket[3][" | ||
| + | |||
| + | del ticket[3][" | ||
| + | del ticket[3][" | ||
| + | del ticket[3][" | ||
| + | del ticket[3][" | ||
| + | del ticket[3][" | ||
| + | |||
| + | s.ticket.create(summary, | ||
| + | ~~~ | ||
| + | |||
| + | Obtenir la liste des tickets ayant une échéance | ||
| + | |||
| + | ~~~python | ||
| + | #! / | ||
| + | |||
| + | import datetime | ||
| + | from operator import itemgetter, attrgetter | ||
| + | import xmlrpc.client | ||
| + | |||
| + | s = xmlrpc.client.ServerProxy(" | ||
| + | |||
| + | Tickets = [] | ||
| + | for num in s.ticket.query(' | ||
| + | ticket=s.ticket.get(num); | ||
| + | if ' | ||
| + | due_date=ticket[3][" | ||
| + | due_date=datetime.datetime.strptime(due_date, | ||
| + | else: | ||
| + | due_date=` | ||
| + | |||
| + | summary=ticket[3][" | ||
| + | summary=summary.replace(' | ||
| + | summary=summary.replace('"', | ||
| + | summary=summary.replace(';', | ||
| + | Tickets.append([num, | ||
| + | |||
| + | for num, date, summary in sorted(Tickets, | ||
| + | print(num, date, summary) | ||
| + | ~~~ | ||
| + | |||
