{ "info": { "author": "Rick Harris", "author_email": "rconradharris@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: Apache Software License", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2.6" ], "description": "================================\nply - git-based patch management\n================================\n\n\nDescription\n===========\n\n``ply`` is a utility to manage a series of patches against an upstream\nproject. These patches are stored as files in a separate git repositiory so\nthat they can themselves be versioned. These patches can then be applied to\ncreate a patched version of the code to be used for packaging and deployment.\n\n\nConcepts\n========\n\nThe upstream project resides in the `upstream-repo` (UR). Your local\ncheckout of the `upstream-repo` is called the `working-repo` and is where\nyou'll do most of your work: you'll make changes, commit them, and then run\n``ply save`` to create a new set of patches, called a `patch-series`.\n\nThe patches are stored in the `patch-repo` (PR), a separate ``git`` repo\nthat is linked to the `working-repo` using the ``ply.patchrepo`` ``git``\nconfig.\n\n\nUsage\n=====\n\n* Initialize a new `patch-repo` which initializes the new ``git`` repo and\n commits an empty ``series`` file::\n\n ply init .\n\n* Link `working-repo` to a `patch-repo`::\n\n ply link ../my-patch-repo # from within the working-repo\n\n* Unlink `working-repo` from current `patch-repo`::\n\n ply unlink\n\n* Check that status of a `working-repo`::\n\n ply status\n All patches applied\n\n* Save set of commits to the `patch-repo`::\n\n # Without --since, any 'new' patches (patches that follow applied patches)\n # will be saved\n ply save\n\n # Save only the last commit into the 'foo' subdirectory\n ply save --since=HEAD^ --prefix=foo HEAD^\n\n* Rollback `working-repo` to match upstream::\n\n ply rollback\n\n* Restore `patch-series`::\n\n ply restore\n\n* Resolve a failed merge and continue applying `patch-series`::\n\n ply resolve\n\n* Skip a patch that has already merged upstream. In addition to performing a\n ``git am --skip``, this will also remove the relevant patch from the\n `patch-repo`::\n\n ply skip\n\n Note: If the upstream patch is an exact match of the version in the\n `patch-repo`, ``ply`` will automatically remove the patch from the\n `patch-repo`.\n\n* Perform a health-check on the `patch-repo`. This ensures that all of the\n patches in the `patch-repo` are accounted for in the `patch-series`::\n\n ply check\n OK\n\n* Create a `DOT graph `_\n representation of patch dependencies::\n\n ply graph\n\n The output of this can be piped into ``dot`` to generate a PNG file::\n\n ply graph | dot -Tpng > dependencies.png\n\n\n`ply` vs X?\n===========\n\nTools for managing patches have existed for a while, so why create another?\n\nThe short answer is:\n\n``quilt`` deals in patch-files which can be versioned but doesn't understand\nversion-control. This orthogonality, in some respect, is elegant, but is a\nhassle in day-to-day use. Why checkpoint files in ``quilt`` when your version\ncontrol system already does that for you?\n\n``stgit`` (stacked-git) understands version control but stores patches as\ncommit objects, not as patch files. This means you can't version your patches,\nmaking it impossible to rollback when things go awry.\n\n``ply`` blends these two tools together to create a tool that understands\nversion-control but at the same time stores patches as files which can\nthemselves be versioned.\n", "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/rconradharris/ply", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "plypatch", "package_url": "https://pypi.org/project/plypatch/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/plypatch/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/rconradharris/ply" }, "release_url": "https://pypi.org/project/plypatch/0.4.1/", "requires_dist": null, "requires_python": null, "summary": "Ply: Git-based Patch Management", "version": "0.4.1" }, "last_serial": 1287570, "releases": { "0.2.2": [ { "comment_text": "", "digests": { "md5": "27a2bdbb999af8ebd3b5e950086fb5fd", "sha256": "8862f3b98da2fc5c952c20b5fa4cbbe3de308da9eba57bdbea33a97d4e39b86c" }, "downloads": -1, "filename": "plypatch-0.2.2.tar.gz", "has_sig": false, "md5_digest": "27a2bdbb999af8ebd3b5e950086fb5fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7410, "upload_time": "2012-12-10T22:54:25", "url": "https://files.pythonhosted.org/packages/1d/8c/1b86e9b299209cb0edaec68e1683c1e231b6e345ebb91735a35ae36619f8/plypatch-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "1d7b60b300f0171665ba0fe9a00d7e6c", "sha256": "f17333dc345885265544c6fd89cdd1d23b2b7c54489e992f16287c954de837d3" }, "downloads": -1, "filename": "plypatch-0.2.3.tar.gz", "has_sig": false, "md5_digest": "1d7b60b300f0171665ba0fe9a00d7e6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7615, "upload_time": "2012-12-10T23:21:26", "url": "https://files.pythonhosted.org/packages/30/21/905090a39fa03256f8dd8d679dcc32f1c16d52b896558515b9fa04d5dff1/plypatch-0.2.3.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "1f10709977d5b71128bfe58663eedab4", "sha256": "1d6935a6225069e7d88dd91d4179a8260d47b883115dcc273bae25e2f6745339" }, "downloads": -1, "filename": "plypatch-0.2.5.tar.gz", "has_sig": false, "md5_digest": "1f10709977d5b71128bfe58663eedab4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9002, "upload_time": "2012-12-14T23:52:45", "url": "https://files.pythonhosted.org/packages/3d/38/9a1d57e3dcc3e7072124bb13b1a9dcbadd4b4e44330a44cf760380c9dc54/plypatch-0.2.5.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "79a82d2eb9d95fa440fbe65951c45354", "sha256": "d003d63bb68edc461fdce79dab87496f11d89695edfd3b3ee1c637d123924080" }, "downloads": -1, "filename": "plypatch-0.3.3.tar.gz", "has_sig": false, "md5_digest": "79a82d2eb9d95fa440fbe65951c45354", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11460, "upload_time": "2013-05-03T15:47:28", "url": "https://files.pythonhosted.org/packages/81/24/3768a043944abe348ad68c1e1b8ae55094bc09d4916de276c20de2ee4d80/plypatch-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "e72d22422d708baaa2dd6ae28584f437", "sha256": "e30dc5e605ddbfde0811672d2a06998ccdb06d2a23c6eacee0529580614c205d" }, "downloads": -1, "filename": "plypatch-0.3.4.tar.gz", "has_sig": false, "md5_digest": "e72d22422d708baaa2dd6ae28584f437", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12313, "upload_time": "2013-06-17T21:12:01", "url": "https://files.pythonhosted.org/packages/cb/f9/935f8c57c529f03032357c3579805920bdf847d8a1f05644b62f0ade9229/plypatch-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "db243bd91a624f54fe1cfecc3a814c64", "sha256": "8c2ec9d2a66a75f597ccbb509b78ca8fa3f169caf31ecd6c3ebb9a99139fa1b0" }, "downloads": -1, "filename": "plypatch-0.3.5.tar.gz", "has_sig": false, "md5_digest": "db243bd91a624f54fe1cfecc3a814c64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12535, "upload_time": "2013-07-03T20:38:09", "url": "https://files.pythonhosted.org/packages/7d/60/24bd1d8bed087fb18fb8218763c31d788155d10732efc85b9c6cc9a9fc5e/plypatch-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "4b1bea302ada0eea84ac7985958b00e6", "sha256": "3f33fa9de9b9d7d9616c48421d8f9e3b5479401448bacb437dc52ea1916e7380" }, "downloads": -1, "filename": "plypatch-0.3.6.tar.gz", "has_sig": false, "md5_digest": "4b1bea302ada0eea84ac7985958b00e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14041, "upload_time": "2013-11-18T20:19:13", "url": "https://files.pythonhosted.org/packages/1c/dc/fb5f7c59dd80652cc3174876e0422ae14c20d67c6de884770cb6f333d1b9/plypatch-0.3.6.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "4eab32772dbd297722af56b1d6e102d4", "sha256": "84d1afc02d5ce4dedc184e089dbbc37be116a3be132ed8d1c492dee459b969b1" }, "downloads": -1, "filename": "plypatch-0.3.7.tar.gz", "has_sig": false, "md5_digest": "4eab32772dbd297722af56b1d6e102d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14095, "upload_time": "2014-03-12T22:52:39", "url": "https://files.pythonhosted.org/packages/32/0a/fbb574068c88ec260fda1d02bc0b65bbd4f02775817f884e9f4eaefc628d/plypatch-0.3.7.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "fa2273b9cbef32b7a0a54ff22bf51b22", "sha256": "27e0050f00ae923bd2d55c2c0727d4c9bb82d1b52ce22b72a8d4f346b79529c3" }, "downloads": -1, "filename": "plypatch-0.4.0.tar.gz", "has_sig": false, "md5_digest": "fa2273b9cbef32b7a0a54ff22bf51b22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17834, "upload_time": "2014-10-17T20:33:45", "url": "https://files.pythonhosted.org/packages/e6/9f/7a473cdc969f0c743e94bfb2e8d62f31c8871821a261b923c3cb805a1204/plypatch-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "1fe9084cb44f125913d13b9dd2f63b96", "sha256": "7f1da36d8a4d3515efd7a1239adac7540080d471b8a32983ba04a37931f60701" }, "downloads": -1, "filename": "plypatch-0.4.1.tar.gz", "has_sig": false, "md5_digest": "1fe9084cb44f125913d13b9dd2f63b96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18504, "upload_time": "2014-10-29T19:29:35", "url": "https://files.pythonhosted.org/packages/95/04/38f48f36466938758669c12e0c320fdfd5b213ab7fc803d9627bae7568e8/plypatch-0.4.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1fe9084cb44f125913d13b9dd2f63b96", "sha256": "7f1da36d8a4d3515efd7a1239adac7540080d471b8a32983ba04a37931f60701" }, "downloads": -1, "filename": "plypatch-0.4.1.tar.gz", "has_sig": false, "md5_digest": "1fe9084cb44f125913d13b9dd2f63b96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18504, "upload_time": "2014-10-29T19:29:35", "url": "https://files.pythonhosted.org/packages/95/04/38f48f36466938758669c12e0c320fdfd5b213ab7fc803d9627bae7568e8/plypatch-0.4.1.tar.gz" } ] }