{ "info": { "author": "Scott Duckworth", "author_email": "sduckwo@clemson.edu", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Topic :: Software Development :: Version Control" ], "description": "python-anyvcs\n=============\n\nA Python abstraction layer for multiple version control systems.\n\n.. image:: https://travis-ci.org/ScottDuckworth/python-anyvcs.png?branch=master\n :target: https://travis-ci.org/ScottDuckworth/python-anyvcs\n :alt: Build Status\n\n.. image:: https://badge.fury.io/py/anyvcs.png\n :target: http://badge.fury.io/py/anyvcs\n :alt: PyPI Package\n\npython-anyvcs provides a Python interface to work with version control\nrepositories through a consistent interface regardless of the underlying\nrepository type. It currently supports:\n\n* Git repositories (either bare or non-bare)\n* Mercurial repositories\n* Subversion master repositories (those created with ``svnadmin create``)\n\nThe focus is on read-only operations, but a few write operations are supported\n(like creating new repositories or loading a Subversion dumpfile).\n\nIf you are looking for an interface to work with working copies of version\ncontrol repositories, either contribute to this project or look elsewhere.\n\nSupported Operations\n--------------------\n\n* ``ls()`` - list files\n* ``cat()`` - read file contents\n* ``readlink()`` - read symbolic link target\n* ``branches()`` - list branches\n* ``bookmarks()`` - list bookmarks (Mercurial only)\n* ``tags()`` - list tags\n* ``heads()`` - list all branches, bookmarks, tags, etc.\n* ``tip()`` - find the tip of a named head\n* ``empty()`` - determine if the repository contains any commits\n* ``__len__()`` - count the number of commits in the repository\n* ``__contains__()`` - determine if the repository contains the given revision\n* ``log()`` - get commit logs\n* ``changed()`` - list files that were changed in a given revision\n* ``pdiff()`` - get diff that a given revision introduced\n* ``diff()`` - get diff between any two revisions\n* ``ancestor()`` - find most recent common ancestor of any two revisions\n* ``blame()`` - blame (a.k.a. annotate) lines of a file\n* ``canonical_rev()`` - get the canonical revision identifier\n* ``compose_rev()`` - compose a revision identifier which encodes branch and revision\n* ``clone()`` - clone an existing repository\n* ``private_path`` - a path in the repository where untracked data can be stored\n* ``dump()`` - create a Subversion dumpfile (Subversion only)\n* ``load()`` - load a Subversion dumpfile (Subversion only)\n\nOperations that are not natively supported by the underlying version control\nsystem are implemented in this library.\n\nExample\n-------\n\n >>> from pprint import pprint\n >>> import anyvcs\n >>> repo = anyvcs.open('/path/to/repo')\n >>> repo.branches()\n ['1.0_develop', '1.0_master', 'develop', 'master']\n >>>\n >>> log = repo.log(limit=3)\n >>> pprint([commit.message for commit in log])\n [\"Merge branch 'release/1.2.0' into develop\\n\",\n \"Merge branch 'release/1.2.0'\\n\",\n 'add README symlink to keep python happy\\n',\n 'add copyright information\\n']\n >>>\n >>> ls = repo.ls('master', '/')\n >>> pprint(ls)\n [{'name': '.gitignore', 'path': '.gitignore', 'type': 'f'},\n {'name': 'AUTHORS', 'path': 'AUTHORS', 'type': 'f'},\n {'name': 'COPYING', 'path': 'COPYING', 'type': 'f'},\n {'name': 'COPYING.LESSER', 'path': 'COPYING.LESSER', 'type': 'f'},\n {'name': 'LICENSE', 'path': 'LICENSE', 'type': 'f'},\n {'name': 'MANIFEST.in', 'path': 'MANIFEST.in', 'type': 'f'},\n {'name': 'README', 'path': 'README', 'type': 'l'},\n {'name': 'README.md', 'path': 'README.md', 'type': 'f'},\n {'name': 'RELEASE-NOTES.txt', 'path': 'RELEASE-NOTES.txt', 'type': 'f'},\n {'name': 'anyvcs', 'path': 'anyvcs', 'type': 'd'},\n {'name': 'setup.py', 'path': 'setup.py', 'type': 'f'},\n {'name': 'tests.py', 'path': 'tests.py', 'type': 'f'}]\n\nCompatibility\n-------------\n\npython-anyvcs should work with the following software versions:\n\n* Python: 2.6 or later (including 3.0 or later)\n* Git: 1.7.0 or later\n* Mercurial: 1.6.1 or later\n* Subversion: 1.5 or later", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ScottDuckworth/python-anyvcs", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "anyvcs", "package_url": "https://pypi.org/project/anyvcs/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/anyvcs/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/ScottDuckworth/python-anyvcs" }, "release_url": "https://pypi.org/project/anyvcs/1.4.0/", "requires_dist": null, "requires_python": null, "summary": "An abstraction layer for multiple version control systems.", "version": "1.4.0" }, "last_serial": 1186587, "releases": { "1.0.1": [], "1.1.0": [], "1.1.1": [], "1.2.0": [ { "comment_text": "", "digests": { "md5": "057391dd5579e3b2b4c4ca950801323c", "sha256": "788750bd83abed3792577a633193bf50ded7ac4a2481d72a1cd6e2b61e0fc846" }, "downloads": -1, "filename": "anyvcs-1.2.0.tar.gz", "has_sig": false, "md5_digest": "057391dd5579e3b2b4c4ca950801323c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28325, "upload_time": "2013-11-12T14:43:49", "url": "https://files.pythonhosted.org/packages/82/3d/1bc31dca63f53300cdb8971c234548feeb3f8737ee92a64fb974659e5cbc/anyvcs-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "175acd2fa2dba6708574e6ffed4c9731", "sha256": "35c3cfc6e2aa7b09dab3934cf111122623522dd1d3586555c45eba97519a3f61" }, "downloads": -1, "filename": "anyvcs-1.2.1.tar.gz", "has_sig": false, "md5_digest": "175acd2fa2dba6708574e6ffed4c9731", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30544, "upload_time": "2013-11-13T16:33:04", "url": "https://files.pythonhosted.org/packages/e8/4e/a5cf02518035e9f5a56af2f60543684d1dbf6165d4d764a88433d50457dd/anyvcs-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "de59156461c7d746693140000134a6b9", "sha256": "f094772eff204b7f5a54119e9817a97751351c4de9fb0713f17ba471088e3dbd" }, "downloads": -1, "filename": "anyvcs-1.2.2.tar.gz", "has_sig": false, "md5_digest": "de59156461c7d746693140000134a6b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32440, "upload_time": "2013-11-14T17:06:04", "url": "https://files.pythonhosted.org/packages/ce/36/f5e17efee6a2896016c4f041ecd9a1abe17b0fc935444d9ba4514b0f2bf8/anyvcs-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "98e8200456e88a7ac1f4224a4317a85e", "sha256": "898e1eed7b7b058c51d549fdbf7940fd55ed9211de35d530015192e7730ae378" }, "downloads": -1, "filename": "anyvcs-1.2.3.tar.gz", "has_sig": false, "md5_digest": "98e8200456e88a7ac1f4224a4317a85e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18064, "upload_time": "2013-12-16T19:27:46", "url": "https://files.pythonhosted.org/packages/dc/8c/d25b795b8adf1b897a7702bccc426a70f6cb0b9b319e62e2660b4dca1daa/anyvcs-1.2.3.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "20e3bd2e7f1289b97633f4829ea60dca", "sha256": "3535a88dc0d627dfc945af13f8890969788da48250e63da9a0d175cbe7455280" }, "downloads": -1, "filename": "anyvcs-1.3.0.tar.gz", "has_sig": false, "md5_digest": "20e3bd2e7f1289b97633f4829ea60dca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18288, "upload_time": "2013-12-19T21:30:08", "url": "https://files.pythonhosted.org/packages/7b/38/183f5f6e02908729f5bf7195e572e4a2216183b5f3ca15c76cae64a39c90/anyvcs-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "2709e4225b3203dd867bac1ce3085fd8", "sha256": "e79bf5815066df160fb4eea3aa665d0a405026d1fb03049bcf825bf808d08d89" }, "downloads": -1, "filename": "anyvcs-1.3.1.tar.gz", "has_sig": false, "md5_digest": "2709e4225b3203dd867bac1ce3085fd8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18714, "upload_time": "2014-01-21T19:26:45", "url": "https://files.pythonhosted.org/packages/8a/37/10f83c58c4dc4ac49d9ca4866ecb64eeb4266046b6a504ab8658a0f97ad5/anyvcs-1.3.1.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "ac0f9184138edaef8d5d444350e1929a", "sha256": "2872ccdc1fa9bdd8668a2c74c9930c9d2cd9c0a0d8144c4c1e5d19335dcbca05" }, "downloads": -1, "filename": "anyvcs-1.4.0.tar.gz", "has_sig": false, "md5_digest": "ac0f9184138edaef8d5d444350e1929a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20904, "upload_time": "2014-08-11T15:20:15", "url": "https://files.pythonhosted.org/packages/59/84/ed84e69682dff7f28dbb4f4fb5f369bf2cc67a0b80bac78f70b1a5b0ed6c/anyvcs-1.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ac0f9184138edaef8d5d444350e1929a", "sha256": "2872ccdc1fa9bdd8668a2c74c9930c9d2cd9c0a0d8144c4c1e5d19335dcbca05" }, "downloads": -1, "filename": "anyvcs-1.4.0.tar.gz", "has_sig": false, "md5_digest": "ac0f9184138edaef8d5d444350e1929a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20904, "upload_time": "2014-08-11T15:20:15", "url": "https://files.pythonhosted.org/packages/59/84/ed84e69682dff7f28dbb4f4fb5f369bf2cc67a0b80bac78f70b1a5b0ed6c/anyvcs-1.4.0.tar.gz" } ] }