{ "info": { "author": "ACSONE SA/NV", "author_email": "info@acsone.eu", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", "Operating System :: POSIX", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: System :: Shells", "Topic :: Utilities" ], "description": ".. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg\n :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html\n :alt: License: AGPL-3\n.. image:: https://travis-ci.org/acsone/git-aggregator.svg?branch=master\n :target: https://travis-ci.org/acsone/git-aggregator\n.. image:: https://coveralls.io/repos/acsone/git-aggregator/badge.png?branch=master\n :target: https://coveralls.io/r/acsone/git-aggregator?branch=master\n.. image:: https://img.shields.io/badge/python-2.7%2C%203.5%2C%203.6%2C%203.7-blue.svg\n :alt: Python support: 2.7, 3.5, 3.6, 3.7\n\n==============\ngit-aggregator\n==============\n\nManage the aggregation of git branches from different remotes to build a consolidated one.\n\nConfiguration file\n==================\n\nCreate a ``repos.yaml`` or ``repos.yml`` file:\n\n.. code-block:: yaml\n\n ./product_attribute:\n remotes:\n oca: https://github.com/OCA/product-attribute.git\n acsone: git+ssh://git@github.com/acsone/product-attribute.git\n merges:\n - oca 8.0\n - oca refs/pull/105/head\n - oca refs/pull/106/head\n target: acsone aggregated_branch_name\n\n ./connector-interfaces:\n remotes:\n oca: https://github.com/OCA/connector-interfaces.git\n acsone: https://github.com/acsone/connector-interfaces.git\n merges:\n - oca 6054de2c4e669f85cec380da90d746061967dc83\n - acsone 8.0-connector_flow\n - acsone 80_connector_flow_ir_cron_able-lmi\n - acsone 8.0_connector_flow_improve_eval_config\n target: acsone aggregated_branch_name\n fetch_all:\n - oca\n\nEnvironment variables inside of this file will be expanded if the proper option is selected.\n\nFetching only required branches\n-------------------------------\n\nIf any of your merges refer to a specific commit, you will probably need to\nfetch all remotes from the corresponding remote or `use any other strategy to\nget that fetch working `_, but we\nrecommend to simply add this like in the example above:\n\n.. code-block:: yaml\n\n fetch_all:\n - oca\n - other-remote\n\nYou can specify that you want to fetch all references from all remotes you have defined with:\n\n.. code-block:: yaml\n\n fetch_all: true\n\nShallow repositories\n--------------------\n\nTo save big amounts of bandwidth and disk space, you can use shallow clones.\nThese download only a restricted amount of commits depending on some criteria.\nAvailable options are `depth`_, `shallow-since`_ and `shallow-exclude`_.\n\n.. warning::\n\n Available options depend on server and client Git version, be sure to use\n options available for your environment.\n\n.. _depth: https://git-scm.com/docs/git-fetch#git-fetch---depthltdepthgt\n.. _shallow-since: https://git-scm.com/docs/git-fetch#git-fetch---shallow-sinceltdategt\n.. _shallow-exclude: https://git-scm.com/docs/git-fetch#git-fetch---shallow-excludeltrevisiongt\n\nYou can use those in the ``defaults`` sections to apply them everywhere, or\nspecifying them in the corresponding ``merges`` section, for which you must use\nthe ``dict`` alternate construction. If you need to disable a default in\n``merges``, set it to ``false``:\n\n.. code-block:: yaml\n\n ./odoo:\n defaults:\n depth: 20\n remotes:\n odoo: https://github.com/odoo/odoo.git\n ocb: https://github.com/OCA/OCB.git\n acsone: https://github.com/acsone/odoo.git\n merges:\n -\n remote: ocb\n ref: \"9.0\"\n depth: 1000\n -\n remote: odoo\n ref: refs/pull/14859/head\n target: acsone 9.0\n\nRemember that you need to fetch at least the common ancestor of all merges for\nit to succeed.\n\nTriggers\n--------\n\nIt's also possible to specify a command or a list of shell commands to execute\nafter the aggregation (and before the push). The commands are executed into\nthe aggregated directory.\n\n.. code-block:: yaml\n\n ./product_attribute:\n remotes:\n oca: https://github.com/OCA/product-attribute.git\n acsone: git+ssh://git@github.com/acsone/product-attribute.git\n merges:\n - oca 8.0\n target: acsone aggregated_branch_name\n shell_command_after: echo 'my command'\n\n ./connector-interfaces:\n remotes:\n oca: https://github.com/OCA/connector-interfaces.git\n acsone: https://github.com/acsone/connector-interfaces.git\n merges:\n - oca 9.0\n target: acsone aggregated_branch_name\n shell_command_after:\n - echo 'a first command'\n - echo 'a second command'\n\nA real life example: applying a patch\n\n.. code-block:: yaml\n\n ./odoo:\n remotes:\n oca: https://github.com/OCA/OCB.git\n acsone: git@github.com/acsone/OCB.git\n merges:\n - oca 9.0\n target: acsone aggregated_branch_name\n shell_command_after:\n - git am \"$(git format-patch -1 XXXXXX -o ../patches)\"\n\nCommand line Usage\n==================\n\nFollowing the example ``repos.yaml`` file from above, aggregate your\nrepositories at any time:\n\n.. code-block:: bash\n\n $ gitaggregate -c repos.yaml\n\n\nExpand environment variables inside of the configuration file when loading:\n\n.. code-block:: bash\n\n $ gitaggregate -c repos.yaml --expand-env\n\nYou can also aggregate and automatically push the result to the target:\n\n.. code-block:: bash\n\n $ gitaggregate -c repos.yaml -p\n\nOnly aggregate a specific repository using `fnmatch`_:\n\n.. code-block:: bash\n\n $ gitaggregate -c repos.yaml -p -d connector-interfaces\n\n.. _fnmatch: https://docs.python.org/2/library/fnmatch.html\n\nShow github pull requests\n=========================\n\ngitaggregate has a mechanism to identify merges that correpond\nto merged or closed Github pull requests.\n\nSuch merges are of the form `refs/pull/NNN/head` where NNN is\nthe pull request number, with a https://github.com or git@github.com\nremote.\n\nTo work around API limitation, you must first generate a\n`Github API token`_.\n\n.. code-block:: bash\n\n $ export GITHUB_TOKEN=...\n $ gitaggregate -c repos.yaml show-all-prs\n $ gitaggregate -c repos.yaml show-closed-prs\n\n.. _Github API token: https://github.com/settings/tokens\n\nChanges\n=======\n\n1.7.1 (September 30, 2019)\n--------------------------\n\n* If an error happens, log in which repo it happens. Helpful when running\n in parallel.\n\n1.7.0 (August 14, 2019)\n-----------------------\n\n* Fix a bug in ``--show-all-prs``, which was printing a wrong PR URL.\n* Display PR labels too in ``--show-all-prs``.\n\n1.6.0 (March 04, 2019)\n----------------------\n\n* Add --show-all-prs command to list all GitHub pull requests used\n in merge sections.\n\n1.5.0 (December 07, 2018)\n-------------------------\n\n* Add --force. If set, dirty repositories will fail to aggregate.\n\n1.4.0 (September 13, 2018)\n--------------------------\n\n* Add --jobs option for multi-process operation.\n\n1.3.0 (August 21, 2018)\n-----------------------\n\n* Improve configuration file parsing by mimicing\n Kaptan's behavior of resolving handler by extension (#22)\n\n1.2.1 (July, 12, 2018)\n----------------------\n\n* show-closed-prs now displays merge status\n* some documentation improvements\n\n1.2.0 (May, 17, 2017)\n---------------------\n\n* support .yml config file extension\n* add a show-closed-prs command to display github pull requests\n that are not open anymore; github pull requests must be referenced\n as refs/pull/NNN/head in the merges section\n\n1.1.0 (Feb, 01, 2017)\n---------------------\n\n* Use setuptools_scm for the release process (https://github.com/acsone/git-aggregator/pull/10)\n* Expand env vars in config. (https://github.com/acsone/git-aggregator/pull/8)\n* Shallow repositories. (https://github.com/acsone/git-aggregator/pull/7)\n* Fetch only required remotes. (https://github.com/acsone/git-aggregator/pull/6)\n* Display readable error if config file not found. (https://github.com/acsone/git-aggregator/pull/2)\n\n1.0.0 (Jan, 19, 2016)\n---------------------\n\n* First release\n\nCredits\n=======\n\nAuthor\n------\n\n* Laurent Mignon (ACSONE_)\n\nContributors\n------------\n\n* Cyril Gaudin (camptocamp_)\n* Jairo Llopis (Tecnativa_)\n* St\u00e9phane Bidoul (ACSONE_)\n* Dave Lasley (LasLabs_)\n* Patric Tombez\n* Cristian Moncho\n* Simone Orsi (camptocamp_)\n* Artem Kostyuk\n\n.. _ACSONE: https://www.acsone.eu\n.. _Tecnativa: https://www.tecnativa.com\n.. _camptocamp: https://www.camptocamp.com\n.. _LasLabs: https://laslabs.com\n\nMaintainer\n----------\n\n.. image:: https://www.acsone.eu/logo.png\n :alt: ACSONE SA/NV\n :target: https://www.acsone.eu\n\nThis project is maintained by ACSONE SA/NV.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/acsone/git-aggregator", "keywords": "", "license": "AGPLv3+", "maintainer": "", "maintainer_email": "", "name": "git-aggregator", "package_url": "https://pypi.org/project/git-aggregator/", "platform": "", "project_url": "https://pypi.org/project/git-aggregator/", "project_urls": { "Homepage": "http://github.com/acsone/git-aggregator" }, "release_url": "https://pypi.org/project/git-aggregator/1.7.1/", "requires_dist": [ "kaptan", "argcomplete", "colorama", "requests" ], "requires_python": "", "summary": "A library to aggregate git branches from different remotes into a consolidated one", "version": "1.7.1" }, "last_serial": 5911232, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "8aa2394caca2d74a7a30971c9e7a1167", "sha256": "384be3137da877072b218db34cc399171126664b933e39a24c3e4040991b6bd4" }, "downloads": -1, "filename": "git-aggregator-1.0.0.tar.gz", "has_sig": false, "md5_digest": "8aa2394caca2d74a7a30971c9e7a1167", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9532, "upload_time": "2016-01-19T11:15:29", "url": "https://files.pythonhosted.org/packages/7f/84/f38823cf669088254b008859703a67403bdda5dc47d5ef3a8d3e4e4b1b0c/git-aggregator-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "b028d5eb322df1e6dbe464ba49e48c0d", "sha256": "955611132379a4392f1d614efaed3170f114c316896a1c683434c1315dedf205" }, "downloads": -1, "filename": "git_aggregator-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b028d5eb322df1e6dbe464ba49e48c0d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16893, "upload_time": "2017-02-01T14:09:48", "url": "https://files.pythonhosted.org/packages/6f/1c/a6b498dfc1b5a3289db561cd63bf97bd7e1591bbb86fe3765495c37aa7db/git_aggregator-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a66ef28462f7c6d9c025e5345a796631", "sha256": "814a3306d8bdce8edb3e9f42769675ac3ebdcf5763896376080f9f416d3251ad" }, "downloads": -1, "filename": "git-aggregator-1.1.0.tar.gz", "has_sig": false, "md5_digest": "a66ef28462f7c6d9c025e5345a796631", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30475, "upload_time": "2017-02-01T14:09:50", "url": "https://files.pythonhosted.org/packages/5e/97/6ac78de1a4e1f7c5f81c9f704779eb046150dd39d7e0989002c4dcbaa459/git-aggregator-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "904111f0a806e71d88aaae8d3f9f6873", "sha256": "d0fc455c7ce0abdfbb51e731870c26fe2ee709cb9ff0e7fdaa187d3dc83a2d96" }, "downloads": -1, "filename": "git_aggregator-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "904111f0a806e71d88aaae8d3f9f6873", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17960, "upload_time": "2017-05-17T13:58:58", "url": "https://files.pythonhosted.org/packages/91/84/5288d6fd549fc7aed370097d8719285f4c71b5a8c76e84ca197688bdfdd4/git_aggregator-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "482d281607f37b259705cff2f127fd0c", "sha256": "99b9b8ea181b3e8c41fbc58c29fb1e1d65f73b922fbbb8150eb0e61c69906fd4" }, "downloads": -1, "filename": "git-aggregator-1.2.0.tar.gz", "has_sig": false, "md5_digest": "482d281607f37b259705cff2f127fd0c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31547, "upload_time": "2017-05-17T13:58:59", "url": "https://files.pythonhosted.org/packages/59/cf/ad87891babfed76856cb2c4fa6bc98184bb6e54efd11c9892d5d1827327e/git-aggregator-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "1dfaafa1238a927347b4a96dbc017f2e", "sha256": "d710c97e790f3ff1a8518e450af8c72b4ea0084dd98b4ebd98c380fab1068e05" }, "downloads": -1, "filename": "git_aggregator-1.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1dfaafa1238a927347b4a96dbc017f2e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15001, "upload_time": "2018-07-15T08:44:58", "url": "https://files.pythonhosted.org/packages/04/96/cdd5c86761d15fed71aa4167892e8dcaf6a9afac7d2ee0d70970c4732779/git_aggregator-1.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48b14035b88b3e49bf5c4aedcb53bd7e", "sha256": "934e29ab5c4e6fc0307cfebf130c36f2afde334e2f10a447c26cac6b6bf12cbb" }, "downloads": -1, "filename": "git-aggregator-1.2.1.tar.gz", "has_sig": false, "md5_digest": "48b14035b88b3e49bf5c4aedcb53bd7e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32365, "upload_time": "2018-07-15T08:45:00", "url": "https://files.pythonhosted.org/packages/6e/49/084479d606b025898255d6ccba86fc84efb490a37a901cf3245d541f4e37/git-aggregator-1.2.1.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "867e76e39d09463273f9ec73dce9b0a5", "sha256": "ee0f0fe76b559bc76587afc7060f12bf447f361c0f361b487b9f994b806b9e70" }, "downloads": -1, "filename": "git_aggregator-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "867e76e39d09463273f9ec73dce9b0a5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15085, "upload_time": "2018-08-21T08:11:33", "url": "https://files.pythonhosted.org/packages/9b/0c/a4f5a5afe7921bebffd1c7e42aadf8e3a9fabdcdda32f037f123f7df6cd8/git_aggregator-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b79cdf280c67f8be13e3354608ca4ba", "sha256": "31cf744b8913aefa49a0b03f3ffb3c0a54f84483c4be226c8fd2ae82c9e940aa" }, "downloads": -1, "filename": "git-aggregator-1.3.0.tar.gz", "has_sig": false, "md5_digest": "3b79cdf280c67f8be13e3354608ca4ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32520, "upload_time": "2018-08-21T08:11:34", "url": "https://files.pythonhosted.org/packages/fd/03/e24d403442393f727e528acec7a231b3df2c13da73729edcf74d0fa524d1/git-aggregator-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "b49d89ac305bb4b8ef5a852125a7b63e", "sha256": "f6bf2d4386952260c2a337390408fccad3c960a7242756560a55c8bbb5408101" }, "downloads": -1, "filename": "git_aggregator-1.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b49d89ac305bb4b8ef5a852125a7b63e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15857, "upload_time": "2018-09-13T14:23:25", "url": "https://files.pythonhosted.org/packages/e7/26/8a5275c66ac84c4d116eb7c35f37572fe4d3d76268cc1350344ccf7e3dcc/git_aggregator-1.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "54fdb411c3fbbee1395ccc738e4aa94f", "sha256": "e40b806d63c42e650692c0e998f6303c6106d54bfa333a18864d8228e57c8bbe" }, "downloads": -1, "filename": "git-aggregator-1.4.0.tar.gz", "has_sig": false, "md5_digest": "54fdb411c3fbbee1395ccc738e4aa94f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34075, "upload_time": "2018-09-13T14:23:26", "url": "https://files.pythonhosted.org/packages/f4/1d/13aac5c2251df3e3ab74add26bbc751b168b0f5467bb2c5539fcf05f5b51/git-aggregator-1.4.0.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "77b3cd158075ed25633843ccb3c20191", "sha256": "52e5a97e6629cdeecdaca0ae729afd715fac0a7aa880e5aeaf56f96673073ecc" }, "downloads": -1, "filename": "git_aggregator-1.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "77b3cd158075ed25633843ccb3c20191", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 28146, "upload_time": "2018-12-07T08:46:19", "url": "https://files.pythonhosted.org/packages/ea/b9/5d5e5b072b0877cca122f7cacd750e3398f9d9708f370addac36507898f7/git_aggregator-1.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4726e868410a0685a86b4ee25d98414b", "sha256": "07e2b4e9ceae8607a9b12366e090d46fc68efdd402e0009e4905d11c92f79fac" }, "downloads": -1, "filename": "git-aggregator-1.5.0.tar.gz", "has_sig": false, "md5_digest": "4726e868410a0685a86b4ee25d98414b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34506, "upload_time": "2018-12-07T08:46:21", "url": "https://files.pythonhosted.org/packages/e9/fe/f6bf7d4c69c8642384708ca69d4a3a7719731550c0819733cd40a0087442/git-aggregator-1.5.0.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "49c2352dad69e008cc3bef77be6ec4cb", "sha256": "609723df77b54c39cb8d68717d1d0ace6e7856a1554a92738bc20aa290ff0c27" }, "downloads": -1, "filename": "git_aggregator-1.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "49c2352dad69e008cc3bef77be6ec4cb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 28495, "upload_time": "2019-03-04T09:28:35", "url": "https://files.pythonhosted.org/packages/dc/1b/e87d26547a15cc4664c8b5de006a7abaaef8b1119dbe087ede96e2a3b5e4/git_aggregator-1.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5e529788ff6d50bf8fca2e2cb984618a", "sha256": "2b89ae4bbdf1129a449b12cb7029be13636f8eaa1f5f7508d964d0256740f875" }, "downloads": -1, "filename": "git-aggregator-1.6.0.tar.gz", "has_sig": false, "md5_digest": "5e529788ff6d50bf8fca2e2cb984618a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34972, "upload_time": "2019-03-04T09:28:36", "url": "https://files.pythonhosted.org/packages/58/1b/93354b7efa482379a3c6997ec27924c11d8bc43c4a53f53f48ce609f2755/git-aggregator-1.6.0.tar.gz" } ], "1.7.0": [ { "comment_text": "", "digests": { "md5": "f959b116372507d81cadaa23aa83ecfa", "sha256": "462d9ce8337562e596f0b117bdeb1af370a67a5174d341444075471009c2952e" }, "downloads": -1, "filename": "git_aggregator-1.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f959b116372507d81cadaa23aa83ecfa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 28618, "upload_time": "2019-08-14T06:28:58", "url": "https://files.pythonhosted.org/packages/1d/6e/cf4c0b9be323aa28a6fc80788201efde8e1da419b12bc04e18d5eb1c4719/git_aggregator-1.7.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "888da2736917f37e2aecb1bee794c352", "sha256": "77ea7da507d7ac150242c121794e3d253786a712a44b3059309952b52ab3894b" }, "downloads": -1, "filename": "git-aggregator-1.7.0.tar.gz", "has_sig": false, "md5_digest": "888da2736917f37e2aecb1bee794c352", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34017, "upload_time": "2019-08-14T06:29:00", "url": "https://files.pythonhosted.org/packages/c8/ba/c75a02843e8415aeaa61ba890bd8f1730489e00e188a25d3a1538ec72d06/git-aggregator-1.7.0.tar.gz" } ], "1.7.1": [ { "comment_text": "", "digests": { "md5": "e94b17b6f486a1cac3cecc8b9605483f", "sha256": "f9a1cfc56e5d83bf18c26a262fb788f8a862d629301cf89c2079ba02fde589bf" }, "downloads": -1, "filename": "git_aggregator-1.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e94b17b6f486a1cac3cecc8b9605483f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 28691, "upload_time": "2019-10-01T09:10:48", "url": "https://files.pythonhosted.org/packages/4e/05/fc684129f124b379d62d6836ce686fbc7ed0d7eb6f3fd46d5968c59c2cbe/git_aggregator-1.7.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8148e7790518bcfd8cfeb72714cbed77", "sha256": "3bf0aed7a4ddf1527dcc1c41531de34fb004457c35c7c80747b718983eede078" }, "downloads": -1, "filename": "git-aggregator-1.7.1.tar.gz", "has_sig": false, "md5_digest": "8148e7790518bcfd8cfeb72714cbed77", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34150, "upload_time": "2019-10-01T09:10:49", "url": "https://files.pythonhosted.org/packages/8f/51/5bb134bd4970688e4f4804497099c27d557cf4e74c119d8c9e355d2435e6/git-aggregator-1.7.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e94b17b6f486a1cac3cecc8b9605483f", "sha256": "f9a1cfc56e5d83bf18c26a262fb788f8a862d629301cf89c2079ba02fde589bf" }, "downloads": -1, "filename": "git_aggregator-1.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e94b17b6f486a1cac3cecc8b9605483f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 28691, "upload_time": "2019-10-01T09:10:48", "url": "https://files.pythonhosted.org/packages/4e/05/fc684129f124b379d62d6836ce686fbc7ed0d7eb6f3fd46d5968c59c2cbe/git_aggregator-1.7.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8148e7790518bcfd8cfeb72714cbed77", "sha256": "3bf0aed7a4ddf1527dcc1c41531de34fb004457c35c7c80747b718983eede078" }, "downloads": -1, "filename": "git-aggregator-1.7.1.tar.gz", "has_sig": false, "md5_digest": "8148e7790518bcfd8cfeb72714cbed77", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34150, "upload_time": "2019-10-01T09:10:49", "url": "https://files.pythonhosted.org/packages/8f/51/5bb134bd4970688e4f4804497099c27d557cf4e74c119d8c9e355d2435e6/git-aggregator-1.7.1.tar.gz" } ] }