CINXE.COM
TrackerDevelopment - Python Wiki
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <meta name="robots" content="index,nofollow"> <title>TrackerDevelopment - Python Wiki</title> <script type="text/javascript" src="/wiki/common/js/common.js"></script> <script type="text/javascript"> <!-- var search_hint = "Search"; //--> </script> <link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="/wiki/europython/css/common.css"> <link rel="stylesheet" type="text/css" charset="utf-8" media="screen" href="/wiki/europython/css/screen.css"> <link rel="stylesheet" type="text/css" charset="utf-8" media="print" href="/wiki/europython/css/print.css"> <link rel="stylesheet" type="text/css" charset="utf-8" media="projection" href="/wiki/europython/css/projection.css"> <!-- css only for MS IE6/IE7 browsers --> <!--[if lt IE 8]> <link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="/wiki/europython/css/msie.css"> <![endif]--> <link rel="alternate" title="Python Wiki: TrackerDevelopment" href="/moin/TrackerDevelopment?diffs=1&show_att=1&action=rss_rc&unique=0&page=TrackerDevelopment&ddiffs=1" type="application/rss+xml"> <link rel="Start" href="/moin/FrontPage"> <link rel="Alternate" title="Wiki Markup" href="/moin/TrackerDevelopment?action=raw"> <link rel="Alternate" media="print" title="Print View" href="/moin/TrackerDevelopment?action=print"> <link rel="Appendix" title="initial_data_updated.py" href="/moin/TrackerDevelopment?action=AttachFile&do=view&target=initial_data_updated.py"> <link rel="Search" href="/moin/FindPage"> <link rel="Index" href="/moin/TitleIndex"> <link rel="Glossary" href="/moin/WordIndex"> <link rel="Help" href="/moin/HelpOnFormatting"> </head> <body lang="en" dir="ltr"> <div id="header"> <form id="searchform" method="get" action="/moin/TrackerDevelopment"> <div> <input type="hidden" name="action" value="fullsearch"> <input type="hidden" name="context" value="180"> <label for="searchinput">Search:</label> <input id="searchinput" type="text" name="value" value="" size="20" onfocus="searchFocus(this)" onblur="searchBlur(this)" onkeyup="searchChange(this)" onchange="searchChange(this)" alt="Search"> <input id="titlesearch" name="titlesearch" type="submit" value="Titles" alt="Search Titles"> <input id="fullsearch" name="fullsearch" type="submit" value="Text" alt="Search Full Text"> </div> </form> <script type="text/javascript"> <!--// Initialize search form var f = document.getElementById('searchform'); f.getElementsByTagName('label')[0].style.display = 'none'; var e = document.getElementById('searchinput'); searchChange(e); searchBlur(e); //--> </script> <div id="logo"><a href="/moin/FrontPage"></a><a href="http://www.python.org"><img src="/wiki/europython/img/python-logo.gif" alt="Python" ></a><a name="logo"></a></div> <div id="locationline"> <ul id="pagelocation"> <li><a href="/moin/TrackerDevelopment">TrackerDevelopment</a></li> </ul> </div> <ul id="pagetrail"> <li><a href="/moin/TrackerDevelopment">TrackerDevelopment</a></li> </ul> </div> <div id="sidebar"> <div id="star"> </div> <div class="sidepanel"> <ul id="navibar"> <li class="wikilink"><a href="/moin/FrontPage">FrontPage</a></li><li class="wikilink"><a href="/moin/RecentChanges">RecentChanges</a></li><li class="wikilink"><a href="/moin/FindPage">FindPage</a></li><li class="wikilink"><a href="/moin/HelpContents">HelpContents</a></li><li class="current"><a href="/moin/TrackerDevelopment">TrackerDevelopment</a></li> </ul> </div> <div class="sidepanel"> <h1>Page</h1> <ul class="editbar"><li><span class="disabled">Immutable Page</span></li><li class="toggleCommentsButton" style="display:none;"><a href="#" class="nbcomment" onClick="toggleComments();return false;">Comments</a></li><li><a class="nbinfo" href="/moin/TrackerDevelopment?action=info" rel="nofollow">Info</a></li><li><a class="nbattachments" href="/moin/TrackerDevelopment?action=AttachFile" rel="nofollow">Attachments</a></li><li> <form class="actionsmenu" method="GET" action="/moin/TrackerDevelopment"> <div> <label>More Actions:</label> <select name="action" onchange="if ((this.selectedIndex != 0) && (this.options[this.selectedIndex].disabled == false)) { this.form.submit(); } this.selectedIndex = 0;"> <option value="raw">Raw Text</option> <option value="print">Print View</option> <option value="refresh">Delete Cache</option> <option value="show" disabled class="disabled">------------------------</option> <option value="SpellCheck">Check Spelling</option> <option value="LikePages">Like Pages</option> <option value="LocalSiteMap">Local Site Map</option> <option value="show" disabled class="disabled">------------------------</option> <option value="RenamePage" disabled class="disabled">Rename Page</option> <option value="DeletePage" disabled class="disabled">Delete Page</option> <option value="show" disabled class="disabled">------------------------</option> <option value="show" disabled class="disabled">------------------------</option> <option value="show" disabled class="disabled">Remove Spam</option> <option value="show" disabled class="disabled">Revert to this revision</option> <option value="show" disabled class="disabled">------------------------</option> <option value="SlideShow">SlideShow</option> </select> <input type="submit" value="Do"> </div> <script type="text/javascript"> <!--// Init menu actionsMenuInit('More Actions:'); //--> </script> </form> </li></ul> </div> <div class="sidepanel"> <h1>User</h1> <ul id="username"><li><a href="/moin/TrackerDevelopment?action=login" id="login" rel="nofollow">Login</a></li></ul> </div> </div> <div id="page" lang="en" dir="ltr"> <div dir="ltr" id="content" lang="en"><span class="anchor" id="top"></span> <span class="anchor" id="line-1"></span><p class="line862">This page is dedicated to development of Python bug tracker instance at <a class="http" href="http://bugs.python.org/">http://bugs.python.org/</a> <br> <span class="anchor" id="line-2"></span>We have a <a class="http" href="http://psf.upfronthosting.co.za/roundup/meta/">meta tracker</a> for current issues and <a href="/moin/DesiredTrackerFeatures">DesiredTrackerFeatures</a> page for recording ideas. <span class="anchor" id="line-3"></span>See also <a href="/moin/TrackerDevelopmentPlanning">TrackerDevelopmentPlanning</a>. <span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><p class="line867"><div class="table-of-contents"><p class="table-of-contents-heading">Contents<ol><li> <a href="#Docker">Docker</a></li><li> <a href="#Requirements">Requirements</a><ol><li> <a href="#Getting_the_source">Getting the source</a></li><li> <a href="#Other_tracker_configurations">Other tracker configurations</a></li></ol></li><li> <a href="#Setup_bugs.python.org_instance">Setup bugs.python.org instance</a><ol><li> <a href="#Install_patched_Roundup">Install patched Roundup</a></li><li> <a href="#Checkout_the_python-dev_instance">Checkout the python-dev instance</a></li><li> <a href="#Checkout_the_Rietveld_integration_.28optional.29">Checkout the Rietveld integration (optional)</a></li><li> <a href="#Install_psycopg2_.28PostgreSQL_access_library_for_Python.29">Install psycopg2 (PostgreSQL access library for Python)</a></li><li> <a href="#Install_and_configure_PostgreSQL">Install and configure PostgreSQL</a></li><li> <a href="#Configure_your_Development_Roundup_Instance">Configure your Development Roundup Instance</a></li><li> <a href="#Rietveld_Setup">Rietveld Setup</a></li><li> <a href="#irker_setup">irker setup</a></li></ol></li><li> <a href="#Resources_for_Tracker_Development">Resources for Tracker Development</a><ol><li> <a href="#Getting_Help">Getting Help</a></li><li> <a href="#Using_roundup-admin">Using roundup-admin</a></li><li> <a href="#The_Meta_Tracker">The Meta Tracker</a></li><li> <a href="#Setting_Up_an_Instance_in_a_VirtualEnv">Setting Up an Instance in a VirtualEnv</a></li><li> <a href="#The_Test_Tracker">The Test Tracker</a></li><li> <a href="#The_Experimental_Tracker">The Experimental Tracker</a></li></ol></li><li> <a href="#Getting_Your_Own_Jython_Tracker">Getting Your Own Jython Tracker</a></li></ol></div> <span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span><p class="line867"> <h1 id="Docker">Docker</h1> <span class="anchor" id="line-8"></span><span class="anchor" id="line-9"></span><p class="line874">The simplest way to work with the tracker is by using Docker. <span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><p class="line862">Clone <a class="https" href="https://github.com/python/docker-bpo">the docker-bpo repo</a> and follow the README. <span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span><p class="line874">If you want to install the tracker manually follow the instructions below. <span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span><span class="anchor" id="line-16"></span><p class="line867"> <h1 id="Requirements">Requirements</h1> <span class="anchor" id="line-17"></span><span class="anchor" id="line-18"></span><p class="line874">This configuration is deployed on production server, so it is good to <span class="anchor" id="line-19"></span>stick it for development as well: <span class="anchor" id="line-20"></span><span class="anchor" id="line-21"></span><ul><li>Roundup 1.4.20+ (patched version) <span class="anchor" id="line-22"></span></li><li>PostgreSQL (as a backend database) <span class="anchor" id="line-23"></span></li><li>psycopg2 (bindings for the above) <span class="anchor" id="line-24"></span></li><li><p class="line862">pyoidc (OpenID Connect library from <a class="https" href="https://github.com/rohe/pyoidc">https://github.com/rohe/pyoidc</a>) <span class="anchor" id="line-25"></span><span class="anchor" id="line-26"></span></li></ul><p class="line867"><a class="http" href="http://bugs.python.org/">http://bugs.python.org/</a> (<tt class="backtick">python-dev</tt> tracker instance or configuration) is running PostgreSQL on backed, because it has the best performance for large installations. Besides, there is at least one place in the <tt class="backtick">python-dev</tt> config with hardcoded dependency on the SQL-based backed. <span class="anchor" id="line-27"></span><span class="anchor" id="line-28"></span><p class="line867"> <h2 id="Getting_the_source">Getting the source</h2> <span class="anchor" id="line-29"></span><span class="anchor" id="line-30"></span><p class="line862">Get patched version of <a class="http" href="http://www.roundup-tracker.org/">Roundup tracker</a> from here: <span class="anchor" id="line-31"></span><span class="anchor" id="line-32"></span><ul><li><p class="line891"><a class="http" href="http://hg.python.org/tracker/roundup/">http://hg.python.org/tracker/roundup/</a> (the changes are in the <tt class="backtick">bugs.python.org</tt> branch) <span class="anchor" id="line-33"></span><span class="anchor" id="line-34"></span></li></ul><p class="line862">Tracker configuration for <a class="http" href="http://bugs.python.org/">http://bugs.python.org/</a> (called 'tracker home', 'instance' or `environment) is here: <span class="anchor" id="line-35"></span><span class="anchor" id="line-36"></span><ul><li><p class="line862">Official: <a class="http" href="http://hg.python.org/tracker/python-dev/">http://hg.python.org/tracker/python-dev/</a> <span class="anchor" id="line-37"></span></li><li><p class="line862">Mirror: <a class="https" href="https://bitbucket.org/rirror/bugs.python.org">https://bitbucket.org/rirror/bugs.python.org</a> <span class="anchor" id="line-38"></span><span class="anchor" id="line-39"></span></li></ul><p class="line867"> <h2 id="Other_tracker_configurations">Other tracker configurations</h2> <span class="anchor" id="line-40"></span><span class="anchor" id="line-41"></span><p class="line862">There are several Roundup trackers used for Python development. Configuration for them is maintained in <a class="http" href="http://hg.python.org/tracker/">http://hg.python.org/tracker/</a> repositories: <span class="anchor" id="line-42"></span><span class="anchor" id="line-43"></span><ul><li><p class="line891"><strong>roundup</strong>: a clone of the original Roundup with our modifications; <span class="anchor" id="line-44"></span></li><li><p class="line891"><strong>python-dev</strong>: the instance used on bugs.python.org; <span class="anchor" id="line-45"></span></li><li><p class="line891"><strong>meta</strong>: the instance used for the meta tracker; <span class="anchor" id="line-46"></span></li><li><p class="line891"><strong>jython</strong>: the instance used for the jython tracker; <span class="anchor" id="line-47"></span></li><li><p class="line891"><strong>setuptools</strong>: the instance used for the setuptools tracker; <span class="anchor" id="line-48"></span></li><li><p class="line891"><strong>rietveld</strong>: a clone of Rietveld used to do reviews on the bug tracker; <span class="anchor" id="line-49"></span></li><li><p class="line891"><strong>django-gae2django</strong>: a clone of django-gae2django necessary for rietveld; <span class="anchor" id="line-50"></span><span class="anchor" id="line-51"></span><span class="anchor" id="line-52"></span></li></ul><p class="line867"> <h1 id="Setup_bugs.python.org_instance">Setup bugs.python.org instance</h1> <span class="anchor" id="line-53"></span><span class="anchor" id="line-54"></span><p class="line867"> <h2 id="Install_patched_Roundup">Install patched Roundup</h2> <span class="anchor" id="line-55"></span><span class="anchor" id="line-56"></span><p class="line862">Clone code and switch to <tt class="backtick">bugs.python.org</tt> branch before installing. Here it is <span class="anchor" id="line-57"></span>installed to hardcoded system-wide location at <tt class="backtick">/opt/tracker-roundup/</tt>. <span class="anchor" id="line-58"></span><span class="anchor" id="line-59"></span><ul><li>Read-only clone <span class="anchor" id="line-60"></span><span class="anchor" id="line-61"></span><span class="anchor" id="line-62"></span><pre><span class="anchor" id="line-1"></span>hg clone http://hg.python.org/tracker/roundup</pre><span class="anchor" id="line-63"></span><span class="anchor" id="line-64"></span></li><li class="gap">Read/Write clone (if you have write access to the repository) <span class="anchor" id="line-65"></span><span class="anchor" id="line-66"></span><span class="anchor" id="line-67"></span><pre><span class="anchor" id="line-1-1"></span>hg clone ssh://hg@hg.python.org/tracker/roundup</pre><span class="anchor" id="line-68"></span><span class="anchor" id="line-69"></span></li></ul><p class="line867"><span class="anchor" id="line-70"></span><span class="anchor" id="line-71"></span><span class="anchor" id="line-72"></span><span class="anchor" id="line-73"></span><pre><span class="anchor" id="line-1-2"></span>cd roundup <span class="anchor" id="line-2"></span>hg up bugs.python.org <span class="anchor" id="line-3"></span>sudo python setup.py install --prefix /opt/tracker-roundup/</pre><span class="anchor" id="line-74"></span><span class="anchor" id="line-75"></span><span class="anchor" id="line-76"></span><p class="line867"> <h2 id="Checkout_the_python-dev_instance">Checkout the python-dev instance</h2> <span class="anchor" id="line-77"></span><span class="anchor" id="line-78"></span><ul><li>Read-only clone <span class="anchor" id="line-79"></span><span class="anchor" id="line-80"></span><span class="anchor" id="line-81"></span><pre><span class="anchor" id="line-1-3"></span>hg clone http://hg.python.org/tracker/python-dev</pre><span class="anchor" id="line-82"></span><span class="anchor" id="line-83"></span></li><li class="gap">Read/Write clone (if you have write access to the repository) <span class="anchor" id="line-84"></span><span class="anchor" id="line-85"></span><span class="anchor" id="line-86"></span><pre><span class="anchor" id="line-1-4"></span>hg clone ssh://hg@hg.python.org/tracker/python-dev</pre><span class="anchor" id="line-87"></span><span class="anchor" id="line-88"></span><span class="anchor" id="line-89"></span></li></ul><p class="line867"> <h2 id="Checkout_the_Rietveld_integration_.28optional.29">Checkout the Rietveld integration (optional)</h2> <span class="anchor" id="line-90"></span><span class="anchor" id="line-91"></span><span class="anchor" id="line-92"></span><p class="line874">If you want to work on Rietveld code review tool, check out the django-gae2django and rietveld clones in the python-dev/ directory: <span class="anchor" id="line-93"></span><span class="anchor" id="line-94"></span><span class="anchor" id="line-95"></span><ul><li>Read-only clone <span class="anchor" id="line-96"></span><span class="anchor" id="line-97"></span><span class="anchor" id="line-98"></span><span class="anchor" id="line-99"></span><span class="anchor" id="line-100"></span><pre><span class="anchor" id="line-1-5"></span>cd python-dev <span class="anchor" id="line-2-1"></span>hg clone http://hg.python.org/tracker/django-gae2django/ <span class="anchor" id="line-3-1"></span>hg clone http://hg.python.org/tracker/rietveld/</pre><span class="anchor" id="line-101"></span><span class="anchor" id="line-102"></span></li><li class="gap">Read/Write clone (if you have write access to the repository) <span class="anchor" id="line-103"></span><span class="anchor" id="line-104"></span><span class="anchor" id="line-105"></span><span class="anchor" id="line-106"></span><span class="anchor" id="line-107"></span><pre><span class="anchor" id="line-1-6"></span>cd python-dev <span class="anchor" id="line-2-2"></span>hg clone ssh://hg@hg.python.org/tracker/django-gae2django/ <span class="anchor" id="line-3-2"></span>hg clone ssh://hg@hg.python.org/tracker/rietveld/</pre><span class="anchor" id="line-108"></span><span class="anchor" id="line-109"></span><span class="anchor" id="line-110"></span><span class="anchor" id="line-111"></span></li></ul><p class="line862">After getting the clones <strong>remember to update the branches to bugs.python.org</strong>: <span class="anchor" id="line-112"></span><span class="anchor" id="line-113"></span><p class="line867"><span class="anchor" id="line-114"></span><span class="anchor" id="line-115"></span><span class="anchor" id="line-116"></span><span class="anchor" id="line-117"></span><span class="anchor" id="line-118"></span><span class="anchor" id="line-119"></span><pre><span class="anchor" id="line-1-7"></span>cd django-gae2django <span class="anchor" id="line-2-3"></span>hg up bugs.python.org <span class="anchor" id="line-3-3"></span>cd .. <span class="anchor" id="line-4"></span>cd rietveld <span class="anchor" id="line-5"></span>hg up bugs.python.org</pre><span class="anchor" id="line-120"></span><span class="anchor" id="line-121"></span><span class="anchor" id="line-122"></span><p class="line874">In addition, Django needs to be installed; e.g. the Django 1.2 or 1.3 Debian packages work fine. <span class="anchor" id="line-123"></span><span class="anchor" id="line-124"></span><span class="anchor" id="line-125"></span><p class="line867"> <h2 id="Install_psycopg2_.28PostgreSQL_access_library_for_Python.29">Install psycopg2 (PostgreSQL access library for Python)</h2> <span class="anchor" id="line-126"></span><span class="anchor" id="line-127"></span><p class="line874">For Debian/Ubuntu: <span class="anchor" id="line-128"></span><span class="anchor" id="line-129"></span><p class="line867"><span class="anchor" id="line-130"></span><span class="anchor" id="line-131"></span><pre><span class="anchor" id="line-1-8"></span>sudo apt-get install python-psycopg2</pre><span class="anchor" id="line-132"></span><span class="anchor" id="line-133"></span><span class="anchor" id="line-134"></span><p class="line862">For other systems, follow instructions from <a class="http" href="http://initd.org/psycopg/install/">psycopg2 site</a>. <span class="anchor" id="line-135"></span><span class="anchor" id="line-136"></span><span class="anchor" id="line-137"></span><span class="anchor" id="line-138"></span><p class="line867"> <h2 id="Install_and_configure_PostgreSQL">Install and configure PostgreSQL</h2> <span class="anchor" id="line-139"></span><span class="anchor" id="line-140"></span><p class="line874">Other backends may work, but it is recommended to keep development environment close to production. <span class="anchor" id="line-141"></span><span class="anchor" id="line-142"></span><p class="line862">It has been reported that 8.2, 8.3, 8.4, and 9.1 work well. See <a href="/moin/UpgradingPostgreSQL">UpgradingPostgreSQL</a> if you need to upgrade version. <span class="anchor" id="line-143"></span><span class="anchor" id="line-144"></span><p class="line874">Access control in PostgreSQL is tricky. You need to know Unix user, under which you run Roundup, setup access for him to PostgreSQL database, and add PostgreSQL user that you've configured in Roundup's configuration. <span class="anchor" id="line-145"></span><span class="anchor" id="line-146"></span><p class="line874">For a development environment the easiest way is to allow any user from localhost to connect as any database user. This can be accomplished by editing pg_hba.conf (usually found in /etc/postgresql/9.x/main/ in Linux or /Library/PostgreSQL/9.x/data/ in Mac OS X -- you might need privileges to edit it). The end of the file should look like this (the four changed lines are preceded by ##): <span class="anchor" id="line-147"></span><span class="anchor" id="line-148"></span><span class="anchor" id="line-149"></span><p class="line867"><span class="anchor" id="line-150"></span><span class="anchor" id="line-151"></span><span class="anchor" id="line-152"></span><span class="anchor" id="line-153"></span><span class="anchor" id="line-154"></span><span class="anchor" id="line-155"></span><span class="anchor" id="line-156"></span><span class="anchor" id="line-157"></span><span class="anchor" id="line-158"></span><span class="anchor" id="line-159"></span><span class="anchor" id="line-160"></span><span class="anchor" id="line-161"></span><span class="anchor" id="line-162"></span><span class="anchor" id="line-163"></span><span class="anchor" id="line-164"></span><span class="anchor" id="line-165"></span><pre><span class="anchor" id="line-1-9"></span># Database administrative login by UNIX sockets <span class="anchor" id="line-2-4"></span>##local all postgres ident <span class="anchor" id="line-3-4"></span>local all postgres trust <span class="anchor" id="line-4-1"></span> <span class="anchor" id="line-5-1"></span># TYPE DATABASE USER CIDR-ADDRESS METHOD <span class="anchor" id="line-6"></span> <span class="anchor" id="line-7"></span># "local" is for Unix domain socket connections only <span class="anchor" id="line-8"></span>##local all all ident <span class="anchor" id="line-9"></span>local all all trust <span class="anchor" id="line-10"></span># IPv4 local connections: <span class="anchor" id="line-11"></span>##host all all 127.0.0.1/32 md5 <span class="anchor" id="line-12"></span>host all all 127.0.0.1/32 trust <span class="anchor" id="line-13"></span># IPv6 local connections: <span class="anchor" id="line-14"></span>##host all all ::1/128 md5 <span class="anchor" id="line-15"></span>host all all ::1/128 trust</pre><span class="anchor" id="line-166"></span><span class="anchor" id="line-167"></span><span class="anchor" id="line-168"></span><p class="line867"><strong>PLEASE NOTE</strong>: This is not a secure configuration on a multi-user machine. <span class="anchor" id="line-169"></span><span class="anchor" id="line-170"></span><span class="anchor" id="line-171"></span><p class="line874">After the change in pg_hba.conf, reload your postgreSQL database to make sure it knows about your new access configuration. Something similar to <span class="anchor" id="line-172"></span><span class="anchor" id="line-173"></span><span class="anchor" id="line-174"></span><p class="line867"><span class="anchor" id="line-175"></span><span class="anchor" id="line-176"></span><pre><span class="anchor" id="line-1-10"></span>sudo /etc/init.d/postgresql reload</pre><span class="anchor" id="line-177"></span><span class="anchor" id="line-178"></span><span class="anchor" id="line-179"></span><p class="line874">should do the trick on Unix-like platforms. <span class="anchor" id="line-180"></span><span class="anchor" id="line-181"></span><span class="anchor" id="line-182"></span><p class="line862">On Mac OS X, do <tt>sudo聽su聽-聽postgres</tt>. Then use pg_ctl to restart the server: <span class="anchor" id="line-183"></span><span class="anchor" id="line-184"></span><p class="line867"><span class="anchor" id="line-185"></span><span class="anchor" id="line-186"></span><pre><span class="anchor" id="line-1-11"></span>/Library/PostgreSQL/9.x/bin/pg_ctl restart -D /Library/PostgreSQL/9.x/data</pre><span class="anchor" id="line-187"></span><span class="anchor" id="line-188"></span><span class="anchor" id="line-189"></span><p class="line874">Create a database user that is allowed to create databases. This user will be used when roundup connects to the database. <span class="anchor" id="line-190"></span><span class="anchor" id="line-191"></span><p class="line867"><span class="anchor" id="line-192"></span><span class="anchor" id="line-193"></span><span class="anchor" id="line-194"></span><span class="anchor" id="line-195"></span><pre><span class="anchor" id="line-1-12"></span>$ psql -U postgres <span class="anchor" id="line-2-5"></span>postgres=# create user roundup; <span class="anchor" id="line-3-5"></span>postgres=# alter user roundup with createdb;</pre><span class="anchor" id="line-196"></span><span class="anchor" id="line-197"></span><span class="anchor" id="line-198"></span><span class="anchor" id="line-199"></span><p class="line867"> <h2 id="Configure_your_Development_Roundup_Instance">Configure your Development Roundup Instance</h2> <span class="anchor" id="line-200"></span><span class="anchor" id="line-201"></span><span class="anchor" id="line-202"></span><p class="line874">Now enter the python-dev directory, and create the 'db' directory, as well as the db/backend_name file which decides which backend (i.e. database type) to use: <span class="anchor" id="line-203"></span><span class="anchor" id="line-204"></span><p class="line867"><span class="anchor" id="line-205"></span><span class="anchor" id="line-206"></span><span class="anchor" id="line-207"></span><span class="anchor" id="line-208"></span><pre><span class="anchor" id="line-1-13"></span>cd python-dev <span class="anchor" id="line-2-6"></span>mkdir db <span class="anchor" id="line-3-6"></span>echo postgresql > db/backend_name</pre><span class="anchor" id="line-209"></span><span class="anchor" id="line-210"></span><span class="anchor" id="line-211"></span><p class="line862">Note: the db dir contains all the messages and files attached to issues, and it's removed and recreated every time you run <tt>roundup-admin聽init</tt>. <span class="anchor" id="line-212"></span><span class="anchor" id="line-213"></span><span class="anchor" id="line-214"></span><p class="line862">Copy <tt>python-dev/config.ini.template</tt> into <tt>config.ini</tt> and <tt>detectors/config.ini.template</tt> into <tt>detectors/config.ini</tt>: <span class="anchor" id="line-215"></span><span class="anchor" id="line-216"></span><p class="line867"><span class="anchor" id="line-217"></span><span class="anchor" id="line-218"></span><span class="anchor" id="line-219"></span><pre><span class="anchor" id="line-1-14"></span>cp config.ini.template config.ini <span class="anchor" id="line-2-7"></span>cp detectors/config.ini.template detectors/config.ini</pre><span class="anchor" id="line-220"></span><span class="anchor" id="line-221"></span><p class="line862">The former will let you configure your roundup instance; the latter, detectors such as <strong>irker</strong>, <strong>busybody</strong>, or <strong>tellteam</strong>. <span class="anchor" id="line-222"></span><span class="anchor" id="line-223"></span><span class="anchor" id="line-224"></span><p class="line862">In config.ini pay special attention to settings marked with <em>NO DEFAULT</em>. <span class="anchor" id="line-225"></span><span class="anchor" id="line-226"></span><p class="line867"><tt>config.ini.template</tt> already contains some useful default values for a development enviroment, for example <span class="anchor" id="line-227"></span><span class="anchor" id="line-228"></span><p class="line867"><span class="anchor" id="line-229"></span><span class="anchor" id="line-230"></span><pre><span class="anchor" id="line-1-15"></span>debug = debugmail.txt</pre><span class="anchor" id="line-231"></span><span class="anchor" id="line-232"></span><span class="anchor" id="line-233"></span><p class="line862">at the end of the <tt>[mail]</tt> section saves outgoing mails on a local file; and <span class="anchor" id="line-234"></span><span class="anchor" id="line-235"></span><p class="line867"><span class="anchor" id="line-236"></span><span class="anchor" id="line-237"></span><pre><span class="anchor" id="line-1-16"></span>debug = on</pre><span class="anchor" id="line-238"></span><span class="anchor" id="line-239"></span><p class="line862">at the end of the <tt>[web]</tt> section shows tracebacks in the browser instead of having them sent by email. <span class="anchor" id="line-240"></span><span class="anchor" id="line-241"></span><span class="anchor" id="line-242"></span><p class="line874">Initialize your roundup instance: <span class="anchor" id="line-243"></span><span class="anchor" id="line-244"></span><p class="line867"><span class="anchor" id="line-245"></span><span class="anchor" id="line-246"></span><pre><span class="anchor" id="line-1-17"></span>/opt/tracker-roundup/bin/roundup-admin -i <your python-dev directory> init</pre><span class="anchor" id="line-247"></span><span class="anchor" id="line-248"></span><span class="anchor" id="line-249"></span><p class="line874">Provide a password for the 'admin' user when asked for. <span class="anchor" id="line-250"></span><span class="anchor" id="line-251"></span><span class="anchor" id="line-252"></span><p class="line867"><strong>Note</strong>: you have to provide the full path to your python-dev directory, otherwise the command will fail. <span class="anchor" id="line-253"></span><span class="anchor" id="line-254"></span><span class="anchor" id="line-255"></span><p class="line874">If you are getting the error: <span class="anchor" id="line-256"></span><span class="anchor" id="line-257"></span><span class="anchor" id="line-258"></span><ul><li><p class="line862">"<tt>roundup.hyperdb.DatabaseError:聽FATAL:聽聽password聽authentication聽failed聽for聽user聽"roundup"</tt>" check again pg_hba.conf; <span class="anchor" id="line-259"></span></li><li><p class="line862">"<tt>roundup.configuration.OptionUnsetError:聽MAIL_DOMAIN聽is聽not聽set聽and聽has聽no聽default</tt>" set the option in python-dev/config.ini, [mail] section, domain; <span class="anchor" id="line-260"></span><span class="anchor" id="line-261"></span><span class="anchor" id="line-262"></span></li></ul><p class="line874">Start your roundup instance: <span class="anchor" id="line-263"></span><span class="anchor" id="line-264"></span><p class="line867"><span class="anchor" id="line-265"></span><span class="anchor" id="line-266"></span><pre><span class="anchor" id="line-1-18"></span>/opt/tracker-roundup/bin/roundup-server -p 9999 python-dev=<your python-dev directory></pre><span class="anchor" id="line-267"></span><span class="anchor" id="line-268"></span><span class="anchor" id="line-269"></span><p class="line874">You will have to use this command every time you (re)start roundup, so it's easier to create an alias for it with: <span class="anchor" id="line-270"></span><span class="anchor" id="line-271"></span><span class="anchor" id="line-272"></span><p class="line867"><span class="anchor" id="line-273"></span><span class="anchor" id="line-274"></span><pre><span class="anchor" id="line-1-19"></span>alias start-roundup='/opt/tracker-roundup/bin/roundup-server -p 9999 python-dev=<your python-dev directory>'</pre><span class="anchor" id="line-275"></span><span class="anchor" id="line-276"></span><span class="anchor" id="line-277"></span><p class="line874">It might be a good idea to create another alias for roundup admin too: <span class="anchor" id="line-278"></span><span class="anchor" id="line-279"></span><span class="anchor" id="line-280"></span><p class="line867"><span class="anchor" id="line-281"></span><span class="anchor" id="line-282"></span><pre><span class="anchor" id="line-1-20"></span>alias admin-roundup='/opt/tracker-roundup/bin/roundup-admin -i <your python-dev directory>'</pre><span class="anchor" id="line-283"></span><span class="anchor" id="line-284"></span><span class="anchor" id="line-285"></span><p class="line862">then add them to your <tt>.bashrc</tt> (or <tt>~/.profile</tt> in Mac OS X) <span class="anchor" id="line-286"></span><span class="anchor" id="line-287"></span><span class="anchor" id="line-288"></span><p class="line862">You should now be able to browse <a class="http" href="http://localhost:9999/python-dev/">http://localhost:9999/python-dev/</a> and get a roundup instance that looks just like <a class="http" href="http://bugs.python.org">http://bugs.python.org</a>, except for some missing new values for fields like Stages and Keywords. It's possible to replace <strong>initial_data.py</strong> with an <a class="nonexistent" href="/moin/TrackerDevelopment%3Faction%3DAttachFile%26do%3Dview%26target%3Dinitial_data_updated.py">updated version</a> so that your fields will have values that match those currently present in the Python Tracker. <span class="anchor" id="line-289"></span><span class="anchor" id="line-290"></span><span class="anchor" id="line-291"></span><p class="line874">The IDs for values in a given field might be different from those in the Python Tracker. This should only be a problem if you try to import CSV files from one tracker into the other. <span class="anchor" id="line-292"></span><span class="anchor" id="line-293"></span><span class="anchor" id="line-294"></span><p class="line862">Create an user from User->register in the left sidebar. Note that if you have set <tt>debug = debugmail.txt</tt> as suggested above, you will have to open the file and copy the URL in the browser (make sure to replace <tt>=3D</tt> with <tt>=</tt> in the URL and to remove the trailing <tt>=</tt> where the url is broken at the end of the line). You can then use roundup-admin to set developer privileges for it: <span class="anchor" id="line-295"></span><span class="anchor" id="line-296"></span><span class="anchor" id="line-297"></span><p class="line867"><span class="anchor" id="line-298"></span><span class="anchor" id="line-299"></span><span class="anchor" id="line-300"></span><span class="anchor" id="line-301"></span><span class="anchor" id="line-302"></span><span class="anchor" id="line-303"></span><span class="anchor" id="line-304"></span><span class="anchor" id="line-305"></span><span class="anchor" id="line-306"></span><pre><span class="anchor" id="line-1-21"></span>/opt/tracker-roundup/bin/roundup-admin -i <your python-dev directory> <span class="anchor" id="line-2-8"></span>Roundup 1.5.0 ready for input. <span class="anchor" id="line-3-7"></span>Type "help" for help. <span class="anchor" id="line-4-2"></span>roundup> display user3 <span class="anchor" id="line-5-2"></span>... <span class="anchor" id="line-6-1"></span>roundup> set user3 roles=User,Developer,Coordinator <span class="anchor" id="line-7-1"></span>roundup> commit <span class="anchor" id="line-8-1"></span>roundup></pre><span class="anchor" id="line-307"></span><span class="anchor" id="line-308"></span><span class="anchor" id="line-309"></span><p class="line862">You can find your user id clicking on "Your Details" in the left sidebar and then looking at the address bar (it should show something similar to <a class="http" href="http://localhost:9999/python-dev/user3">http://localhost:9999/python-dev/user3</a>). <span class="anchor" id="line-310"></span><span class="anchor" id="line-311"></span><span class="anchor" id="line-312"></span><p class="line867"> <h2 id="Rietveld_Setup">Rietveld Setup</h2> <span class="anchor" id="line-313"></span><span class="anchor" id="line-314"></span><span class="anchor" id="line-315"></span><p class="line874">The Roundup and Rietveld data are stored in the same Postgres database. After the Roundup tables have been created, add to python-dev/config.ini: <span class="anchor" id="line-316"></span><span class="anchor" id="line-317"></span><p class="line867"><span class="anchor" id="line-318"></span><span class="anchor" id="line-319"></span><span class="anchor" id="line-320"></span><pre><span class="anchor" id="line-1-22"></span>[django] <span class="anchor" id="line-2-9"></span>secret_key = <the_secret_key></pre><span class="anchor" id="line-321"></span><span class="anchor" id="line-322"></span><span class="anchor" id="line-323"></span><p class="line874">To generate the secret key you can use an online django secret key generator, or just put an arbitrary string. <span class="anchor" id="line-324"></span><span class="anchor" id="line-325"></span><span class="anchor" id="line-326"></span><p class="line874">Before continuing make sure to check with "hg branch" that the branch is "bugs.python.org" on both the rietveld and the django-gae2django clones. <span class="anchor" id="line-327"></span><span class="anchor" id="line-328"></span><span class="anchor" id="line-329"></span><p class="line867"><span class="anchor" id="line-330"></span><span class="anchor" id="line-331"></span><span class="anchor" id="line-332"></span><span class="anchor" id="line-333"></span><span class="anchor" id="line-334"></span><pre><span class="anchor" id="line-1-23"></span>cd rietveld <span class="anchor" id="line-2-10"></span>python manage.py syncdb <span class="anchor" id="line-3-8"></span>cd .. <span class="anchor" id="line-4-3"></span>PYTHONPATH=detectors/:/opt/tracker-roundup/lib/python2.7/site-packages/ python scripts/initrietveld</pre><span class="anchor" id="line-335"></span><span class="anchor" id="line-336"></span><span class="anchor" id="line-337"></span><p class="line874">If you are upgrading from an older installation, review the revision history of rietveld/migration. <span class="anchor" id="line-338"></span><span class="anchor" id="line-339"></span><span class="anchor" id="line-340"></span><p class="line874">To run the Rietveld code, do <span class="anchor" id="line-341"></span><span class="anchor" id="line-342"></span><span class="anchor" id="line-343"></span><span class="anchor" id="line-344"></span><span class="anchor" id="line-345"></span><span class="anchor" id="line-346"></span><p class="line867"><span class="anchor" id="line-347"></span><span class="anchor" id="line-348"></span><pre><span class="anchor" id="line-1-24"></span>python manage.py runserver</pre><span class="anchor" id="line-349"></span><span class="anchor" id="line-350"></span><span class="anchor" id="line-351"></span><p class="line874">This will run Rietveld by default on port 8000. Alternatively to the development server, you can also configure your web server to run rietveld.wsgi under the /review URL. <span class="anchor" id="line-352"></span><span class="anchor" id="line-353"></span><span class="anchor" id="line-354"></span><p class="line874">Rietveld patchset creation is an offline activity. If you have new patches in your tracker instance, run <span class="anchor" id="line-355"></span><span class="anchor" id="line-356"></span><span class="anchor" id="line-357"></span><span class="anchor" id="line-358"></span><span class="anchor" id="line-359"></span><span class="anchor" id="line-360"></span><p class="line867"><span class="anchor" id="line-361"></span><span class="anchor" id="line-362"></span><pre><span class="anchor" id="line-1-25"></span>scripts/addpatchsets</pre><span class="anchor" id="line-363"></span><span class="anchor" id="line-364"></span><span class="anchor" id="line-365"></span><p class="line874">If you get errors like: <span class="anchor" id="line-366"></span><span class="anchor" id="line-367"></span><span class="anchor" id="line-368"></span><p class="line867"><span class="anchor" id="line-369"></span><span class="anchor" id="line-370"></span><span class="anchor" id="line-371"></span><pre><span class="anchor" id="line-1-26"></span>django.db.utils.DatabaseError: column codereview_repository.guid does not exist <span class="anchor" id="line-2-11"></span>LINE 1: ...itory"."url", "codereview_repository"."owner_id", "coderevie...</pre><span class="anchor" id="line-372"></span><span class="anchor" id="line-373"></span><span class="anchor" id="line-374"></span><p class="line874">you can try to remove the table(s) from the database and re-run syncdb and initrietveld: <span class="anchor" id="line-375"></span><span class="anchor" id="line-376"></span><span class="anchor" id="line-377"></span><p class="line867"><span class="anchor" id="line-378"></span><span class="anchor" id="line-379"></span><span class="anchor" id="line-380"></span><span class="anchor" id="line-381"></span><span class="anchor" id="line-382"></span><span class="anchor" id="line-383"></span><span class="anchor" id="line-384"></span><span class="anchor" id="line-385"></span><span class="anchor" id="line-386"></span><span class="anchor" id="line-387"></span><span class="anchor" id="line-388"></span><span class="anchor" id="line-389"></span><span class="anchor" id="line-390"></span><span class="anchor" id="line-391"></span><span class="anchor" id="line-392"></span><span class="anchor" id="line-393"></span><span class="anchor" id="line-394"></span><span class="anchor" id="line-395"></span><span class="anchor" id="line-396"></span><span class="anchor" id="line-397"></span><span class="anchor" id="line-398"></span><span class="anchor" id="line-399"></span><pre><span class="anchor" id="line-1-27"></span>$ psql -U roundup <span class="anchor" id="line-2-12"></span>psql (9.1.4) <span class="anchor" id="line-3-9"></span>Type "help" for help. <span class="anchor" id="line-4-4"></span> <span class="anchor" id="line-5-3"></span>roundup=> \d codereview_repository <span class="anchor" id="line-6-2"></span> Table "public.codereview_repository" <span class="anchor" id="line-7-2"></span>... check here if some column is missing and if it is drop the table ... <span class="anchor" id="line-8-2"></span>roundup=> drop table codereview_repository cascade; <span class="anchor" id="line-9-1"></span>NOTICE: drop cascades to constraint codereview_branch_repo_id_fkey on table codereview_branch <span class="anchor" id="line-10-1"></span>DROP TABLE <span class="anchor" id="line-11-1"></span>roundup=> \q <span class="anchor" id="line-12-1"></span> <span class="anchor" id="line-13-1"></span>$ cd rietveld <span class="anchor" id="line-14-1"></span>$ python manage.py syncdb <span class="anchor" id="line-15-1"></span>Creating tables ... <span class="anchor" id="line-16"></span>Creating table codereview_repository <span class="anchor" id="line-17"></span>Installing custom SQL ... <span class="anchor" id="line-18"></span>Installing indexes ... <span class="anchor" id="line-19"></span>No fixtures found. <span class="anchor" id="line-20"></span>$ cd .. <span class="anchor" id="line-21"></span>$ PYTHONPATH=detectors/:/opt/tracker-roundup/lib/python2.7/site-packages/ python scripts/initrietveld</pre><span class="anchor" id="line-400"></span><span class="anchor" id="line-401"></span><span class="anchor" id="line-402"></span><p class="line867"> <h2 id="irker_setup">irker setup</h2> <span class="anchor" id="line-403"></span><span class="anchor" id="line-404"></span><span class="anchor" id="line-405"></span><p class="line874">irkerd is a daemon that sends notification on IRC whenever a message is added or an issue is created, and replaces the CIA.vc service. <span class="anchor" id="line-406"></span><span class="anchor" id="line-407"></span><span class="anchor" id="line-408"></span><p class="line874">You will need: <span class="anchor" id="line-409"></span><span class="anchor" id="line-410"></span><span class="anchor" id="line-411"></span><p class="line862">* irker: <a class="http" href="http://www.catb.org/esr/irker/">http://www.catb.org/esr/irker/</a> <span class="anchor" id="line-412"></span><span class="anchor" id="line-413"></span><span class="anchor" id="line-414"></span><p class="line862">* the irc package: <a class="http" href="http://pypi.python.org/pypi/irc/">http://pypi.python.org/pypi/irc/</a> <span class="anchor" id="line-415"></span><span class="anchor" id="line-416"></span><span class="anchor" id="line-417"></span><p class="line874">To install them you can use: <span class="anchor" id="line-418"></span><span class="anchor" id="line-419"></span><span class="anchor" id="line-420"></span><p class="line867"><span class="anchor" id="line-421"></span><span class="anchor" id="line-422"></span><span class="anchor" id="line-423"></span><span class="anchor" id="line-424"></span><span class="anchor" id="line-425"></span><span class="anchor" id="line-426"></span><span class="anchor" id="line-427"></span><span class="anchor" id="line-428"></span><span class="anchor" id="line-429"></span><pre><span class="anchor" id="line-1-28"></span>wget http://pypi.python.org/packages/source/i/irc/irc-5.0.1.zip <span class="anchor" id="line-2-13"></span>unzip irc-5.0.1.zip <span class="anchor" id="line-3-10"></span>cd irc-5.0.1/ <span class="anchor" id="line-4-5"></span>sudo python setup.py install <span class="anchor" id="line-5-4"></span>cd .. <span class="anchor" id="line-6-3"></span> <span class="anchor" id="line-7-3"></span>wget http://www.catb.org/~esr/irker/irker-1.17.tar.gz <span class="anchor" id="line-8-3"></span>tar -zxvf irker-1.17.tar.gz</pre><span class="anchor" id="line-430"></span><span class="anchor" id="line-431"></span><span class="anchor" id="line-432"></span><p class="line862">If you get the error <tt>ImportError:聽No聽module聽named聽hgtools.plugins</tt> during the <tt>sudo聽python聽setup.py聽install</tt>, you can try the command again and it should automagically work. <span class="anchor" id="line-433"></span><span class="anchor" id="line-434"></span><span class="anchor" id="line-435"></span><p class="line862">Make sure that you have listed the address of the channels that should receive the messages in <tt>detectors/config.ini</tt>, e.g.: <span class="anchor" id="line-436"></span><span class="anchor" id="line-437"></span><span class="anchor" id="line-438"></span><p class="line867"><span class="anchor" id="line-439"></span><span class="anchor" id="line-440"></span><span class="anchor" id="line-441"></span><pre><span class="anchor" id="line-1-29"></span>[irker] <span class="anchor" id="line-2-14"></span>channels = irc://chat.freenode.net/python-dev</pre><span class="anchor" id="line-442"></span><span class="anchor" id="line-443"></span><span class="anchor" id="line-444"></span><p class="line874">To start irker use: <span class="anchor" id="line-445"></span><span class="anchor" id="line-446"></span><span class="anchor" id="line-447"></span><p class="line867"><span class="anchor" id="line-448"></span><span class="anchor" id="line-449"></span><span class="anchor" id="line-450"></span><pre><span class="anchor" id="line-1-30"></span>cd irker-1.17/ <span class="anchor" id="line-2-15"></span>./irkerd &</pre><span class="anchor" id="line-451"></span><span class="anchor" id="line-452"></span><span class="anchor" id="line-453"></span><p class="line862">You can also use <tt>./irkerd聽-d3</tt> to see debugging messages. <span class="anchor" id="line-454"></span><span class="anchor" id="line-455"></span><span class="anchor" id="line-456"></span><p class="line867"> <h1 id="Resources_for_Tracker_Development">Resources for Tracker Development</h1> <span class="anchor" id="line-457"></span><span class="anchor" id="line-458"></span><span class="anchor" id="line-459"></span><p class="line867"> <h2 id="Getting_Help">Getting Help</h2> <span class="anchor" id="line-460"></span><span class="anchor" id="line-461"></span><span class="anchor" id="line-462"></span><p class="line862">Subscribe to and ask your question on the tracker-discuss mailing list. See <a class="http" href="http://mail.python.org/mailman/listinfo/tracker-discuss">http://mail.python.org/mailman/listinfo/tracker-discuss</a> <span class="anchor" id="line-463"></span><span class="anchor" id="line-464"></span><span class="anchor" id="line-465"></span><p class="line862">Since the Python Tracker is a slightly modified version of <a class="http" href="http://www.roundup-tracker.org">Roundup</a>, both Roundup's <a class="http" href="http://www.roundup-tracker.org/docs.html">Documentation</a> and <a class="http" href="http://issues.roundup-tracker.org/">issue tracker</a> contain relevant information about how the Python Tracker works and problems one might find working with its code. <span class="anchor" id="line-466"></span><span class="anchor" id="line-467"></span><span class="anchor" id="line-468"></span><p class="line867"> <h2 id="Using_roundup-admin">Using roundup-admin</h2> <span class="anchor" id="line-469"></span><span class="anchor" id="line-470"></span><span class="anchor" id="line-471"></span><p class="line874">To start roundup-admin interactively use: <span class="anchor" id="line-472"></span><span class="anchor" id="line-473"></span><span class="anchor" id="line-474"></span><p class="line867"><span class="anchor" id="line-475"></span><span class="anchor" id="line-476"></span><pre><span class="anchor" id="line-1-31"></span>/opt/tracker-roundup/bin/roundup-admin -i <your python-dev directory></pre><span class="anchor" id="line-477"></span><span class="anchor" id="line-478"></span><span class="anchor" id="line-479"></span><p class="line874">To get the list of users, issues, msgs, files, etc: <span class="anchor" id="line-480"></span><span class="anchor" id="line-481"></span><span class="anchor" id="line-482"></span><p class="line867"><span class="anchor" id="line-483"></span><span class="anchor" id="line-484"></span><pre><span class="anchor" id="line-1-32"></span>roundup> list user</pre><span class="anchor" id="line-485"></span><span class="anchor" id="line-486"></span><span class="anchor" id="line-487"></span><p class="line874">To see info about a specific user, issue, msg, file, etc: <span class="anchor" id="line-488"></span><span class="anchor" id="line-489"></span><span class="anchor" id="line-490"></span><p class="line867"><span class="anchor" id="line-491"></span><span class="anchor" id="line-492"></span><pre><span class="anchor" id="line-1-33"></span>roundup> display userXXX</pre><span class="anchor" id="line-493"></span><span class="anchor" id="line-494"></span><span class="anchor" id="line-495"></span><p class="line874">To change the role of an user: <span class="anchor" id="line-496"></span><span class="anchor" id="line-497"></span><span class="anchor" id="line-498"></span><p class="line867"><span class="anchor" id="line-499"></span><span class="anchor" id="line-500"></span><span class="anchor" id="line-501"></span><pre><span class="anchor" id="line-1-34"></span>roundup> set userXXX roles=User,Developer <span class="anchor" id="line-2-16"></span>roundup> commit</pre><span class="anchor" id="line-502"></span><span class="anchor" id="line-503"></span><span class="anchor" id="line-504"></span><p class="line874">Users have limited privileges and can edit just some of the fields in the issue page. Developers can edit all the fields and remove msgs and files. Coordinators can also mark/unmark messages as spam and change some of the settings of other users (e.g. if they submitted the contributor agreement). <span class="anchor" id="line-505"></span><span class="anchor" id="line-506"></span><span class="anchor" id="line-507"></span><p class="line874">To add back a message deleted accidentally: <span class="anchor" id="line-508"></span><span class="anchor" id="line-509"></span><span class="anchor" id="line-510"></span><p class="line867"><span class="anchor" id="line-511"></span><span class="anchor" id="line-512"></span><span class="anchor" id="line-513"></span><pre><span class="anchor" id="line-1-35"></span>roundup> set issueXXX messages=+YYY <span class="anchor" id="line-2-17"></span>roundup> commit</pre><span class="anchor" id="line-514"></span><span class="anchor" id="line-515"></span><span class="anchor" id="line-516"></span><p class="line862">The message will be added back in the right position. (This should be equivalent to b.p.o/issueXXX?@action=edit&@add@messages=YYY, but this doesn't seem to work.) <span class="anchor" id="line-517"></span><span class="anchor" id="line-518"></span><span class="anchor" id="line-519"></span><p class="line867"> <h2 id="The_Meta_Tracker">The Meta Tracker</h2> <span class="anchor" id="line-520"></span><span class="anchor" id="line-521"></span><span class="anchor" id="line-522"></span><p class="line862">A <a class="http" href="http://psf.upfronthosting.co.za/roundup/meta/">Meta Tracker</a> is available for handling bugs and features requests for the <a class="http" href="http://bugs.python.org/">Python Tracker</a>. <span class="anchor" id="line-523"></span><span class="anchor" id="line-524"></span><span class="anchor" id="line-525"></span><p class="line867"> <h2 id="Setting_Up_an_Instance_in_a_VirtualEnv">Setting Up an Instance in a VirtualEnv</h2> <span class="anchor" id="line-526"></span><span class="anchor" id="line-527"></span><span class="anchor" id="line-528"></span><p class="line862">See <a href="/moin/TrackerDevelopmentVirtualEnv">TrackerDevelopmentVirtualEnv</a>. <span class="anchor" id="line-529"></span><span class="anchor" id="line-530"></span><span class="anchor" id="line-531"></span><p class="line867"> <h2 id="The_Test_Tracker">The Test Tracker</h2> <span class="anchor" id="line-532"></span><span class="anchor" id="line-533"></span><span class="anchor" id="line-534"></span><p class="line862">Public test instance of the Python tracker: <a class="http" href="http://bot.bio.br/python-dev/">http://bot.bio.br/python-dev/</a> (currently offine) <span class="anchor" id="line-535"></span><span class="anchor" id="line-536"></span><span class="anchor" id="line-537"></span><p class="line862">Instance that attempts to match the code used in <a class="http" href="http://bugs.python.org">http://bugs.python.org</a> to allow testing, reproducing and verifying fixes for tracker bugs. Can also be used as a sandbox by users interested in learning about Developer, Coordinator or Admin tasks and features. Testing new content (e.g. Components or Statuses) is OK, but new features show be tested in the Experimental Tracker instead. <span class="anchor" id="line-538"></span><span class="anchor" id="line-539"></span><span class="anchor" id="line-540"></span><p class="line862">Currently the email system is disabled (redirected to file), so people interested in having an account there to test new features should email <a class="http" href="http://mail.python.org/mailman/listinfo/tracker-discuss">tracker-discuss</a> to get one. Maintained by <a href="/moin/DanielDiniz">DanielDiniz</a>. <span class="anchor" id="line-541"></span><span class="anchor" id="line-542"></span><span class="anchor" id="line-543"></span><p class="line867"> <h2 id="The_Experimental_Tracker">The Experimental Tracker</h2> <span class="anchor" id="line-544"></span><span class="anchor" id="line-545"></span><span class="anchor" id="line-546"></span><p class="line862">Modified version of the Python tracker: <a class="http" href="http://bot.bio.br/python-dev-exp/">http://bot.bio.br/python-dev-exp/</a> (currently offline) <span class="anchor" id="line-547"></span><span class="anchor" id="line-548"></span><span class="anchor" id="line-549"></span><p class="line874">It's an instance to showcase and test new features. <span class="anchor" id="line-550"></span><span class="anchor" id="line-551"></span><span class="anchor" id="line-552"></span><p class="line874">New features (2009-04-18): <span class="anchor" id="line-553"></span><span class="anchor" id="line-554"></span><span class="anchor" id="line-555"></span><ul><li><p class="line891"><a class="http" href="http://mail.python.org/pipermail/tracker-discuss/2009-April/002099.html">Issue tags</a> <span class="anchor" id="line-556"></span></li><li><p class="line891"><a class="http" href="http://psf.upfronthosting.co.za/roundup/meta/issue249">Quiet properties</a> <span class="anchor" id="line-557"></span></li><li><p class="line891"><a class="http" href="http://psf.upfronthosting.co.za/roundup/meta/issue267">Restore removed messages and files</a> <span class="anchor" id="line-558"></span></li><li><p class="line891"><a class="http" href="http://psf.upfronthosting.co.za/roundup/meta/issue258">Claim ('assign to self') and add/remove self as nosy buttons</a> <span class="anchor" id="line-559"></span></li><li><p class="line891"><a class="http" href="http://psf.upfronthosting.co.za/roundup/meta/issue266">Don't close issues with open dependencies</a> <span class="anchor" id="line-560"></span></li><li><p class="line891"><a class="http" href="http://psf.upfronthosting.co.za/roundup/meta/issue258">Auto-add nosy users based on Components</a> <span class="anchor" id="line-561"></span></li><li><p class="line891"><a class="http" href="http://psf.upfronthosting.co.za/roundup/meta/issue245">"Email me" buttons for messages and issues, "Reply by email"</a> <span class="anchor" id="line-562"></span></li><li><p class="line891"><a class="http" href="http://psf.upfronthosting.co.za/roundup/meta/issue155">RSS feeds (per issue and global)</a> <span class="anchor" id="line-563"></span></li><li><p class="line891"><a class="http" href="http://psf.upfronthosting.co.za/roundup/meta/issue246">Display selected issues in the index view</a> <span class="anchor" id="line-564"></span></li><li><p class="line891"><a class="http" href="http://psf.upfronthosting.co.za/roundup/meta/issue248">Mass-update/batch-editing support</a> <span class="anchor" id="line-565"></span><span class="anchor" id="line-566"></span><span class="anchor" id="line-567"></span></li></ul><p class="line862">Currently the email system is disabled (redirected to file), so people interested in having an account there to test new features should email <a class="http" href="http://mail.python.org/mailman/listinfo/tracker-discuss">tracker-discuss</a> to get one. Maintained by <a href="/moin/DanielDiniz">DanielDiniz</a>. <span class="anchor" id="line-568"></span><span class="anchor" id="line-569"></span><span class="anchor" id="line-570"></span><p class="line862">There is also a list of additional <a href="/moin/DesiredTrackerFeatures">DesiredTrackerFeatures</a> for which no patches yet exist. <span class="anchor" id="line-571"></span><span class="anchor" id="line-572"></span><span class="anchor" id="line-573"></span><p class="line867"> <h1 id="Getting_Your_Own_Jython_Tracker">Getting Your Own Jython Tracker</h1> <span class="anchor" id="line-574"></span><span class="anchor" id="line-575"></span><span class="anchor" id="line-576"></span><p class="line874">To set up a local Jython tracker, please follow instructions for python-dev tracker with following exceptions: <span class="anchor" id="line-577"></span><span class="anchor" id="line-578"></span><span class="anchor" id="line-579"></span><ul><li><p class="line862">There is no <strong>CIA.vc</strong> detector <span class="anchor" id="line-580"></span><span class="anchor" id="line-581"></span></li><li class="gap">The repository for Jython tracker can be cloned with: <span class="anchor" id="line-582"></span><span class="anchor" id="line-583"></span><span class="anchor" id="line-584"></span><span class="anchor" id="line-585"></span><span class="anchor" id="line-586"></span><span class="anchor" id="line-587"></span></li></ul><p class="line867"><span class="anchor" id="line-588"></span><span class="anchor" id="line-589"></span><pre><span class="anchor" id="line-1-36"></span>hg clone http://hg.python.org/tracker/jython/</pre><span class="anchor" id="line-590"></span><span class="anchor" id="line-591"></span><span class="anchor" id="line-592"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-593"></span><span class="anchor" id="line-594"></span><p class="line867"><a href="/moin/CategoryTracker">CategoryTracker</a> <a href="/moin/CategoryDevelopmentProcess">CategoryDevelopmentProcess</a> <span class="anchor" id="line-595"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">TrackerDevelopment (last edited 2017-03-01 19:24:10 by <span title="EzioMelotti @ cpe-108-184-111-118.socal.res.rr.com[108.184.111.118]"><a class="nonexistent" href="/moin/EzioMelotti" title="EzioMelotti @ cpe-108-184-111-118.socal.res.rr.com[108.184.111.118]">EzioMelotti</a></span>)</p> <div id="pagebottom"></div> </div> <div id="footer"> <ul id="credits"> <li><a href="http://moinmo.in/" title="This site uses the MoinMoin Wiki software.">MoinMoin Powered</a></li><li><a href="http://moinmo.in/Python" title="MoinMoin is written in Python.">Python Powered</a></li><li><a href="http://moinmo.in/GPL" title="MoinMoin is GPL licensed.">GPL licensed</a></li><li><a href="http://validator.w3.org/check?uri=referer" title="Click here to validate this page.">Valid HTML 4.01</a></li> </ul> </div> <p style="text-align: center; font-size: 85%"><a href="/moin/FrontPage#use">Unable to edit the page? See the FrontPage for instructions.</a></p></body> </html>