{"id":13746345,"url":"https://github.com/mariocj89/dothub","last_synced_at":"2025-07-18T23:08:18.119Z","repository":{"id":14657550,"uuid":"76813876","full_name":"mariocj89/dothub","owner":"mariocj89","description":"Stop managing your github config like a mere human","archived":false,"fork":false,"pushed_at":"2023-05-01T19:47:42.000Z","size":173,"stargazers_count":14,"open_issues_count":15,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-04T04:35:05.897Z","etag":null,"topics":["cli","github","hooks","tool","web","workspace"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mariocj89.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-12-18T23:57:25.000Z","updated_at":"2024-01-04T16:42:55.000Z","dependencies_parsed_at":"2024-01-15T00:56:21.805Z","dependency_job_id":null,"html_url":"https://github.com/mariocj89/dothub","commit_stats":{"total_commits":145,"total_committers":4,"mean_commits":36.25,"dds":"0.46896551724137936","last_synced_commit":"baa4506ad80116fc37ddb1c28ffd476c83abd440"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mariocj89/dothub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariocj89%2Fdothub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariocj89%2Fdothub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariocj89%2Fdothub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariocj89%2Fdothub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mariocj89","download_url":"https://codeload.github.com/mariocj89/dothub/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariocj89%2Fdothub/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265849013,"owners_count":23838195,"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","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":["cli","github","hooks","tool","web","workspace"],"created_at":"2024-08-03T06:00:52.246Z","updated_at":"2025-07-18T23:08:18.097Z","avatar_url":"https://github.com/mariocj89.png","language":"Python","readme":"|Build Status| |PyPI Version| |Code Health| |Coveralls Report|\n\ndothub\n======\n\nStop managing your github configuration through an UI like a mere human\nand do everything through beautiful config YAML files.\n\ndothub allows you to declare your configuration in a config file and\nupdate it by just updating the file. This way you can configure your\nlabels, collaborators, default repo and organization parameters and\nother as code and have them version controlled.\n\nIf you are not sure how to configure something through the config file\njust change it in the UI and sync it locally with your file, you will\nsee the changes! Next time you wont need to do any clicks!\n\nInstall\n=======\n\n``pip install dothub``\n\nUsage\n=====\n\nThe first time you run dothub it will run a wizard to help you configure\nyour credentials.\n\nRepository configuration\n------------------------\n\nRetrieve locally:\n^^^^^^^^^^^^^^^^^\n\n.. code:: bash\n\n    $ dothub pull mariocj89/dothub\n    .dothub.repo.yml updated\n\nThis creates a file that represents your repo configuration\n\nUpdating from local changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code:: bash\n\n    dothub push mariocj89/dothub\n    Changes:\n    + root['collaborators']['dnaranjo89']\n    + root['labels']['new-tag']\n    C root['hooks']['travis']['active'] (True -\u003e False)\n    Apply changes? [Y/n]: Y\n    Updated!\n\nYou can check the repo configuration in github. dnarnajo89 has been\ninvited as a collaborator, travis hooks have been disabled and you have\na new awesome \"new-tag\"\n\nOrganization Configuration\n--------------------------\n\nRetrieve locally:\n^^^^^^^^^^^^^^^^^\n\n``dothub pull \u003corg_name\u003e``\n\nUpdating from local changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n``dothub push \u003corg_name\u003e``\n\nUpdating all repositories within an organization\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nYou can update all the repositories of an organization from your\n.dothub.repo.yml file.\n\nTo make a repo configuration be a template for all the repositories\nof your org you can use dothub as follows:\n\n.. code:: bash\n\n    dothub pull \u003corg/repo\u003e .dothub.org.repos.yml\n    dothub push --bulk org/*\n\nNote that some repository specific options like the name or the\ndescription will be ignored on the update.\n\n\nFuture features\n===============\n\nThis is justa prototype, dothub aims to be the configuration tool for\nyour whole github see\n`here \u003chttps://github.com/mariocj89/dothub/issues?q=is%3Aissue+is%3Aopen+label%3Aenhancement\u003e`__\nfor the features that are going to come available soon.\n\nFAQ\n===\n\nHow can I retriger the reconfigure step?\n----------------------------------------\n\nJust run dothub configure\n\nHow can I use the tool if I am need to provide a custom SSL certificate?\n------------------------------------------------------------------------\n\nPass the envvar REQUESTS\\_CA\\_BUNDLE=YOURCERTPATH.cer before running\ndothub\n\nI don't want the tool to manage a part of the config\n----------------------------------------------------\n\nJust remove that part! If there is full section missing (hooks, options,\nmembers, etc.). It will be ignored\n\n.. |Build Status| image:: https://travis-ci.org/mariocj89/dothub.svg?branch=master\n   :target: https://travis-ci.org/mariocj89/dothub\n.. |PyPI Version| image:: https://img.shields.io/pypi/v/dothub.svg\n   :target: https://pypi.python.org/pypi/dothub/\n.. |Code Health| image:: https://landscape.io/github/mariocj89/dothub/master/landscape.svg?style=flat\n   :target: https://landscape.io/github/mariocj89/dothub/master\n.. |Coveralls Report| image:: https://coveralls.io/repos/github/mariocj89/dothub/badge.svg\n   :target: https://coveralls.io/github/mariocj89/dothub\n\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmariocj89%2Fdothub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmariocj89%2Fdothub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmariocj89%2Fdothub/lists"}