{ "info": { "author": "Dmitry Bashkatov", "author_email": "dbashkatov@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Topic :: Software Development :: Version Control", "Topic :: Utilities" ], "description": "============\n``unpushed``\n============\n---------------------------------------------------------\nScan version control for uncommitted and unpushed changes\n---------------------------------------------------------\n\nThis is fork of \"uncommitted_\" project originally created by Brandon Rhodes.\n\n\"unpushed\" adds some features:\n\n* support for checking branches for unpushed commits,\n* desktop notification.\n\nPreface from original author\n============================\n\nWhen working on one version-controlled project on my hard drive, I often\nflip over quickly to another project to make a quick change. By the end\nof the day I have forgotten about that other change and often find it\nmonths later when I enter that repository again. I needed a way to be\nalerted at the end of each day about any uncommitted changes sitting\naround on my system.\n\nThus was born this \"uncommitted\" script: using either your system\n*locate(1)* command or by walking a filesystem tree on its own, it will\nfind version controlled directories and print a report on the standard\noutput about any uncommitted changes still sitting on your drive. By\nrunning it from a *cron(8)* job you can make this notification routine.\n\nRunning \"unpushed\"\n==================\n\nBy default \"unpushed\" uses the *locate(1)* command to scan for\nrepositories, which means that it can operate quickly even over very\nlarge filesystems like my home directory::\n\n $ unpushed ~\n\nBut you should **be warned:** because the *locate(1)* database is only\nupdated once a day on most systems, this will miss repositories which\nyou have created since its last run. To be absolutely sure to see all\ncurrent repositories, you should instead ask \"unpushed\" to search the\nfilesystem tree itself. To do this on your \"devel\" directory, for\nexample, you would type this::\n\n $ unpushed -w ~/devel\n\nNot only will the output of \"-w\" always be up-to-date, but it is usually\nfaster for small directory trees. The default behavior of using\n*locate(1)* (which can also be explicitly requested, with \"-l\") is\nfaster when the directory tree you are searching is very large.\n\nShould you ever want a list of all repositories, and not just those with\nuncommitted changes, you can use the \"-a\" option::\n\n $ unpushed -a ~\n\nAlso you can list exact files or braches was changed using the \"-v\" verbose\noption::\n\n $ unpushed -v ~\n\nYou can always get help by running \"unpushed\" without arguments or\nwith the \"-h\" or \"--help\" options.\n\nDesktop notification\n====================\n\nApplication use system depended desktop notification facility. To show desktop\nnotification run this command::\n\n $ unpushed-notify ~\n\nOn Linux this is done through pynotify library. On OS X through pyobjc. On other systems this feature is\nnot implemented yet.\n\nYou can add this line to your crontab (*crontab -e*)::\n\n */10 18-20 * * * unpushed-notify ~\n\nThis will show you notification about uncommitted and unpushed changes every\n10 minutes starting from 6pm ending at 8pm.\n\nDo not forget to add unpushed-notify to cron PATH!\n\nSupported VCs\n=============\n\nAt the moment, \"unpushed\" supports:\n\n* `Mercurial`_ (.hg directories)\n* `Git`_ (.git directories)\n* `Subversion`_ (.svn directories)\n\nTODO\n====\n\n* Check svn existence before using it\n* Check locate existence before using it\n\nChangelog\n=========\n\n**1.2.0** (2017 Sep 25)\n\n- Python 3 Migration\n\n**1.1.0** (2012 May 22)\n\n- Fix README markup\n- Report untracked files separately\n- Add -t option to ignore untracked files\n- Show not pushed changesets in Mercurial. Thanks Guilherme Gondim for\n testing\n\n**1.0.2** (2012 April 27)\n\n- Fix setup script\n\n.. _uncommitted: http://bitbucket.org/brandon/uncommitted\n.. _Mercurial: http://mercurial.selenic.com/\n.. _Subversion: http://subversion.tigris.org/\n.. _Git: http://git-scm.com/", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/nailgun/unpushed/", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "unpushed", "package_url": "https://pypi.org/project/unpushed/", "platform": "", "project_url": "https://pypi.org/project/unpushed/", "project_urls": { "Homepage": "http://github.com/nailgun/unpushed/" }, "release_url": "https://pypi.org/project/unpushed/1.3.0/", "requires_dist": null, "requires_python": "", "summary": "Scan version control for uncommitted and unpushed changes", "version": "1.3.0" }, "last_serial": 3672163, "releases": { "1.0": [], "1.0.1": [ { "comment_text": "", "digests": { "md5": "6e834c782750589b6f81ebf255b4b4e4", "sha256": "9a37ca58e741e4fd95c600c03b95f6ae60c290cde0ff43a37ce825a433d14c41" }, "downloads": -1, "filename": "unpushed-1.0.1-py2.6.egg", "has_sig": false, "md5_digest": "6e834c782750589b6f81ebf255b4b4e4", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 35949, "upload_time": "2012-04-27T16:25:21", "url": "https://files.pythonhosted.org/packages/ea/47/e99479c95a1f94aa7465196c3dc9520281232738abfef72ae368b9b56e07/unpushed-1.0.1-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "edba623e71275507d9ef39a7707921bc", "sha256": "3c87cbbe4ed7b35244ce10e816486da05f593159c95d5aa73f7c4a3ab870d317" }, "downloads": -1, "filename": "unpushed-1.0.1.tar.gz", "has_sig": false, "md5_digest": "edba623e71275507d9ef39a7707921bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5662, "upload_time": "2012-04-26T12:08:30", "url": "https://files.pythonhosted.org/packages/8a/d2/5b4300f6e2abbd30d5e24aa71f20ade320cdaa2dafb27f4a86437225ae19/unpushed-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "3ad2d69f6a39e0a5c86c05713a5383f9", "sha256": "97e6ab45f8cfd9b1a6c0245c8ca562374fa22747a5faf5bcfa1c9a1a7b8637b8" }, "downloads": -1, "filename": "unpushed-1.0.2.tar.gz", "has_sig": false, "md5_digest": "3ad2d69f6a39e0a5c86c05713a5383f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29723, "upload_time": "2012-04-27T16:31:16", "url": "https://files.pythonhosted.org/packages/ad/52/f13b772402848b6635ce1fe28fee50d3b2fc655f33d2acf6cb54304618d3/unpushed-1.0.2.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "188de26c84ffe3385e931478387c276d", "sha256": "4300191cf0e86fff43ccf1269a44fd656e028f39b0948631bfc6c29e03ee1779" }, "downloads": -1, "filename": "unpushed-1.1.0.tar.gz", "has_sig": false, "md5_digest": "188de26c84ffe3385e931478387c276d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32222, "upload_time": "2012-05-22T17:33:54", "url": "https://files.pythonhosted.org/packages/43/d0/916c633dd10880afe4ebf2586e6d64bc2c862cffce269e9c5b7437828ed1/unpushed-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "1d462679abcad89f9000cb14c421e1fc", "sha256": "157e4c33c443702c50cef916feb43916e45f886a78ff116b0341e27b0f3a0ce0" }, "downloads": -1, "filename": "unpushed-1.2.0.tar.gz", "has_sig": false, "md5_digest": "1d462679abcad89f9000cb14c421e1fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6632, "upload_time": "2017-09-28T10:31:43", "url": "https://files.pythonhosted.org/packages/3f/06/2670735bdce64519d3b04bd1500e1ae0b5ff2b067ac96ffd13b6edfbbb8c/unpushed-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "c65f902a3571770081bade56156ae1e1", "sha256": "2fadd7f055bd7af58b30dff2dfde9c24226041d20889e73f6be590330b8ab306" }, "downloads": -1, "filename": "unpushed-1.3.0.tar.gz", "has_sig": false, "md5_digest": "c65f902a3571770081bade56156ae1e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6697, "upload_time": "2018-03-15T11:38:52", "url": "https://files.pythonhosted.org/packages/6a/1a/e38897dcb282ab4d5884be9e156fa77af9d718651f54a82706f1b5d3e7e8/unpushed-1.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c65f902a3571770081bade56156ae1e1", "sha256": "2fadd7f055bd7af58b30dff2dfde9c24226041d20889e73f6be590330b8ab306" }, "downloads": -1, "filename": "unpushed-1.3.0.tar.gz", "has_sig": false, "md5_digest": "c65f902a3571770081bade56156ae1e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6697, "upload_time": "2018-03-15T11:38:52", "url": "https://files.pythonhosted.org/packages/6a/1a/e38897dcb282ab4d5884be9e156fa77af9d718651f54a82706f1b5d3e7e8/unpushed-1.3.0.tar.gz" } ] }