{ "info": { "author": "Zoran Simic", "author_email": "zoran@simicweb.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development :: Build Tools", "Topic :: Utilities" ], "description": "Manage git projects en masse\n============================\n\n.. image:: https://img.shields.io/pypi/v/mgit.svg\n :target: https://pypi.org/project/mgit/\n :alt: Version on pypi\n\n.. image:: https://travis-ci.org/zsimic/mgit.svg?branch=master\n :target: https://travis-ci.org/zsimic/mgit\n :alt: Travis CI\n\n.. image:: https://codecov.io/gh/zsimic/mgit/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/zsimic/mgit\n :alt: codecov\n\n.. image:: https://img.shields.io/pypi/pyversions/mgit.svg\n :target: https://github.com/zsimic/mgit\n :alt: Python versions tested (link to github project)\n\n\nOverview\n========\n\nWith ``mgit``, you can pull/fetch several projects at once,\nand also auto-cleanup dangling branches (from past pull requests).\n\nA colored output is provided if possible, ``mgit`` should come in handy in general for:\n\n- quickly getting an overview of what's up with N git projects\n- fetch/pull N git objects at once\n- clone missing projects (useful if you tend to clone projects from same remote in one common folder)\n\n\nExample usage\n=============\n\n``mgit`` can show you what's the status of all your git projects in a folder, for example my repos::\n\n ~/dev/github: mgit\n ~/dev/github: 4 github/zsimic\n mgit: [master] up to date\n pickley: [master] 1 diff, up to date* last fetch 3w 4d ago\n runez: [master] up to date* last fetch 3w 4d ago\n setupmeta: [master] up to date* last fetch 4d 23h ago\n\n\nHere we can see that I have 4 repos in ``~/dev/github`` (and all 4 come from ``github/zsimic``),\n3 of them haven't been fetched in a while.\nWe can fetch them all at once with ``--fetch`` (or ``-f``)::\n\n ~/dev/github: mgit --fetch\n ~/dev/github: 4 github/zsimic\n mgit: [master] up to date\n pickley: [master] 1 diff, up to date\n runez: [master] up to date\n setupmeta: [master] up to date\n\n\nNow all projects have been refreshed, and we can see there's nothing new\n(otherwise we'd see a mention of the form ``2 commits behind``).\nThe output also shows that one of the projects has uncommitted files.\n\nModified files are shown if only one project is in scope, for example::\n\n ~/dev/github: mgit pickley\n pickley: [master] 1 diff, up to date\n M tox.ini\n\n\nAbove, we can see that the modified file in question is ``tox.ini`` in that project.\nWe can get the same effect using the ``-verbose`` (or ``-v``) flag,\nlike for example with 2 projects with modified files::\n\n ~/dev/github: mgit -v\n ~/dev/github: 4 github/zsimic\n mgit: [master] 1 diff, up to date\n M README.rst\n pickley: [master] 1 diff, up to date\n M tox.ini\n runez: [master] up to date\n setupmeta: [master] up to date\n\n\nSynopsis::\n\n ~/dev/github: mgit --help\n Usage: mgit [OPTIONS] [TARGET]\n\n Manage git projects en masse\n\n Options:\n --version Show the version and exit.\n --debug Show debugging information\n --color / --no-color Use (or not) colors (on by default on tty)\n --ignore action[:what] Show/add/remove/clear ignores\n --clean [show|local|remote|all|reset]\n Auto-clean branches\n -a, --all Examine all repos, even missing git checkouts\n -f, --fetch Fetch from all remotes\n -p, --pull Pull from tracking remote, clone missing with --all\n -s, --short / -v, --verbose Short/verbose output\n -cs Handy shortcut for '--clean show'\n -cl Handy shortcut for '--clean local'\n -cr Handy shortcut for '--clean remote'\n -ca Handy shortcut for '--clean all'\n -h, --help Show this message and exit.\n\n Advanced usage:\n --clean show Show which local/remote branches can be cleaned\n --clean local Clean local branches that were deleted from their corresponding remote\n --clean remote Clean merged remote branches\n --clean all Clean local and merged remote branches\n --clean reset Do a git --reset --hard + clean -fdx (nuke all changes, get back to pristine state)\n\n --ignore show Show ignores currently in effect\n --ignore add 'hackday.*' Add an ignore regex, for example here 'hackday.*'\n --ignore remove 'hackday.*' Remove an ignore regex, for example here 'hackday.*'\n --ignore clean Remove all ignores\n\n\nInstallation\n============\n\nEasiest way to get mgit is via pickley_ or pipsi_::\n\n pickley install mgit\n\n pipsi install mgit\n\n\nYou can also compile from source::\n\n git clone https://github.com/zsimic/mgit.git\n cd mgit\n tox -e venv\n source .venv/bin/activate\n\n\n.. _pickley: https://pypi.org/simple/pickley/\n\n.. _pipsi: https://pypi.org/simple/pipsi/\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/zsimic/mgit", "keywords": "multiple,git,repos", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "mgit", "package_url": "https://pypi.org/project/mgit/", "platform": "", "project_url": "https://pypi.org/project/mgit/", "project_urls": { "Homepage": "https://github.com/zsimic/mgit" }, "release_url": "https://pypi.org/project/mgit/1.0.3/", "requires_dist": [ "arrow", "cached-property", "click" ], "requires_python": "", "summary": "Manage git projects en masse", "version": "1.0.3" }, "last_serial": 4661668, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "5ff48ebed5e7fb1a57534a0bcb4453a6", "sha256": "658e7ac0e97b5908ca987952ccc4670120bbf022d37eb5f3d595ac30aaee44be" }, "downloads": -1, "filename": "mgit-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5ff48ebed5e7fb1a57534a0bcb4453a6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23660, "upload_time": "2018-12-22T08:15:34", "url": "https://files.pythonhosted.org/packages/fa/48/1d28ff09226577f84220b5db5df99851d174a38bfe5a3bd2d22e2b09f2a7/mgit-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6cf448637f45b1278149f51a635a81a8", "sha256": "9bf30e4a95d0d23f48f8c94402ae22845537b0af980ef306e739d6f9cd0a96ca" }, "downloads": -1, "filename": "mgit-1.0.2.tar.gz", "has_sig": false, "md5_digest": "6cf448637f45b1278149f51a635a81a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21563, "upload_time": "2018-12-22T08:15:35", "url": "https://files.pythonhosted.org/packages/f0/8e/a3a70ff72eb05040cd1861a144cfb50375efec245e4f96c29cf4812d76b0/mgit-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "7d65c2d78a359c74bbe19f1a6ff0419a", "sha256": "0148b438a671bd3df18b6e1dc9dcdc66bb94101759aeb8632dc991f1d89ad2f5" }, "downloads": -1, "filename": "mgit-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7d65c2d78a359c74bbe19f1a6ff0419a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23661, "upload_time": "2019-01-04T20:32:19", "url": "https://files.pythonhosted.org/packages/3f/24/6c605041f61b7af69b41f5b76b20d6b8a8c5883f493f623212303b760df1/mgit-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e8ea22cd4eeab6338332cc07faff6d7b", "sha256": "39cc5763e9874ca568ef07be30d16f302d52b6edfde1e00c21e0fa2d116f0ea6" }, "downloads": -1, "filename": "mgit-1.0.3.tar.gz", "has_sig": false, "md5_digest": "e8ea22cd4eeab6338332cc07faff6d7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21563, "upload_time": "2019-01-04T20:32:20", "url": "https://files.pythonhosted.org/packages/aa/53/2e1a9a992be7cbbbdb5d480ce78b533ff05850ccb03a05d7db16be174254/mgit-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7d65c2d78a359c74bbe19f1a6ff0419a", "sha256": "0148b438a671bd3df18b6e1dc9dcdc66bb94101759aeb8632dc991f1d89ad2f5" }, "downloads": -1, "filename": "mgit-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7d65c2d78a359c74bbe19f1a6ff0419a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23661, "upload_time": "2019-01-04T20:32:19", "url": "https://files.pythonhosted.org/packages/3f/24/6c605041f61b7af69b41f5b76b20d6b8a8c5883f493f623212303b760df1/mgit-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e8ea22cd4eeab6338332cc07faff6d7b", "sha256": "39cc5763e9874ca568ef07be30d16f302d52b6edfde1e00c21e0fa2d116f0ea6" }, "downloads": -1, "filename": "mgit-1.0.3.tar.gz", "has_sig": false, "md5_digest": "e8ea22cd4eeab6338332cc07faff6d7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21563, "upload_time": "2019-01-04T20:32:20", "url": "https://files.pythonhosted.org/packages/aa/53/2e1a9a992be7cbbbdb5d480ce78b533ff05850ccb03a05d7db16be174254/mgit-1.0.3.tar.gz" } ] }