{"id":16880509,"url":"https://github.com/chennes/mantistogithub","last_synced_at":"2025-07-23T00:32:27.215Z","repository":{"id":87232736,"uuid":"437700075","full_name":"chennes/MantisToGitHub","owner":"chennes","description":"Use the REST API of GitHub to transfer issues from an exported Mantis database to GitHub","archived":false,"fork":false,"pushed_at":"2022-03-03T15:37:30.000Z","size":51,"stargazers_count":8,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-10T05:16:58.821Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chennes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-12-13T01:32:09.000Z","updated_at":"2025-02-15T22:23:13.000Z","dependencies_parsed_at":"2023-03-13T19:38:44.848Z","dependency_job_id":null,"html_url":"https://github.com/chennes/MantisToGitHub","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chennes/MantisToGitHub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chennes%2FMantisToGitHub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chennes%2FMantisToGitHub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chennes%2FMantisToGitHub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chennes%2FMantisToGitHub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chennes","download_url":"https://codeload.github.com/chennes/MantisToGitHub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chennes%2FMantisToGitHub/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266596689,"owners_count":23953891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T15:59:00.644Z","updated_at":"2025-07-23T00:32:27.140Z","avatar_url":"https://github.com/chennes.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mantis to GitHub converter\n\nThis script uses the REST API GitHub to transfer active (open) issues from a\nMantis bug database CSV export into a GitHub Issue database. See the code for the columns\nrequired. Note that although the existing issue ID from Mantis is encoded into the GitHub \nissue text, the GitHub issue will be created with an entirely new (non-configurable) issue ID.\n\n## Details\n\nThe GitHub issues will be created using the account that is used to access the REST API, so\nit is recommended that a new GitHub user account be created explicitly for this purpose. You\nwill then need to create a GitHub access token for that account with permission to create\nissues. That token should be stored in a file someplace: there is a configuration variable in\nthe script for setting that file's location.\n\nSecond, if you are importing more than about 150 tickets, expect the process to be interrupted\nby GitHub's rate limiter. The code will shut itself down when it detects that case: you\nwill need to wait some length of time (I went with one hour), then restart from the last\nticket attempted. I did not automate that restart process. We imported about 800 tickets, which\ntook most of the day, running in batches of ~150 each hour.\n\nThere are some configuration variables in the source code related to Mantis-to-GitHub username \nmapping: note that if any of the mapped ticket assignees do not have the appropriate GitHub \npermissions, the importer will fail with a 403: Unprocessible Entity error. It will print out \nthe name of the failed assignment, which you will either need to remove from the list, or give \nassignment permissions to in your repo.\n\nIt is intended that the Mantis instance is kept alive for some significant time after the\nmigration, in particular to support attachements. As of this writing there is no public,\ndocumented GitHub REST API for uploading files, so this script does not migrate attachments,\ninstead opting to provide a back-link to the original Mantis ticket.\n\nAn auxilliary script is provided to create Mantis database entries linking back to the GitHub\nissue. This script is intended to be run on the server with the Mantis instance on it, and has\nconfiguration variables at the top. It requires the BBCodePlus Mantis plugin (or you can \nmodify the script to not use the BBCode tags for the URL).\n\n## Example\n\nThe FreeCAD project used this importer to migrate our Mantis database: you can see the results\nstarting at https://github.com/FreeCAD/FreeCAD/issues/5538, and the original issues at\nhttps://tracker.freecad.org\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchennes%2Fmantistogithub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchennes%2Fmantistogithub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchennes%2Fmantistogithub/lists"}