{ "info": { "author": "Damien", "author_email": "damien@dam.io", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License (GPL)", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ], "description": "git-word-blame\n-------\n\nShow word-by-word authors of a file\n\n## Demo\n\nExecuting `git word-blame git.c` on the `git` repository we get:\n\n* [word-blame-by-commit.html](https://dam.io/word-blame/git/word-blame-by-commit.html)\n* [word-blame-by-author.html](https://dam.io/word-blame/git/word-blame-by-author.html)\n* [authors_stats.tsv](https://dam.io/word-blame/git/author_stats.tsv)\n* [commit_stats.tsv](https://dam.io/word-blame/git/commit_stats.tsv)\n\n\n\n## Installation\n\n```\npip install git-word-blame\n```\n\n\n## Usage\n\n```\ngit word-blame \n```\n\nIt will produce the following files (by default in `/tmp/git-word-blame/`):\n\n```\n- author_stats.tsv # top authors by number of characters attributed to them\n- commit_stats.tsv # same for commits\n- word-blame-by-commit.html # hover on some text to see which commit created it\n- word-blame-by-author.html # same for authors\n- text-output # tokens grouped by authors as a grep-friendly output\n```\n\n\n## Authorship algorithms\n\nTwo algorithms are available:\n\n - `wikiwho` (**default**): coarse but more robust\n - `mwpersistence`: precise but with more false-positives\n\nTo change the engine used by `git word-blame`:\n\n```\ngit config --global word-blame.engine mwpersistence\n```\n\n\n## HTML output\n\nYou can choose between 3 themes for the HTML output: `black-and-white`, `solarized-dark`, `solarized-light`.\n\n```\ngit config --global word-blame.theme solarized-dark\n```\n\n\n\nBy default a git command is shown when clicking on the text, you can change this behavior and make it go to the diff online (Github/Framagit) directly:\n\n```\ngit config --global --bool word-blame.link-to-online-commit true\n```\n\n\n## Limits\n\n`git-word-blame` doesn't support **renames** for now and is only tested on files with a linear history.\n\nThere's also a default maxmum of `2000` commits processed. This can be removed with this command: `git config --global word-blame.limit 0`.\n\n`WikiWho` does not yet, to my knowledge, support attributing white-space, it's attributed to the token coming after it.\n\n## See also\n\n - https://github.com/wikiwho/WikiWho/ and https://github.com/wikiwho/WhoColor\n A word-by-word blame for Wikipedia with a well tested algorithm for prose (default algorithm)\n The HTML vizualisation of this project is heavily inspired by WhoColor\n\n - https://github.com/mediawiki-utilities/python-mwpersistence/\n An alternative authorship algorithm detection made also for Wikipedia\n\n - https://github.com/d33tah/wordblame\n Export Wikipedia articles to git to perform a word-by-word blame, it does that by\n putting each word in a separate line for each file in the history\n\n - https://github.com/lucadealfaro/authorship-tracking\n Another altenative not yet integrated\n\n - https://github.com/git-persistence/git-persistence\n A character-by-character authorship oriented towards scoring the authors on a whole repository\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://framagit.org/mdamien/git-word-blame/", "keywords": "", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "git-word-blame", "package_url": "https://pypi.org/project/git-word-blame/", "platform": "", "project_url": "https://pypi.org/project/git-word-blame/", "project_urls": { "Homepage": "https://framagit.org/mdamien/git-word-blame/" }, "release_url": "https://pypi.org/project/git-word-blame/0.0.7/", "requires_dist": [ "wikiwho", "mwpersistence", "lys", "GitPython" ], "requires_python": "", "summary": "word-by-word blame for git", "version": "0.0.7" }, "last_serial": 5229081, "releases": { "0.0.4": [ { "comment_text": "", "digests": { "md5": "05022a0dc241b06b0fdc7513c0b12924", "sha256": "4bc029cc5f5d37f92ac31db0f8c156220dcb2cd1ef1e8af8f330cb8966fee544" }, "downloads": -1, "filename": "git_word_blame-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "05022a0dc241b06b0fdc7513c0b12924", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19217, "upload_time": "2019-04-14T13:20:34", "url": "https://files.pythonhosted.org/packages/57/94/31fb33695ce40e65b496913570ef1803f6cfc6dab345c1366c8fc4eeb5c6/git_word_blame-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2f21672e4f57c1849dff5f7e666296b0", "sha256": "50e7db613dd5a9044f081878fa14bfb71a5ff2d9558a7163f6f384896b5e3ac3" }, "downloads": -1, "filename": "git-word-blame-0.0.4.tar.gz", "has_sig": false, "md5_digest": "2f21672e4f57c1849dff5f7e666296b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6177, "upload_time": "2019-04-14T13:20:36", "url": "https://files.pythonhosted.org/packages/ee/aa/32bb4919dd9084d619f4ffb2f77eda45698c2f10ab53bf2edd195a6b738f/git-word-blame-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "4836fcc24a505b09c8b12d478c1f69e7", "sha256": "900245c372354f40f0c5ead7712d7a5e182d8bace9fe3809e64569e8d5066ecc" }, "downloads": -1, "filename": "git_word_blame-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "4836fcc24a505b09c8b12d478c1f69e7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19686, "upload_time": "2019-05-05T15:26:37", "url": "https://files.pythonhosted.org/packages/b8/df/55470083a785cc2dc99ab080097288a5e06bebfefc14c291238941435ced/git_word_blame-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f21b0fd95f67d0e16dedf55a73132452", "sha256": "8c41c6683f8042fd7c5ade2f238b0cf94cc346be6c35fd3a465567396f3592b8" }, "downloads": -1, "filename": "git-word-blame-0.0.5.tar.gz", "has_sig": false, "md5_digest": "f21b0fd95f67d0e16dedf55a73132452", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6645, "upload_time": "2019-05-05T15:26:39", "url": "https://files.pythonhosted.org/packages/f5/1a/2289460ab174b33b0ce7dd87ad95ce7587c3203a427c2cd85441248fde9b/git-word-blame-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "e82eaf2ea42fc19547120d789296cd47", "sha256": "2412d5c4a6ea8a3b606ac51ee389c40471fd3b67ea5b827fd2c0c09929520109" }, "downloads": -1, "filename": "git_word_blame-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "e82eaf2ea42fc19547120d789296cd47", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19780, "upload_time": "2019-05-05T17:40:52", "url": "https://files.pythonhosted.org/packages/54/b6/46f27cebf21306884262c069e1222c8a62a97fd0e29ee9a0f4c63c3cdaa5/git_word_blame-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5d6127bed4f26b3006a36e6f928cb512", "sha256": "43381ba49c15bd270a620b584c1950fd05e1c66ef9b1828714527c2b04db44bc" }, "downloads": -1, "filename": "git-word-blame-0.0.6.tar.gz", "has_sig": false, "md5_digest": "5d6127bed4f26b3006a36e6f928cb512", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6833, "upload_time": "2019-05-05T17:40:54", "url": "https://files.pythonhosted.org/packages/9b/d8/a6fef8d20c2754be3577122ca6f90582eaaa229e8fa0ad165a6ea9b2ce6b/git-word-blame-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "2358ffa0671f2debf36537e57560527d", "sha256": "593c0d2b7787d99f28104a7595fe2c9e7a8517f54ebed27342ec5a6f0b190154" }, "downloads": -1, "filename": "git_word_blame-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "2358ffa0671f2debf36537e57560527d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19781, "upload_time": "2019-05-05T17:46:03", "url": "https://files.pythonhosted.org/packages/97/d2/da31d5258774312d4620ebb976611fda38757101a2a3c1492568b0c40b40/git_word_blame-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af34ebf5d25fe2ca47a741d6298c9399", "sha256": "8f5526f61348fe0f18249b9361600ab88922e9ae1e11f3a4af97fbe2645eceec" }, "downloads": -1, "filename": "git-word-blame-0.0.7.tar.gz", "has_sig": false, "md5_digest": "af34ebf5d25fe2ca47a741d6298c9399", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6823, "upload_time": "2019-05-05T17:46:05", "url": "https://files.pythonhosted.org/packages/63/a4/b12d10849773697cdc0ffc4b88f7fcb193dbcb6659c2fd4e0a2ac913b9b0/git-word-blame-0.0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2358ffa0671f2debf36537e57560527d", "sha256": "593c0d2b7787d99f28104a7595fe2c9e7a8517f54ebed27342ec5a6f0b190154" }, "downloads": -1, "filename": "git_word_blame-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "2358ffa0671f2debf36537e57560527d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19781, "upload_time": "2019-05-05T17:46:03", "url": "https://files.pythonhosted.org/packages/97/d2/da31d5258774312d4620ebb976611fda38757101a2a3c1492568b0c40b40/git_word_blame-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af34ebf5d25fe2ca47a741d6298c9399", "sha256": "8f5526f61348fe0f18249b9361600ab88922e9ae1e11f3a4af97fbe2645eceec" }, "downloads": -1, "filename": "git-word-blame-0.0.7.tar.gz", "has_sig": false, "md5_digest": "af34ebf5d25fe2ca47a741d6298c9399", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6823, "upload_time": "2019-05-05T17:46:05", "url": "https://files.pythonhosted.org/packages/63/a4/b12d10849773697cdc0ffc4b88f7fcb193dbcb6659c2fd4e0a2ac913b9b0/git-word-blame-0.0.7.tar.gz" } ] }