<div dir="ltr">On Tue, Nov 17, 2015 at 8:57 AM, Adi Roiban <span dir="ltr"><<a href="mailto:adi@roiban.ro" target="_blank">adi@roiban.ro</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class=""><br>
</span>For now, the funds were raised to migrate to GitHub, so we can not use<br>
them to do other things.<br>
<span class=""><br>
</span>We will stay on Trac for issues... at least for now.<br>
<br>
I have no idea how we can migrate to any issue tracker without losing<br>
data if we don't have full access to the database.<br></blockquote><div><br></div><div>It is possible to migrate to another issue tracker and not lose<br></div><div>data.  I've done Trac -> Redmine, and it works, but there was an existing migration<br></div><div>script I could use.</div><div>For migrating to a cloud based bug tracker, you would need to take every user<br></div><div>in the existing Trac database, and see if there would be a way to map<br></div><div>the existing users to the cloud database, such as GitHub.  It's a lot of work, but possible.<br></div><div>However, for the scope of this project, if staying with Trac for issues is what is required, that is fine. <br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
<span class="">We don't plan to migrate to GitHub Issues / GitHub Wiki / GitHub Pages<br>
<br></span></blockquote><div><br></div><div>OK.<br></div><div> <br></div><div>So based on what you have listed, I would say that most of the work will be<br></div><div>working with Git post commit hooks.<br><br></div><div>I would say the plan should be something like this.<br><br></div><div>A.1  <a href="https://github.com/twisted/twisted">https://github.com/twisted/twisted</a> will be the "repository of truth"<br>       for Twisted.<br></div><div>           -> Twisted releases will be done from GitHub<br></div><div>           -> the Twisted developers who are now "core committers" for SVN, must be<br></div><div>               given access to be "core committers" to <a href="https://github.com/twisted/twisted">https://github.com/twisted/twisted</a><br><br></div><div>A.2  On the Trac server, a local git mirror of the GitHub must be set up.<br></div><div>       Every bug tracker I've seen that integrates with git needs a local mirror of the repo<br>        in order to parse the git history in order to update the bug database.<br></div><div>        This mirror should be read-only, and the only thing updating this repo should be the Trac GitHub plugin.<br><br></div><div>A.3  On the Trac server, this plugin must be installed: <a href="https://github.com/trac-hacks/trac-github">https://github.com/trac-hacks/trac-github</a><br><br></div><div>A.4  On the GitHub server, a post-commit web hook must be configured.  The workflow will be this:<br><br></div><div>           [core committer does push to <a href="https://github.com/twisted/twisted">https://github.com/twisted/twisted</a>]  <br>             -> [post commit GitHub hook will be called to poke the Trac GitHub plugin]<br></div><div>             -> [Trac GitHub plugin will update the local git repo on the Trac server]<br></div><div>             -> [Trac GitHub will parse the git history for new commits and update tickets]<br><br></div><div>I would recommend that steps (1) - (4) be made to work in a staging environment, with a separate<br></div><div>GitHub repo, and a separate copy of the Trac database.  That way, you can test things out without derailing<br></div><div>Twisted developers.  When you are confident that this workflow works, then the transition plan will be something<br></div><div>like the following.<br><br></div><div>B.1   Send an e-mail to the mailing list and pick one day for the maintenance window.<br></div><div>        This will warn folks when they should take a holiday from Twisted work. :)<br><br></div><div>B.2   When maintenance is about to begin, send a [HEADSUP] mail saying that repo will be unavailable.<br><br></div><div>B.3  Create Subversion pre-commit hook to disable all commits to<br>         Subversion: <br>              <a href="http://stackoverflow.com/questions/2411122/how-to-freeze-entire-svn-repository-to-make-it-read-only">http://stackoverflow.com/questions/2411122/how-to-freeze-entire-svn-repository-to-make-it-read-only</a><br></div><div><br></div><div>B.4  Set up steps A.1 - A.4<br></div><div><br></div><div>B.5  Verify that B.4 works.  Have someone (Glyph?) do a commit to <a href="https://github.com/twisted/twisted">https://github.com/twisted/twisted</a>, and<br>         make sure that Trac works.<br></div><br></div><div class="gmail_quote">B.6  Once the Twisted core team are satisified that everything works, send an e-mail to the mailing list<br></div><div class="gmail_quote">        that the maintenance window is over, and GitHub is now where the action is!<br><br></div><div class="gmail_quote">B.7  Update all wiki documentation to change all references to getting code from Subversion,<br>         to getting code from GitHub.<br><br></div><div class="gmail_quote">B.8  Update all systems which used Subversion to use GitHub.  For example, buildbots.<br></div><div class="gmail_quote"><br>--<br></div><div class="gmail_quote">Craig<br></div><div class="gmail_quote"><br></div><div class="gmail_quote"><br><div>--<br></div><div>Craig<br></div></div></div></div>