{ "info": { "author": "Daniel Parks", "author_email": "os-replicate-github@demonhorse.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python :: 3", "Topic :: Software Development :: Version Control", "Topic :: System :: Archiving :: Mirroring" ], "description": "replicate-github\n================\n\nreplicate-github sets up and maintains mirrors of GitHub organizations and\nindividual repos. It can serve webhook endpoints and keep the mirrors updated\ncontinuously, or it can be run ad hoc from the command line.\n\n::\n\n $ replicate-github --verbose mirror puppetlabs/puppet 'github/*'\n mirror.Collection: Fetching puppetlabs/puppet\n mirror.Collection: Fetching github/garethr-docker\n mirror.Collection: Fetching github/github-ldap\n ^C\n $ replicate-github --verbose serve --update-org github\n WebhookServer: Webhook server listening on localhost:8080\n 127.0.0.1 - - [10/Aug/2016 01:18:35] \"POST / HTTP/1.1\" 202 -\n mirror.Collection: Fetching puppetlabs/puppet\n ^C\n\nWebhook\n~~~~~~~\n\nThe webhook server accepts POST to any URL (the path is ignored). A shared\nsecret should be set so that events can't be sent from non-GitHub sources.\n\nBy default the webhook server ensures that mirrors are updated at least once a\nday if no events are received. See ``replicate-github serve --help`` for more\ninformation.\n\nGitHub webhook configuration\n----------------------------\n\nCreate the webhook with any URL under the one served by the application. Set\nthe secret to a random string, and put it in ``replicate-github.yaml`` like so:\n\n.. code:: yaml\n\n serve:\n secret: \"secret configured for webhook in GitHub\"\n\nSelect the \"Repository\" and \"Push\" events to send.\n\nSecurity\n--------\n\nIf a secret is configured then any event not containing the correct secret will\nbe rejected.\n\nOnly two parts of the payload are used: the full name of the repo, and the\ndeleted flag. The full name of the repo is validated to ensure it contains no\nspecial characters (like / or .).\n\nThis will create or update a mirror for any repo name as long as the secret is\ncorrect. That means if you configure the webhook for a repo that hasn't already\nbeen mirrored it will start mirroring the repo as soon as an event comes in.\n\nConfiguration file\n~~~~~~~~~~~~~~~~~~\n\nConfiguration is loaded from the value of ``--config-file``, which defaults to\n``/etc/replicate-github.yaml``. The file requires three settings:\n\n.. code:: yaml\n\n mirror_path: \"/srv/replicate-github\"\n github_user: \"GitHub username\"\n github_token: \"GitHub API token\"\n\nYou can generate a GitHub API token under `Settings > Personal access\ntokens `_.\n\nThere is an additional top level option, ``workers``, that sets the number of\n``git`` subprocesses that can be run at once. It defaults to 1.\n\nOptionally, defaults for subcommands (e.g. ``serve``) may be set:\n\n.. code:: yaml\n\n serve:\n secret: \"secret configured for webhook in GitHub\"\n port: 8000\n update_org:\n - github\n - puppetlabs\n\nNote that parameter names in the configuration file use \"_\" instead of \"-\". For\nexample, the parameter ``--update-org`` is called ``update_org`` in the\nconfiguration file.\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/danielparks/replicate-github", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "replicate-github", "package_url": "https://pypi.org/project/replicate-github/", "platform": "", "project_url": "https://pypi.org/project/replicate-github/", "project_urls": { "Homepage": "http://github.com/danielparks/replicate-github" }, "release_url": "https://pypi.org/project/replicate-github/1.0.0/", "requires_dist": [ "click", "gitpython", "pygithub", "pyyaml" ], "requires_python": "", "summary": "Tool for maintaining mirrors of GitHub repos", "version": "1.0.0" }, "last_serial": 3174827, "releases": { "0.5.0": [ { "comment_text": "", "digests": { "md5": "8affc8f5a0f0d951a632ac4b4768ff3c", "sha256": "f469704515cd2d06effd47d8cfaa87c5957e1287354b3bc51a9ca1896345b9c5" }, "downloads": -1, "filename": "replicate_github-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8affc8f5a0f0d951a632ac4b4768ff3c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12242, "upload_time": "2016-08-12T01:21:53", "url": "https://files.pythonhosted.org/packages/44/f7/759fe0731ca4d6b52fdad0f27c93974f74ff1ee1622de7b1db51a20e9825/replicate_github-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0baae96c7c36f28d8428a8004e6670e3", "sha256": "0afd1a253c526af15f4de813c62dc8c6ab467547a48c81f6a11e0b40c8d4ba82" }, "downloads": -1, "filename": "replicate-github-0.5.0.tar.gz", "has_sig": false, "md5_digest": "0baae96c7c36f28d8428a8004e6670e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9411, "upload_time": "2016-08-12T01:21:56", "url": "https://files.pythonhosted.org/packages/a8/54/88678ecd61a72af92b4f9258019b0f6a3a24c8ef9aa66db1b24925b416fb/replicate-github-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "8c023a4d12709e4de4cc9c44a677507e", "sha256": "05973618a4ba6aaf1d01b74f77f9c494e7f440b9cfdebda3fc2147d6496667a2" }, "downloads": -1, "filename": "replicate_github-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8c023a4d12709e4de4cc9c44a677507e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12344, "upload_time": "2016-08-12T05:11:39", "url": "https://files.pythonhosted.org/packages/c1/7d/edf124869b39a82ad70fe87c46c1884d949dacc0d58b5ac854d26293006d/replicate_github-0.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "035aa275c5878192bb10ac1dc882de05", "sha256": "a664a723e8d76a409071b2fbd4770b133ea4fec364b7043174e396becb8363c1" }, "downloads": -1, "filename": "replicate-github-0.5.1.tar.gz", "has_sig": false, "md5_digest": "035aa275c5878192bb10ac1dc882de05", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9563, "upload_time": "2016-08-12T05:11:41", "url": "https://files.pythonhosted.org/packages/73/af/ff328b06c9f07b038d2b9c90f1c9a02a44eee3f389d3ec53d9fd4c1bfc46/replicate-github-0.5.1.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "737db881e92618c75f6e412a5b59e1ca", "sha256": "925a77652c18766e6df7048be6158021ec9d69abe381b44b86471bef923e7440" }, "downloads": -1, "filename": "replicate_github-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "737db881e92618c75f6e412a5b59e1ca", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13026, "upload_time": "2016-08-20T08:15:26", "url": "https://files.pythonhosted.org/packages/1b/63/24702637c99abc51663d0a8c7cb3b00c2438d42f99379eb988c13db6a84d/replicate_github-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "234d55470f5ff48f64cce97dbbcb9fff", "sha256": "75126b84ff35e5fae53746b39fdf40992257944be972e59cf7e418faf33f0e46" }, "downloads": -1, "filename": "replicate-github-0.6.0.tar.gz", "has_sig": false, "md5_digest": "234d55470f5ff48f64cce97dbbcb9fff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10150, "upload_time": "2016-08-20T08:15:29", "url": "https://files.pythonhosted.org/packages/a2/ea/ea3da34e030d584244a882ae6694533dbb61e179881a28cf56b3ce2dfc02/replicate-github-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "7cc47699c6056da719565a52e25cf67e", "sha256": "58411210d5469e1cdff467bd9a3b7bab8f723a1d0aa85146fea9cd2962380051" }, "downloads": -1, "filename": "replicate_github-0.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7cc47699c6056da719565a52e25cf67e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13488, "upload_time": "2016-08-23T04:47:44", "url": "https://files.pythonhosted.org/packages/03/48/45946aab613f3e4c7c45e3b624f4c1ba57edd54e6335ca8987b12d12d18a/replicate_github-0.6.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "84a639daa06bfc42dfadc0fdf0ebf308", "sha256": "b5833d8597d82df8d10be49fb01d930a0ea61c2358a077caea012e9df75f4da0" }, "downloads": -1, "filename": "replicate-github-0.6.1.tar.gz", "has_sig": false, "md5_digest": "84a639daa06bfc42dfadc0fdf0ebf308", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10685, "upload_time": "2016-08-23T04:47:45", "url": "https://files.pythonhosted.org/packages/a2/5c/da9a0e44af2a61bc0261d5afe36286425c1884d14ec25678170ed901775e/replicate-github-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "7c85586880ccc8e89bc58a16550cb507", "sha256": "8844f5fb5ce660f6b9556a14a09b53861e88690e61103158d9763164f56480f0" }, "downloads": -1, "filename": "replicate_github-0.6.2-py3-none-any.whl", "has_sig": false, "md5_digest": "7c85586880ccc8e89bc58a16550cb507", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13496, "upload_time": "2016-08-24T08:24:19", "url": "https://files.pythonhosted.org/packages/de/75/3f5a09d8b242cd287055f1d0d3441c658823507745b53a066fda14943a7b/replicate_github-0.6.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5bcd0030fbf18c87925c12fa67ec6e6f", "sha256": "d6f6d14115108b7bc68f97a8c9ed216f88edef8dc6c742e385ed3d59b630a3d6" }, "downloads": -1, "filename": "replicate-github-0.6.2.tar.gz", "has_sig": false, "md5_digest": "5bcd0030fbf18c87925c12fa67ec6e6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10695, "upload_time": "2016-08-24T08:24:22", "url": "https://files.pythonhosted.org/packages/da/f4/48579ffe2859066a78231dbd6c7a8909a13dec045e94066a472cb58ba2da/replicate-github-0.6.2.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "85c92e41605c26812e97da75116bae17", "sha256": "7a783463d2f575d40ec137a60f18d6cba5fec5c0edd9a143d180095e5125fab6" }, "downloads": -1, "filename": "replicate_github-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "85c92e41605c26812e97da75116bae17", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13507, "upload_time": "2017-09-14T22:07:23", "url": "https://files.pythonhosted.org/packages/c1/d7/ab6a0d5a372c46adf17238f57c33d6856a9640937af12f4bbebe2fe5eb4d/replicate_github-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2e8ec3dc526719d432663384d71dba52", "sha256": "c0c71251f3735acbfb21926fdaad9398479f6e05e3ef1cf727e55d259dd0579b" }, "downloads": -1, "filename": "replicate-github-1.0.0.tar.gz", "has_sig": false, "md5_digest": "2e8ec3dc526719d432663384d71dba52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10693, "upload_time": "2017-09-14T22:07:24", "url": "https://files.pythonhosted.org/packages/a7/47/ad21078431ba58672ab2b36f4801b4ef2d9a141200694440b5e380f87baa/replicate-github-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "85c92e41605c26812e97da75116bae17", "sha256": "7a783463d2f575d40ec137a60f18d6cba5fec5c0edd9a143d180095e5125fab6" }, "downloads": -1, "filename": "replicate_github-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "85c92e41605c26812e97da75116bae17", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13507, "upload_time": "2017-09-14T22:07:23", "url": "https://files.pythonhosted.org/packages/c1/d7/ab6a0d5a372c46adf17238f57c33d6856a9640937af12f4bbebe2fe5eb4d/replicate_github-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2e8ec3dc526719d432663384d71dba52", "sha256": "c0c71251f3735acbfb21926fdaad9398479f6e05e3ef1cf727e55d259dd0579b" }, "downloads": -1, "filename": "replicate-github-1.0.0.tar.gz", "has_sig": false, "md5_digest": "2e8ec3dc526719d432663384d71dba52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10693, "upload_time": "2017-09-14T22:07:24", "url": "https://files.pythonhosted.org/packages/a7/47/ad21078431ba58672ab2b36f4801b4ef2d9a141200694440b5e380f87baa/replicate-github-1.0.0.tar.gz" } ] }