{ "info": { "author": "Jocelyn Delalande", "author_email": "jdelalande@oasiswork.fr", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License v3 (GPLv3)" ], "description": "Redmine to Gitlab migrator\n==========================\n\n[![Build Status](https://travis-ci.org/oasiswork/redmine-gitlab-migrator.svg?branch=master)](https://travis-ci.org/oasiswork/redmine-gitlab-migrator)\n\nMigrate code projects from Redmine to Gitlab, keeping issues/milestones/metadata\n\n*Note: although certainly not bugfree, this tool has been used at @oasiswork\n to migrate 30+ projects with 1000+ issues, and some attention is paid to\n keeping data.*\n\nDoes\n----\n\n- Per-project migrations\n- migration of issues, keeping as much metadata as possible\n - your trackers become tags\n - issue comments are kept and assigned to the right users\n - issue final status (open/closed) is kept along with open/close date (not\n detailed status history)\n - issues assignations are kept\n - keep issues numbers (ex: `#123`)\n - keep issue/notes authors\n - keep track of issue/notes original dates, but as comments\n - keeps relations (although gitlab model for relations is simpler)\n- Migration of Versions/Roadmaps\n - contained issues\n - status & due date\n\nDoes not\n--------\n\n- Migrate users, groups, and permissions (redmine ACL model is complex and\n cannot be transposed 1-1 to gitlab ACL)\n- Migrate repositories (piece of cake to do by hand, + redmine allows multiple\n repositories per project where gitlab do not)\n- Migrate wikis (because we don't use them at @oasiswork, feel free to contribute)\n- Migrate the whole redmine installation , because namespacing is different in\n redmine and gitlab\n- Archive the redmine project for you\n- Keep creation/edit dates as metadata\n- Keep \"watchers\" on tickets (gitlab API v3 doe not expose it)\n- Keep date/times as metadata\n- Keep track of issue relations orientation (not such notion on gitlab)\n- Remember who closed the issue\n- Migrate tags ([redmine_tags](https://www.redmine.org/plugins/redmine_tags)\n plugin), as they are not exposed in API\n\nRequires\n--------\n\n- Python >= 3.4\n- Admin token on redmine\n- Admin token on gitlab\n- No preexisting issues on gitlab project\n- Already synced users (those required in the project you are migrating)\n\n\nLet's go\n--------\n\nYou can or can not use\n[virtualenvs](http://docs.python-guide.org/en/latest/dev/virtualenvs/), that's\nup to you.\n\nInstall it:\n\n ./setup.py install\n\nYou can then give it a check without touching anything:\n\n migrate-rg issues --redmine-key xxxx --gitlab-key xxxx \\\n --check\n\nThe `--check` here prevents to writing anything, it's available on all\ncommands.\n\n migrate-rg --help\n\nMigration process\n-----------------\n\nThis process is for each project, **order matters**.\n\n### Create the gitlab project\n\nIt doesn't neet to be named the same, you just have to record it's URL (eg:\n*https://git.example.com/mygroup/myproject*).\n\n### Create users\n\nBy-hand operation, project members in gitlab need to have same username as\nmembers in redmine. Every member that interacted with the redmine project\nshould be added to the gitlab project.\n\n### Migrate Roadmap\n\nIf you do use roadmap, redmine *versions* will be converted to gitlab\n*milestones*. If you don't, just skip this step.\n\n migrate-rg roadmap --redmine-key xxxx --gitlab-key xxxx \\\n https://redmine.example.com/projects/myproject \\\n http://git.example.com/mygroup/myproject --check\n\n*(remove `--check` to perform it for real, same applies for other commands)*\n\n### Migrate issues\n\n migrate-rg issues --redmine-key xxxx --gitlab-key xxxx \\\n https://redmine.example.com/projects/myproject \\\n http://git.example.com/mygroup/myproject --check\n\nNote that your issue titles will be anotated with the original redmine issue\nID, like *-RM-1186-MR-logging*. This anotation will be used (and removed) by\nnext step.\n\n### Migrate Issues ID (iid)\n\nYou can retain the issues ID from redmine, **this cannot be done via REST\nAPI**, thus it requires **direct access to the gitlab machine**.\n\nSo you have to log in the gitlab machine (eg. via SSH), and then issue the\ncommad with sufficient rights, from there:\n\n migrate-rg iid --redmine --redmine-key xxxx --gitlab-key xxxx \\\n https://redmine.example.com/projects/myproject \\\n http://git.example.com/mygroup/myproject --check\n\n\n### Import git repository\n\nA bare matter of `git remote set-url && git push`, see git documentation.\n\nNote that gitlab do not support multiple repositories per project, you'll have\nto reorganize your stuff if you were using that feature of Redmine.\n\n### Archive redmine project\n\nIf you want to.\n\nYou're good to go :).\n\nUnit testing\n------------\n\nUse the standard way:\n\n python setup.py test\n\nOr use whatever test runner you fancy.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github/oasiswork/migrate-redmine-to-gitlab/", "keywords": null, "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "redmine-gitlab-migrator", "package_url": "https://pypi.org/project/redmine-gitlab-migrator/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/redmine-gitlab-migrator/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github/oasiswork/migrate-redmine-to-gitlab/" }, "release_url": "https://pypi.org/project/redmine-gitlab-migrator/1.0.2/", "requires_dist": null, "requires_python": null, "summary": "Migrate a redmine project to gitlab", "version": "1.0.2" }, "last_serial": 1839218, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "0b506a115ecca240455b51cb28357969", "sha256": "29b616ef882963569d19d99c39051def5352e8d81964e4809001c0d2cd69dc2c" }, "downloads": -1, "filename": "redmine-gitlab-migrator-1.0.1.tar.gz", "has_sig": false, "md5_digest": "0b506a115ecca240455b51cb28357969", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10060, "upload_time": "2015-11-30T10:08:45", "url": "https://files.pythonhosted.org/packages/1b/7d/a04dfecf5baebf0746b3e94e0070cb9745dfe0c506fae347c3ae2c3cdbb8/redmine-gitlab-migrator-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "5d11e7fa157b8a4e94898bdf440b6841", "sha256": "27349bb95e2a9410951a814e5ca8c318343b4f4642e0129e9ebf9fc01c5ad5d7" }, "downloads": -1, "filename": "redmine-gitlab-migrator-1.0.2.tar.gz", "has_sig": false, "md5_digest": "5d11e7fa157b8a4e94898bdf440b6841", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10076, "upload_time": "2015-11-30T10:13:59", "url": "https://files.pythonhosted.org/packages/2c/63/2dbbeb38c5a984cd571d9bbd8adf462190af1bc88651948b492d56e4127c/redmine-gitlab-migrator-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5d11e7fa157b8a4e94898bdf440b6841", "sha256": "27349bb95e2a9410951a814e5ca8c318343b4f4642e0129e9ebf9fc01c5ad5d7" }, "downloads": -1, "filename": "redmine-gitlab-migrator-1.0.2.tar.gz", "has_sig": false, "md5_digest": "5d11e7fa157b8a4e94898bdf440b6841", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10076, "upload_time": "2015-11-30T10:13:59", "url": "https://files.pythonhosted.org/packages/2c/63/2dbbeb38c5a984cd571d9bbd8adf462190af1bc88651948b492d56e4127c/redmine-gitlab-migrator-1.0.2.tar.gz" } ] }