{ "info": { "author": "Mateusz Bysiek", "author_email": "mateusz.bysiek@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 1 - Planning", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Software Development :: Version Control", "Topic :: System :: Archiving :: Backup", "Topic :: System :: Archiving :: Mirroring", "Topic :: System :: Monitoring", "Topic :: Utilities" ], "description": ".. role:: bash(code)\n :language: bash\n\n.. role:: json(code)\n :language: json\n\n.. role:: python(code)\n :language: python\n\n\n=====\ningit\n=====\n\nTool for managing a large collection of repositories in git.\n\n.. image:: https://img.shields.io/pypi/v/ingit.svg\n :target: https://pypi.org/project/ingit\n :alt: package version from PyPI\n\n.. image:: https://travis-ci.org/mbdevpl/ingit.svg?branch=master\n :target: https://travis-ci.org/mbdevpl/ingit\n :alt: build status from Travis CI\n\n.. image:: https://ci.appveyor.com/api/projects/status/github/mbdevpl/ingit?branch=master&svg=true\n :target: https://ci.appveyor.com/project/mbdevpl/ingit\n :alt: build status from AppVeyor\n\n.. image:: https://codecov.io/gh/mbdevpl/ingit/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/mbdevpl/ingit\n :alt: test coverage from Codecov\n\n.. image:: https://img.shields.io/github/license/mbdevpl/ingit.svg\n :target: https://github.com/mbdevpl/ingit/blob/master/NOTICE\n :alt: license\n\nIf you have 100 git-versioned projects, keeping tabs on everything can be quite troublesome.\n\nThat's where *ingit* comes in. It mimics selected git commands, however you can perform the same\naction on a group of repositories instead of just one.\n\nAdditionally, it has an interactive mode in which you can go over your repositories and quickly\nperform typical suggested actions in each individual repository based on its current status.\n\n.. contents::\n :backlinks: none\n\n\nOverview\n========\n\n\nBasic usage\n-----------\n\nFor general help, see:\n\n.. code:: bash\n\n ingit -h\n\n\nFor command-specific help, see:\n\n.. code:: bash\n\n ingit command -h\n\n\nCommands are of two kinds in general:\n\n* git-like commands, which work similar to their git versions;\n* ingit-only commands, which you won't find in git.\n\n\nCurrently available ingit-only commands are:\n\n* ``ingit summary`` will show summary of repositories registered in ingit;\n* ``ingit register`` will add an existing git repository to ingit configuration;\n* ``ingit foreach`` will execute a custom command for each repository.\n\n\nCurrently available git-like commands are:\n\n* ``ingit clone`` will mass-clone registered repositories;\n* ``ingit init`` will mass-init registered repositories;\n* ``ingit fetch`` will mass-fetch existing registered repositories;\n* ``ingit checkout`` will interactively checkout branches;\n* ``ingit merge`` will interactively merge branches;\n* ``ingit push`` will mass-push existing registered repositories;\n* ``ingit gc`` will do mass garbage collection of existing registered repositories;\n* ``ingit status`` will give comprehensive status report for every existing registered repository.\n\n\nFiltering the repositories\n--------------------------\n\nGit-like commands of ingit\n(namely: ``ingit clone``, ``ingit init``, ``ingit fetch``, ``ingit checkout``,\n``ingit merge``, ``ingit push``, ``ingit gc`` and ``ingit status``),\nas well as ``ingit summary`` and ``ingit foreach``,\nby default operate on all registered repositories.\n\nHowever, they all can take the options ``--regex``/``-r`` and ``--predicate``/``-p``\nthat filter out the repositories using repository metadata (i.e. name, tags, path and remotes)\nwhich is stored in the repositories configuration.\n\nIf both ``--regex``/``-r`` and ``--predicate``/``-p`` are provided,\npredicate is applied first.\n\n\nFiltering repositories by regular expression\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``--regex``/``-r`` option accepts any regular expression (also a simple string)\nand filters the repos by trying to simply find a match in any of the metadata.\n\nSpecifically, ingit will forward your input regular expression into this function:\n\n.. code:: python\n\n def regex_predicate(regex, name, tags, path, remotes):\n return (\n re.search(regex, name) is not None\n or any(re.search(regex, tag) is not None for tag in tags)\n or re.search(regex, str(path)) is not None\n or any(re.search(regex, name) for name, url in remotes.items()))\n\nThe actual implementation is here: ``_\n\n\nFiltering repositories by predicate\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``--predicate``/``-p`` option accepts a python boolean expression which will be inserted\ninto a predicate function template, as below:\n\n.. code:: python\n\n lambda name, tags, path, remotes: (predicate)\n\nThe actual implementation is here: ``_\n\nTherefore, executing ``ingit --predicate \"'mytag' in tags\" fetch`` results\nin the following predicate being applied:\n\n.. code:: python\n\n lambda name, tags, path, remotes: ('mytag' in tags)\n\nAnd thus only repositories that have ``'mytag'`` in their tags are fetched.\n\n\nConfiguration\n-------------\n\nIngit works based on configuration in 2 JSON files:\n\n* runtime configuration\n* repositories configuraion\n\nIf either of the files doesn't exist, detaults will be generated.\n\nThe default paths to the files can be overriden via ``--config`` and ``--repos``\ncommand-line options.\n\n\nRuntime configuraion\n~~~~~~~~~~~~~~~~~~~~\n\nMost importantly, stores repositories root directory -- it's a directory which ingit assumes\nto contain git-versioned projects.\n\nExample:\n\n.. code:: json\n\n {\n \"description\": \"ingit runtime configuration file\",\n \"ingit-version\": \"0.4.0\",\n \"machines\": [\n {\n \"name\": \"desktop\",\n \"repos_path\": \"~/Projects\"\n },\n {\n \"interactive\": false,\n \"names\": [\"server\", \"server.domain.com\"],\n \"repos_path\": \"$HOME/Projects\"\n }\n ]\n }\n\n\nRepositories configuraion\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIt's a file that lists all registered projects and keeps their metadata.\n\nIt is automatically updated when ``ingit register`` is used.\n\nExample:\n\n.. code:: json\n\n {\n \"description\": \"ingit repositories configuration file\",\n \"ingit-version\": \"0.4.0\",\n \"repos\": [\n {\n \"name\": \"ingit\",\n \"remotes\": {\n \"github\": \"git@github.com:mbdevpl/ingit.git\"\n },\n \"tags\": [\n \"active\",\n \"git\",\n \"github\",\n \"my\",\n \"python\"\n ]\n },\n {\n \"name\": \"pylint\",\n \"remotes\": {\n \"github\": \"git@github.com:mbdevpl/pylint.git\",\n \"source\": \"https://github.com/PyCQA/pylint\"\n },\n \"tags\": [\n \"external\",\n \"github\",\n \"python\"\n ]\n }\n ]\n }\n\nEntry of each repository is a JSON object that can have the following fields:\n\n.. code:: json\n\n {\n \"name\": \"name of the project\",\n \"path\": \"path doesn't have to be specified, by default it will be 'repos_path/name'\",\n \"paths\": {\n \"machine name 1\": \"path used only on machine 1\",\n \"machine name 2\": \"path used only on machine 2\",\n \"\": \"if no machine name is given, the path is used in all other cases\",\n ...\n }\n \"remotes\": {\n \"remote name 1\": \"url 1\",\n \"remote name 2\": \"url 2\",\n ...\n },\n \"tags\": [\n \"tags are completely optional\",\n \"but repositories are much easier to manage if they are consistently tagged\"\n ]\n }\n\n\nThe ``repos_path`` mentioned above is taken from the runtime configuation of ingit.\n\nAt most one of ``path`` or ``paths`` is allowed for each repo.\n\nThe two path specifications below are equivalent:\n\n.. code:: json\n\n {\n ...\n \"path\": \"some path\",\n ...\n }\n\n.. code:: json\n\n {\n ...\n \"paths\": {\n \"\": \"some path\"\n },\n ...\n }\n\n\n\nCommand details\n===============\n\nBelow, details of each command are described.\n\n\n``ingit summary``\n-----------------\n\nShow summary of registered repositories and status of configured repository root.\n\nFirst of all, print a list of registered repositories. By default, all registered repositories\nare listed, but, as in case of most commands, the results can be filtered via a predicate or regex.\n\nIndependently, print a list of all unregistered repositories and all not versioned paths present\nin the configured repositories root.\n\n\n``ingit register``\n------------------\n\nStart tracking a repository in ingit.\n\n.. code:: bash\n\n ingit register [--tags TAG ...] [PATH]\n\nThe initial configuration is set according to basic repository information:\nits root directory name becomes \"name\" and its currently configured remotes become\n\"remotes\". You can edit the configuration manually afterwards.\n\nThe final \"path\" to the repository stored in the configuration depends on the\n``repos_path`` in runtime configuation. The configured \"path\" will be:\n\n* resolved absolute path if there is no ``repos_path`` configured or repository path\n is outside of the ``repos_path``;\n* resolved relative path to the ``repos_path``, if the repository path is within it;\n* nothing (i.e. not stored) if the if the repository is stored directly in\n ``repos_path`` (i.e. there are no intermediate directories).\n\nBehaviour of storing relative/no paths in some cases is implemented to make\nconfiguration file much less verbose in typical usage scenarios. To prevent this\nbehaviour, and force all repository paths to be absolute, simply set the ``repos_path``\nin your runtime configuraion to JSON ``null``.\n\nUse ``PATH`` to provide the path to root directory of repository.\nIf not provided, current working directory is used.\n\nUse ``--tags`` to provide tags for this repository, they will be added to the initial configuration.\nTags have no other effect than making repository filtering easier.\n\n\n``ingit foreach``\n------------------\n\nTODO.\n\n\n``ingit clone``\n---------------\n\nExecute ``git clone --recursive --orign ``,\nwhere values of ```` and ```` are taken from default remote configuration\nof the repository.\n\nAfter cloning, add all remaining configured remotes to the repository and fetch them.\n\nFor example, if repository configuration is as follows:\n\n.. code:: json\n\n {\n \"name\": \"Spack\",\n \"path\": \"~/Software/Spack\",\n \"remotes\": {\n \"source\": \"https://github.com/spack/spack.git\",\n \"github\": \"git@github.com:mbdevpl/spack.git\"\n },\n \"tags\": []\n }\n\nThe clone command will be:\n``git clone https://github.com/spack/spack.git --recursive --orign source ~/Software/Spack``\nbecause ``source`` is the first configured remote.\nThe subsequent commands will be ``git remote add github git@github.com:mbdevpl/spack.git``\nand ``git fetch github``.\n\n\n``ingit init``\n--------------\n\nExecute ``git init`` followed by ``git remote add`` for each configured remote.\n\n\n``ingit fetch``\n---------------\n\nExecute ``git fetch ``, where the remote name is the remote of the current\ntracking branch, or all remotes of the repository if there's no tracking branch,\nor repository is in detached head state.\n\nUse ``--all`` to fetch all remotes in all cases.\n\n\n``ingit checkout``\n------------------\n\nInteractively select revision to checkout from list of local branches,\nremote non-tracking branches and local tags.\n\nThe list of branches to select from is composed by combinig:\n\n- local branches\n- non-tracking branches on all remotes\n- local tags\n\nChecking out a remote branch will create a local branch with the same unless it already exists.\nIf it already exists, repository will end up in detached head state.\n\nAlso, checking out any tag will put repository in detached head state.\n\n\n``ingit merge``\n---------------\n\nNot yet implemented!\n\nInteractively merge all branches to their tracking branches.\nFor each ````-```` pair,\nexecute ``git checkout `` and then if the merge can be fast-forward,\nautomatically execute ``git merge --ff-only``.\nIf not, then show more information about the situation of the repository, and propose:\n\n* ``git merge --log ``,\n* ``git rebase -i `` and\n* ``git reset --hard ``.\n\nIf repository is dirty when this command is executed, the command will do nothing.\nAfter work is done, return to the originally checked-out branch.\n\n\n``ingit push``\n--------------\n\nExecute ``git push :`` for the active branch.\n\n\n``ingit gc``\n------------\n\nExecute ``git gc --aggressive --prune``.\n\n\n``ingit status``\n----------------\n\nPerform git status, as well as other diagnostic git commands.\n\nExecute:\n\n* ``git status --short --branch`` to inform about any uncommited changes,\n* ``git log tracking_branch..branch`` to inform about commits that are not yet pushed to the remote,\n* ``git log branch..tracking_branch`` to inform about commits that are not yet merged from the remote.\n\nAdditionally, compare registered remotes with actual remotes to make sure that ingit\nconfiguration is in sync with the repository metadata.\n\nUse ``--ignored`` to include ignored files in the status report, just as with ``git status``.\n\n\nRequirements\n============\n\nPython version 3.5 or later.\n\nPython libraries as specified in `requirements.txt `_.\n\nBuilding and running tests additionally requires packages listed in `test_requirements.txt `_.\n\nTested on Linux, OS X and Windows.\n\n\n", "description_content_type": "text/x-rst; charset=UTF-8", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mbdevpl/ingit", "keywords": "tools,vcs,repository management,git,submodules", "license": "GNU General Public License v3 or later (GPLv3+)", "maintainer": "Mateusz Bysiek", "maintainer_email": "mateusz.bysiek@gmail.com", "name": "ingit", "package_url": "https://pypi.org/project/ingit/", "platform": "", "project_url": "https://pypi.org/project/ingit/", "project_urls": { "Homepage": "https://github.com/mbdevpl/ingit" }, "release_url": "https://pypi.org/project/ingit/0.4.8/", "requires_dist": [ "argcomplete", "gitpython (>=2.0)", "ordered-set", "readchar", "version-query" ], "requires_python": ">=3.5", "summary": "git repository collection management tool", "version": "0.4.8" }, "last_serial": 5723976, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "22a114f5598222532a5c3e6e64b5293b", "sha256": "f9387d18104e57e05a362b95720c942f013de06ec18708f79bf628e38dce1e3b" }, "downloads": -1, "filename": "ingit-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "22a114f5598222532a5c3e6e64b5293b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11741, "upload_time": "2018-02-08T09:43:55", "url": "https://files.pythonhosted.org/packages/0e/9c/723fddabab2e2ebf859ac5e242bc831c921b6eb464d5a938bae6a1041c1f/ingit-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4215a26f692776472a061fb4f5f00a21", "sha256": "bf3e633b645b78eea19efdf034d4f93f7fb55bc976d8afe87e05bd05025c1431" }, "downloads": -1, "filename": "ingit-0.1.0.tar.gz", "has_sig": false, "md5_digest": "4215a26f692776472a061fb4f5f00a21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26226, "upload_time": "2018-02-08T09:43:57", "url": "https://files.pythonhosted.org/packages/d6/8b/601413e0b75ffe05b218387c897b7724871fcf3817ddb42e0f97b17835f2/ingit-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "3fa867f28ba7e5758b547c9eae1b4488", "sha256": "e2bce3759165942a1730135f8d4f39c2e54380b2e2e83bb2aec26881050e2b3d" }, "downloads": -1, "filename": "ingit-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3fa867f28ba7e5758b547c9eae1b4488", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 14891, "upload_time": "2018-02-09T09:40:13", "url": "https://files.pythonhosted.org/packages/46/19/8b7200c41e55dcbdf699acde094b040d5040fb5003ee26738d6f0abee221/ingit-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ada5ec71ce489684ee6b0561d72f2856", "sha256": "9c569f3f61371c088ed0de3d7c2d021fb13e3a19e8b6bca1452b6831fa080a1b" }, "downloads": -1, "filename": "ingit-0.2.0.tar.gz", "has_sig": false, "md5_digest": "ada5ec71ce489684ee6b0561d72f2856", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 30259, "upload_time": "2018-02-09T09:40:15", "url": "https://files.pythonhosted.org/packages/d0/da/c53c85c65b109453e1e445dfe5963901a6a6551a134aea9966fd5e04c853/ingit-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "0969bb4d8716326a62568564f00e5c69", "sha256": "3aeef359940c748e1b5b15a4a0447c837347bdf3ab2966058c76907adc0b7a55" }, "downloads": -1, "filename": "ingit-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0969bb4d8716326a62568564f00e5c69", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 15346, "upload_time": "2018-02-10T05:48:52", "url": "https://files.pythonhosted.org/packages/67/15/482d27655778021ce213131eef89432b59373d3a2859ed46d99a610cebb5/ingit-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "883529cd11f5c9a802a220909b7bd2d9", "sha256": "0389b0bcf86acc9687305b83f9a2bd4af1fc84cf980b8f5cbb28aa3f04b254eb" }, "downloads": -1, "filename": "ingit-0.3.0.tar.gz", "has_sig": false, "md5_digest": "883529cd11f5c9a802a220909b7bd2d9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 30928, "upload_time": "2018-02-10T05:48:54", "url": "https://files.pythonhosted.org/packages/5e/93/48cc099b195e4ca1ae92b5238ea9df5678a2e344b0a6c81c952aa9e58731/ingit-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "aa0114719be2702c740b4323e5140d25", "sha256": "53d80a35bb14e053618399841f3bf35b1a59ec63d92d075a91dc90c65196c046" }, "downloads": -1, "filename": "ingit-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "aa0114719be2702c740b4323e5140d25", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 20645, "upload_time": "2018-02-23T09:05:03", "url": "https://files.pythonhosted.org/packages/0c/33/1a43d6b1858d865f882ae9b810483d892c676af607bd2b2664aeef503656/ingit-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "37a60cd847dbadf03f3e0556290c02de", "sha256": "c399c2ada5272dccc9e62a49eba76b94f979f6aa4efe0fb0f2f3d797efd6b7f3" }, "downloads": -1, "filename": "ingit-0.4.0.tar.gz", "has_sig": false, "md5_digest": "37a60cd847dbadf03f3e0556290c02de", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 37231, "upload_time": "2018-02-23T09:05:05", "url": "https://files.pythonhosted.org/packages/4a/09/a6600f2a8e0d86916e59f1f8e904570ebe6bc94a2843e3ce0ee321779e20/ingit-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "c38e2691d3f02b3118fbf78781e427f4", "sha256": "688d4115af868e80fa3e8e06da4b93fe478d83ff9c5fd1265819a3666031112a" }, "downloads": -1, "filename": "ingit-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c38e2691d3f02b3118fbf78781e427f4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 21258, "upload_time": "2018-03-16T09:10:04", "url": "https://files.pythonhosted.org/packages/25/2d/cb86e9e5d38226aa12b15e47c921843d7aacc8f2dbe9e38f00f93306346e/ingit-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "96d2199e8fb253f6df161178f6702672", "sha256": "681a1fef712c12cbdd0faa8abcccbd0196d5dcd61eb553b44092b62d6150b0be" }, "downloads": -1, "filename": "ingit-0.4.1.tar.gz", "has_sig": false, "md5_digest": "96d2199e8fb253f6df161178f6702672", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 39439, "upload_time": "2018-03-16T09:10:08", "url": "https://files.pythonhosted.org/packages/ff/d8/7b67d04bfd0fbe2d9524b70ae3633e8017b7ea03d79f4b8019e003c8890c/ingit-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "5566c5c82301599d7d8340a921a7aad9", "sha256": "3473db4067da1e94194a7514572f4eee9dfd3f608dbbdb702421a49d0da4bf9b" }, "downloads": -1, "filename": "ingit-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "5566c5c82301599d7d8340a921a7aad9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 20987, "upload_time": "2018-04-07T07:23:24", "url": "https://files.pythonhosted.org/packages/31/b0/10519943397a87a45fd574c10986254c610337823d063cd52a70a03f3b2b/ingit-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0ba36d8d223a2e8a6ae00378eadb6b1c", "sha256": "8b878ebe8b97c9cc4f768eb98f74814a6136064544376be7db2230476091cbc8" }, "downloads": -1, "filename": "ingit-0.4.2.tar.gz", "has_sig": false, "md5_digest": "0ba36d8d223a2e8a6ae00378eadb6b1c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 42688, "upload_time": "2018-04-07T07:23:25", "url": "https://files.pythonhosted.org/packages/0a/ff/0bf3a6c354e4a7ff5dc628706585590e27e515cf91ebb3149c1566e0d12d/ingit-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "f8f8de99399146af93b7b84fe679a82a", "sha256": "bba18ce2e36bc47ee225307693db460ebe6dbd2ac0be18cd5967376bd6696113" }, "downloads": -1, "filename": "ingit-0.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "f8f8de99399146af93b7b84fe679a82a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 21500, "upload_time": "2018-07-20T02:22:00", "url": "https://files.pythonhosted.org/packages/6c/a9/a5adb06f015eda8547d55a5db0b94fd12a3830e2079e58e140a00e2e986b/ingit-0.4.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "51f97c8b80baa80296048b81d4e011aa", "sha256": "60cf8b90a43d8f3ee480cf51f2cd9981e164c1e230c5ba2b6051f793813b861b" }, "downloads": -1, "filename": "ingit-0.4.3.tar.gz", "has_sig": false, "md5_digest": "51f97c8b80baa80296048b81d4e011aa", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 44570, "upload_time": "2018-07-20T02:22:01", "url": "https://files.pythonhosted.org/packages/43/8b/4b3a105641bf3350f39b7124834fc1481eb1b43af70db10b96da12bccf9b/ingit-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "c447a6105095b8e58244f45de0d63ca8", "sha256": "06b5e5a1edc7afb2cf73ec0aa4e28a2cd70c012d7b002f97174f148f26bf69b2" }, "downloads": -1, "filename": "ingit-0.4.4-py3-none-any.whl", "has_sig": false, "md5_digest": "c447a6105095b8e58244f45de0d63ca8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 22723, "upload_time": "2018-08-28T19:13:10", "url": "https://files.pythonhosted.org/packages/11/80/dac1edad513d3a20af9b84dee2348e6727e99f201c97044783b8077399f8/ingit-0.4.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3de38197df937374d257327f062e6926", "sha256": "b3b8a93be11604c4978c29e8a7e2da41cd55283d2f4e332e37287ea1b8a0eb48" }, "downloads": -1, "filename": "ingit-0.4.4.tar.gz", "has_sig": false, "md5_digest": "3de38197df937374d257327f062e6926", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 47068, "upload_time": "2018-08-28T19:13:11", "url": "https://files.pythonhosted.org/packages/53/c8/3c24eb16c07ad6ee928d1043d37c4af9d31336a9f7605a1bd8b368528254/ingit-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "1d010f10d6483e57dff195a4a17075f1", "sha256": "b1dd03c9d68860b610266d186819da1049a59327a1ac616ab3be62fe5ebc28c6" }, "downloads": -1, "filename": "ingit-0.4.5-py3-none-any.whl", "has_sig": false, "md5_digest": "1d010f10d6483e57dff195a4a17075f1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 36918, "upload_time": "2019-01-15T07:49:00", "url": "https://files.pythonhosted.org/packages/9a/a5/75f7847077d127148a83c120ae4ac52a764dbf00a9f16cb3a615bcfe00f9/ingit-0.4.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7896c7fde3803cb2bab13976a3575478", "sha256": "ae648633d3dbe35d9d15d9a9a3cbbb026d106d24e2765585f3ebf83bb2609dcd" }, "downloads": -1, "filename": "ingit-0.4.5.tar.gz", "has_sig": false, "md5_digest": "7896c7fde3803cb2bab13976a3575478", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 49206, "upload_time": "2019-01-15T07:49:02", "url": "https://files.pythonhosted.org/packages/da/b5/f9cf1e444dbe4182b48a31e09118d93aea29ec6a38f6d82d7fd97054e651/ingit-0.4.5.tar.gz" } ], "0.4.5.post1": [ { "comment_text": "", "digests": { "md5": "85fae2a2055e615a33e6ffe4e3d5e0d3", "sha256": "91e499b8c05700553051b8f6d6d36e7d311a7864641bc4f41532cf6b1a2dc159" }, "downloads": -1, "filename": "ingit-0.4.5.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "85fae2a2055e615a33e6ffe4e3d5e0d3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 37026, "upload_time": "2019-01-15T07:52:26", "url": "https://files.pythonhosted.org/packages/83/98/f9087fab3adcb8b8ac7309369b1779ca9ae24b77ea825dcfcadb4d5136f4/ingit-0.4.5.post1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e7f27839eb9deb0f29f5ee423ee9e0e", "sha256": "f2a21ddccd47e657d4ddc2355bd52aab9321733c2ea8d6ca8ed5a7dc440cfe76" }, "downloads": -1, "filename": "ingit-0.4.5.post1.tar.gz", "has_sig": false, "md5_digest": "0e7f27839eb9deb0f29f5ee423ee9e0e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 49247, "upload_time": "2019-01-15T07:52:28", "url": "https://files.pythonhosted.org/packages/33/21/66deb457c19579e57b45885a30b893e04149b59e9d82aa70d4275b648b90/ingit-0.4.5.post1.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "98677040fe526c2636711b06550b7356", "sha256": "cfc0390588def88a0cf13ca06e058b278b0fa0906c2b2ac97357fbb12ce89433" }, "downloads": -1, "filename": "ingit-0.4.6-py3-none-any.whl", "has_sig": false, "md5_digest": "98677040fe526c2636711b06550b7356", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 38011, "upload_time": "2019-05-10T01:58:44", "url": "https://files.pythonhosted.org/packages/11/de/621683052bde0523c3f6ddedb7baf253d587e26d27cad3640fc8e94be21f/ingit-0.4.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "09740dc027ee4c9c3139a0169f0b3af8", "sha256": "d72246c6551d2f9723be01e6f31b6c1e17f6641fc770d7fb9c43e2fd34567a9c" }, "downloads": -1, "filename": "ingit-0.4.6.tar.gz", "has_sig": false, "md5_digest": "09740dc027ee4c9c3139a0169f0b3af8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 50585, "upload_time": "2019-05-10T01:58:46", "url": "https://files.pythonhosted.org/packages/3b/6f/6b8135aa62b35b69e8cc1058ab0b73a0e8caffe726206fac61da9af8b0f0/ingit-0.4.6.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "7cd3ab9bf08b20dbffe2501988928c39", "sha256": "e62e7b6807d674605a18ae3098a3aeaac563f886a30cf9f972cb73f8a49ba4ba" }, "downloads": -1, "filename": "ingit-0.4.7-py3-none-any.whl", "has_sig": false, "md5_digest": "7cd3ab9bf08b20dbffe2501988928c39", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 38929, "upload_time": "2019-08-12T05:58:05", "url": "https://files.pythonhosted.org/packages/0f/d9/5487978e7677dbec560bc7d6b5c169b4da757c1de60dbb06c0e101c4ca26/ingit-0.4.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c9a66a55357c9cda4c32954fea7c5e75", "sha256": "58d05d07d7f7d4c751ee558d40156eb6ca1cda870d848e7b311bb8991cbcf0c1" }, "downloads": -1, "filename": "ingit-0.4.7.tar.gz", "has_sig": false, "md5_digest": "c9a66a55357c9cda4c32954fea7c5e75", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 51811, "upload_time": "2019-08-12T05:58:08", "url": "https://files.pythonhosted.org/packages/09/bb/b0dc0aa0d5cd716b5a577c19063704e0c4a606b3f7eaf4f62f0c386077a3/ingit-0.4.7.tar.gz" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "8c296f9665a8cbbf09bbd306318777f3", "sha256": "bf98c27a7f6a688affac82a3fae0410cd60a833ee29ad39202308b92d20e580d" }, "downloads": -1, "filename": "ingit-0.4.8-py3-none-any.whl", "has_sig": false, "md5_digest": "8c296f9665a8cbbf09bbd306318777f3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 39407, "upload_time": "2019-08-24T08:17:02", "url": "https://files.pythonhosted.org/packages/ab/39/a75fbd1c6d9c8921f5e83992326277d82dbb53aa709f3059492fa5b393d5/ingit-0.4.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28770dca7bdb351d6b349dc2ba1f12e1", "sha256": "42fe41b685e932523e9ea070eea2cd3ebe022ee59407c4498f41d81d780fd706" }, "downloads": -1, "filename": "ingit-0.4.8.tar.gz", "has_sig": false, "md5_digest": "28770dca7bdb351d6b349dc2ba1f12e1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 52110, "upload_time": "2019-08-24T08:17:05", "url": "https://files.pythonhosted.org/packages/67/ac/6cde638cdfe7b98382caee36262685da50556bdda73a3682989619376b76/ingit-0.4.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8c296f9665a8cbbf09bbd306318777f3", "sha256": "bf98c27a7f6a688affac82a3fae0410cd60a833ee29ad39202308b92d20e580d" }, "downloads": -1, "filename": "ingit-0.4.8-py3-none-any.whl", "has_sig": false, "md5_digest": "8c296f9665a8cbbf09bbd306318777f3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 39407, "upload_time": "2019-08-24T08:17:02", "url": "https://files.pythonhosted.org/packages/ab/39/a75fbd1c6d9c8921f5e83992326277d82dbb53aa709f3059492fa5b393d5/ingit-0.4.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28770dca7bdb351d6b349dc2ba1f12e1", "sha256": "42fe41b685e932523e9ea070eea2cd3ebe022ee59407c4498f41d81d780fd706" }, "downloads": -1, "filename": "ingit-0.4.8.tar.gz", "has_sig": false, "md5_digest": "28770dca7bdb351d6b349dc2ba1f12e1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 52110, "upload_time": "2019-08-24T08:17:05", "url": "https://files.pythonhosted.org/packages/67/ac/6cde638cdfe7b98382caee36262685da50556bdda73a3682989619376b76/ingit-0.4.8.tar.gz" } ] }