Package: bugzilla2gitlab
bugzilla2gitlabIntroductionInstallationUsageHow it worksCaveatsDemoContributingIntroductionThis is a tool for developers or admins who want to migrate the issue management for their software project from Bugzilla to Gitlab Issues. Here is a screenshoot of an issue created by bugzilla2gitlab:bugzilla2gitlab copies over bugs, bug comments and attachments.InstallationThis library is very much under development. That said, if you like to feel the wind in your hair, simplypip install bugzilla2gitlab.More than likely, you will need to roll up your sleaves and hack on the package to achieve a migration that you are happy with. In this case:git clone git@github.com:xmunoz/bugzilla2gitlab.git
cd bugzilla2gitlab
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# installs this package locally
pip install .bugzilla2gitlab is compatible with python 3.7, 3.8, 3.9, and 3.10.Usagebugzilla2gitlab synchronously migrates a user-defined list of bugzilla bugs to a single GitLab project. There are two interfaces for this library. The command line usage:$  bin/bugzilla2gitlab -h
usage: bugzilla2gitlab [-h] [FILE] [CONFIG_DIRECTORY]

Migrate bugs from Bugzilla to GitLab Issues.

positional arguments:
  [FILE]              A file containing a list of Bugzilla bug numbers to
                      migrate, one per line.
  [CONFIG_DIRECTORY]  The directory containing the required configuration
                      files.

optional arguments:
  -h, --help          show this help message and exitThis package can also be used as a python module.from bugzilla2gitlab import Migrator

client = Migrator(config_path="/path/to/config")
bugs_list = [1,2,3,4,5,6,7]
client.migrate(bugs_list)ConfigurationTo begin using bugzilla2gitlab, the following list of configuration files is required in the specifiedconfigdirectory:defaults.yml: Core default values used throughout the modules.user_mappings.yml: key, value pairs of Bugzilla usernames to GitLab userscomponent_mappings.yml: key, value pairs of Bugzilla components to Gitlab labelsSamples of all of these files with documentation for each configuration variable can be found intests/test_data/config.bugzilla2gitlab creates issues and comments in GitLab with the user accounts specified inuser_mappings.yml, perserving the integrity of the original Bugzilla commenter. This, however, may not always be possible. Intests/test_data/config/user_mappings.yml, users with the designation "bugzilla" may have left the organization and therefore not have current GitLab accounts, or might simply be machine users. Comments for such users will be left under a generic "bugzilla" account. bugzilla2gitlab doesn't create any new user accounts. All of the accounts specified inuser_mappings.ymlmust already exist in your GitLab installation.The default table created in the issue description by bugzilla2gitlab looks like this:Bugzilla Link570755Created onJun 08, 2010 10:25VersionunspecifiedOSAllArchitectureAllAttachmentsa_PHP_play_script_to_demonstrate_how_the_browser_requests_videosReportermozillaTo modify this table, take a look atcreate_descriptioninmodels.py.How it worksGitLabGitlab has a comprehensive and extensively documented API. Here are the main endpoints that this library makes use of.Creating new issuesAdding comments to issuesUploading filesChanging an issue statusGetting user idsCalls to the Gitlab API must be made with an administrator private token in order toimpersonate other users.BugzillaThis program relies on being able to fetch bug data by simply appending&ctype=xmlto the end of the bugzilla bug url, and then parsing the resultant xml. If this trick doesn't work on your bugzilla installation, then bugzilla2gitlab probably won't work for you.CaveatsEvery comment or mention in GitLab typically sends a notification. This is true even for comments/issues created programatically. To avoid users inboxes being flooded with meaningless email notifications and avoid overwhelming your SMTP servers, GitLab users should disable all email notifications (global and group-specific) just prior to the running of this script. This can be done through theGitlab UI.Further, this tools requires Gitlabsudo. If you need a tool that works without sudo, take a look atFreeDesktop's migration tool.DemoIf you want to test out this library on a non-production GitLab instance, I recommend starting up aone-click GitLab droplet from DigitalOcean. From there, you can create a code repository, add some user accounts, and take bugzilla2gitlab for a spin.ContributingCheck outCONTRIBUTING.md.