{"id":20703700,"url":"https://github.com/avrdudes/savane2github","last_synced_at":"2026-04-22T01:07:18.956Z","repository":{"id":103029530,"uuid":"436774719","full_name":"avrdudes/savane2github","owner":"avrdudes","description":"Savane to GitHub Migration Tool","archived":false,"fork":false,"pushed_at":"2022-01-27T18:40:14.000Z","size":29,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-02-13T09:26:27.411Z","etag":null,"topics":["migration","savane","savannah","sourceforge"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/avrdudes.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-09T22:05:09.000Z","updated_at":"2022-02-02T20:47:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"be01a49f-7407-44c3-baba-eea0691b9a36","html_url":"https://github.com/avrdudes/savane2github","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/avrdudes/savane2github","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avrdudes%2Fsavane2github","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avrdudes%2Fsavane2github/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avrdudes%2Fsavane2github/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avrdudes%2Fsavane2github/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/avrdudes","download_url":"https://codeload.github.com/avrdudes/savane2github/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avrdudes%2Fsavane2github/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32116514,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T00:31:26.853Z","status":"ssl_error","status_checked_at":"2026-04-22T00:30:22.894Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["migration","savane","savannah","sourceforge"],"created_at":"2024-11-17T01:09:06.082Z","updated_at":"2026-04-22T01:07:18.929Z","avatar_url":"https://github.com/avrdudes.png","language":"Python","readme":"# Savane to GitHub Migration Tool\n\nThe purpose of this tool is to migrate a Savane project hosted on Savannah to GitHub.\nThis tool is capable of migrating bugs, tasks, and patches and creating the respective issues on GitHub.\n\n## Prerequisites\n\nThis tool requires Python 3.8 and the packages 'PyGithub' and 'Beautiful Soup'.\n\nFor instance, under Linux/Ubuntu, you would run\n\n```console\nsudo apt install python3 python3-pip\npip install --upgrade PyGithub beautifulsoup4\n```\n\n## Usage\n\nUsing the tool requires multiple steps, which gives you the opportunity to inspect the result after each step,\nbefore you export the issues to GitHub.\n\nThe basic procedure is as follows:\n\n- List items of a Savane project\n  - In this step, a list of bugs, tasks, or patches will be created using the 'Browse' feature of the projects website.\n  - The result will be written to a JSON list file, containing the IDs and a description.\n- Download HTML pages from a Savane project\n  - In this step, all HTML tracker pages will be downloaded.\n  - The HTML pages to be downloaded are specified by the JSON list file.\n- Import HTML pages\n  - In this step, the downloaded HTML pages will be parsed.\n  - The HTML pages to be parsed are specified by the JSON list file. \n  - The result will be written to a JSON tracker file, containing a combined list of bugs, tasks, or patches.\n- Export items to GitHub\n  - In this final step, the JSON tracker file will be exported to GitHub.\n  - For each item in the JSON tracker file, a GitHub issue will be created. One or more comments may be created for every issue.\n\nNote: This script assumes that you successfully authenticated yourself as a Savannah member using the --username and --password option.\n\n## Example\n\n```console\n./savane2github.py --project avrdude --username \u003cmyuser\u003e --password \u003cmypw\u003e --list-bugs\n./savane2github.py --project avrdude --username \u003cmyuser\u003e --password \u003cmypw\u003e --download-bugs\n./savane2github.py --project avrdude --import-bugs\n./savane2github.py --project avrdude --dump-bugs\n./savane2github.py --project avrdude --access-token \u003cmytoken\u003e --export-bugs\n```\n\n## SourceForge.net migration\n\nWith the help of the companion script `import_sf.py`, it is also\npossible to migrate issue trackers from SourceForge.net projects.\n\nIn order to do this, go to the SourceForge project Admin tab, and then\npick \"Export\". Select all the trackers you'd like to export.\nAttachments are not migrated by the scripts, so you can leave them out\nunless you'd like to have them in the exported archive anyway.\n\nUnpack the archive locally then. The trackers are recorded in JSON\nfiles like `bugs.json` etc.\n\nRun `import_sf.py` on each of these files, redirect the output into\na project subdirectory into a new JSON file that with the name\n`trackers_`_name-of-tracker_`s.json`.\n\nThis file is the equivalent of the third step above. You can thus\nuse `savane2github.py` on it with the `--export-`_name-of-tracker_\nand `--dump-`_name-of-tracker_ options. In addition to bugs and\npatches, feature requests can also be handled at that point.\n\n\n## Issues\n\n- This script was written to migrate the 'avrdude' Savannah project. It should be possible to adapt this script for other projects.\n\n- When using the `--export-*` option to put the issues in GitHub, an API rate limit may apply. The script has some hardcoded delays,\nhowever, GitHub may limit your API usage. If a rate limit occurs, the script retries every ten minutes. The script keeps track of the\nmigration status, so you may abort the script and retry at any time.\n\n## License\n\nSavane to GitHub Migration Tool is released under the GNU GPLv3.\n\nCopyright 2021 Marius Greuel.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favrdudes%2Fsavane2github","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Favrdudes%2Fsavane2github","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favrdudes%2Fsavane2github/lists"}