Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A script to convert an archived roundup project to fogbugz.
Python
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
fogbugz
.gitignore
README
fogbugz-to-fogbugz.py
roundup-to-fogbugz.py

README

Roundup to Fogbugz migration
============================

Overview
--------

This program will;

* Import all roundup users.
* Import the history for all issues, including;
   - Title
   - Messages
   - Priority
   - Status
   - Assigned to
   - Keywords
   - Attachments
* Can optionally allow mapping of keywords to projects (in which case it will
  create those projects, assign the bug to the project, and remove the
  keyword from the tags).
* Will attempt to keep the same issue numbers (so external links to bug ids
  remain valid).

It will not;

* Import passwords.
* Keep the nosy list (this wasn't required for us, but it'll be easy to add).
* Remove messages from issues (supported by roundup, but not by fogbugz).
* Remove attachments from issues (supported by roundup, but not by fogbugz).
* Import non-default classes (should be easy to customise though).


Instructions
------------

Export the roundup database using roundup-admin. eg:

  roundup-admin export export_dir/

Then use roundup-to-fogbugz.py tool to test the conversion;

  ./roundup-to-fogbugz --default-project=ProjectA --map projecta:ProjectA --map projectb:ProjectB --default-user=usera ./export_dir

This will not import into fogbugz, but it will scan the history of the issue
tracker and check it for sanity. When this has run without error, and you'd
like to import it into fogbugz, run

  ./roundup-to-fogbugz --default-project=ProjectA --map projecta:ProjectA --map projectb:ProjectB --default-user=usera ./export_dir http://username:password@localhost:1234/bugs/

replacing the fogbugz server with the current url.


Fogbugz to Fogbugz migration
============================

Overview
--------

This script will export from the Fogbugz issue tracker using the api.xml
interface, and insert the issues into the new tracker in the same fashion.

It will migrate the full history for;

* All messages
* All users (that are used)
* Status changes
* Parent / child relationships
* Bug owner
* Bug assignment
* Priority
* Tags
* Projects

It will not migrate;

* Milestones
* Time estimates
* Email issues (it will migrate them, but they message will be text of the
  email message, and you won't be able to reply)


Instructions
------------

Check that it can export the source issues from the source tracker by running
 
  ./fogbugz-to-fogbugz.py https://username:password@someaccount.fogbugz.com/

Repeat the export, sending to the target tracker by running

  ./fogbugz-to-fogbugz.py https://username:password@someaccount.fogbugz.com/  http://username:password@localserver/

If you only want to export certain issues, use the '--search' paramter. This
will limit the migrated issues to those listed.

If you want to map a source user to a target user, you can use the
'--user "source user:destination user' parameter, which will the destination
database's 'destination user' account whenever a change was made by
'source user' in the source database.

In a simlar fashion, use the '--project' parameter to map between source
projects and destination projects.


Known bugs
----------

* If a user has been deleted, the fogbugz export will complain about 
  
    fogbugz.export.ExportError: Failed to find source ixPerson with id 2!
  
  Unfortunately there is no way to query deleted users with the api.xml.
* It doesn't correctly group changes; some of the historical changes may have
  incorrect timestamps.

Tips
====

* You may have to run the import several times to correct issues (for example,
  if you need to increase the maximum file size in fogbugz); it is very useful
  to be able to quickly reset the database to a useable but mostly clean state
  for testing. To remove all users, bugs, etc, run;

      DELETE FROM Attachment;
      DELETE FROM BugEvent;
      DELETE FROM BugView;
      DELETE FROM BugRelation;
      DELETE FROM BugRelation;
      DELETE FROM Duplicates;
      DELETE FROM Scout;
      DELETE FROM TagAssociation;
      DELETE FROM Bug;
      DELETE FROM Project;
      DELETE FROM Person WHERE ixPerson != 2;

  The administrator account will still be present, and all the bug ids will not
  restart from 1, but it will be clean enough allow you to re-run the import.

* To fully reset the database to a pristine state, run (for mysql);

      DROP DATABASE fogbugz;
      CREATE DATABASE fogbugz;
      use fogbugz;
      create table Version (ixVersion int);
      insert into Version values (0);

  Then load the web interface to let it re-run the installation.

Something went wrong with that request. Please try again.