{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Software Development :: Version Control :: Git" ], "description": "[![Latest version on PyPI](https://img.shields.io/pypi/v/gitprivacy.svg)](https://pypi.org/project/gitprivacy/)\n[![Supported Python versions](https://img.shields.io/pypi/pyversions/gitprivacy.svg)](https://pypi.org/project/gitprivacy/)\n[![Build Status](https://travis-ci.org/cburkert/pyGitPrivacy.svg?branch=master)](https://travis-ci.org/cburkert/pyGitPrivacy)\n\n# git-privacy: Keep your coding hours private\n\nGit-privacy redacts author and committer dates to keep your coding hours more\nprivate. You can choose the level of redaction: only remove minutes and seconds\nfrom your dates or even hide day or month.\nThe original dates are encrypted and stored in the commit message in case you\nmight need them.\n\n\n## Installation\n\n pip3 install gitprivacy\n\nNote: Git-privacy requires Python version 3.6 or later.\n\n\n## Getting Started\n\n1. Add the following to `.git/config` and adapt it to your needs:\n```\n[privacy]\n\tmode = reduce\n\tpattern = \"ms\"\n\t#limit = 9-17\n\t#password = ...\n```\n\n2. Pick a redaction `pattern` from the following options:\n + M: Sets the month to January\n + d: Sets the day to the first day of the month\n + h: Sets the hour to midnight\n + m: Sets the minute to zero (full hour)\n + s: Sets the seconds to zero (full minute)\n3. Set an acceptable timestamp range (`limit`). Outliers are rounded towards\n the set limits, e.g., commits at 17:30 (5:30pm) are set to 17:00. Only full\n hours are currently supported. Omit the limits setting to disable.\n4. Set a `password` if you want to be able to recover the full-resolution timestamps.\n If no password is given, only the reduced timestamp will remain.\n5. Execute `git-privacy init`. This sets the necessary Git hooks.\n\n\n## Usage\n\n### Redaction of New Commits\n\nNew commits are automatically redacted if git-privacy is initialised in a repo.\nThis is achieve via a post-commit hook.\n\nIf you want to manually redact the last commit, run:\n\n git-privacy redate --only-head\n\n### View Unredacted Dates\n\nTo view the unredacted commit dates, git-privacy offers a git-log-like listing:\n\n git-privacy log\n\n### Bulk Re-dating of Commits\n\nTo redact and redate all commits of the currently active branch run:\n\n git-privacy redate\n\n**WARNING:** This will completely rewrite the history and will lead to\ndiverging commit histories.\n\n### Re-dating of Commits from a Startpoint\n\nYou can also limit the redate to all commits that succeed a given startpoint:\n\n git-privacy redate \n\nThis will redate all commits in the range `..HEAD` (see git rev-list for syntax details).\n\nFor example, you can use this to redate all commits of branch since it has been branched from `master` by invoking:\n\n git-privacy redate master\n\n## Optional: Timezone Change Warnings\n\nAdditionally you may install a pre-commit hook which currently checks if your timezone differs from the last commit.\nTo do so simply execute:\n\n git-privacy init --enable-check\n\n\n## Email Address Redaction\n\nImagine you want to publish a repository which contains some contributor's private email addresses.\nGit-privacy makes it easy to redact such addresses:\n\n git-privacy redact-email john@example.com paul@example.net\n\nYou can also specify individual substitutes:\n\n git-privacy redact-email john@example.com:john@bigfirm.invalid\n\nOr, you can use your GitHub username and GitHub's [noreply addresses](https://help.github.com/en/articles/about-commit-email-addresses) to still have your commit associated to account and get credit:\n\n git-privacy redact-email -g john@example.com:john\n\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://github.com/EMPRI-DEVOPS/git-privacy", "keywords": "git,privacy,timestamps", "license": "BSD", "maintainer": "Christian Burkert", "maintainer_email": "gitprivacy@cburkert.de", "name": "gitprivacy", "package_url": "https://pypi.org/project/gitprivacy/", "platform": "", "project_url": "https://pypi.org/project/gitprivacy/", "project_urls": { "Homepage": "https://github.com/EMPRI-DEVOPS/git-privacy" }, "release_url": "https://pypi.org/project/gitprivacy/1.3.0/", "requires_dist": [ "click (>=7)", "gitpython", "pynacl" ], "requires_python": ">=3.6", "summary": "Git wrapper redacting author and committer dates.", "version": "1.3.0" }, "last_serial": 5217309, "releases": { "1.1.1": [ { "comment_text": "", "digests": { "md5": "82c4ef39484dfc18565ccc8764374c62", "sha256": "49e6eb3113c907f3c2b4d1f8a0af823a1c4dec4ba3fde4b43408b84486c84225" }, "downloads": -1, "filename": "gitprivacy-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "82c4ef39484dfc18565ccc8764374c62", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10531, "upload_time": "2019-01-30T16:00:46", "url": "https://files.pythonhosted.org/packages/0e/b6/beadc2bb70b5b417667cb3381806c9930fc1b355150e830d0967b018765a/gitprivacy-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6244aa5c401bbcb55828eade1c3062d5", "sha256": "94ba01c16adb34e901901fb26b1f71d05770cf17d7c880333e7265ccbd58da4f" }, "downloads": -1, "filename": "gitprivacy-1.1.1.tar.gz", "has_sig": false, "md5_digest": "6244aa5c401bbcb55828eade1c3062d5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 8750, "upload_time": "2019-01-30T16:00:48", "url": "https://files.pythonhosted.org/packages/1b/05/6ad4519d52161d2fd17a8b8306aace20fc788e25da6bb7887654871ecece/gitprivacy-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "10325db5fb3c37baabb7e7396ca11398", "sha256": "d9d18916490652b552f8e4fa13adf84a9f3d2a1c153ead326fd52e550f070a16" }, "downloads": -1, "filename": "gitprivacy-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "10325db5fb3c37baabb7e7396ca11398", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 11086, "upload_time": "2019-02-08T19:59:02", "url": "https://files.pythonhosted.org/packages/9f/4e/d56a8ab5ae1be7d6f64887cc4cf4a33da8f35213515bb1acfb507be5a468/gitprivacy-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "569ed4ad60ed979ab16b4ae3d15f61e7", "sha256": "ee438fba2044f55140ecffc0642b15513d76b26b09104fe38650359c33db59a0" }, "downloads": -1, "filename": "gitprivacy-1.2.0.tar.gz", "has_sig": false, "md5_digest": "569ed4ad60ed979ab16b4ae3d15f61e7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 8895, "upload_time": "2019-02-08T19:59:04", "url": "https://files.pythonhosted.org/packages/29/3d/e84a28a5f5c629b54ab39b6d99eec53028fa93d9d79d3933b4c33079b386/gitprivacy-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "aecf670f196a5e45a3ae8840b5f5c4a5", "sha256": "061422865902b71fcb25eb5cb675042f34e26525d7ba14ffa183613ac8bca9d4" }, "downloads": -1, "filename": "gitprivacy-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "aecf670f196a5e45a3ae8840b5f5c4a5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16469, "upload_time": "2019-05-02T12:58:00", "url": "https://files.pythonhosted.org/packages/6e/4d/c111f39f0ed569bf47c9ff1f09b73798fbc08fcb789ca20ad6b4b9f81ac2/gitprivacy-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb7e7fd0345f86614a0325d86e1534a7", "sha256": "8aac1f5a40a0a41860d68f90a40aba789aae15402d96c172c04157f41e929221" }, "downloads": -1, "filename": "gitprivacy-1.3.0.tar.gz", "has_sig": false, "md5_digest": "eb7e7fd0345f86614a0325d86e1534a7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 12900, "upload_time": "2019-05-02T12:58:02", "url": "https://files.pythonhosted.org/packages/ba/2e/fb83b4cc0d68864b791afd9f6ec9d378e8ebd8cc906d979465e8e71b53c6/gitprivacy-1.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "aecf670f196a5e45a3ae8840b5f5c4a5", "sha256": "061422865902b71fcb25eb5cb675042f34e26525d7ba14ffa183613ac8bca9d4" }, "downloads": -1, "filename": "gitprivacy-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "aecf670f196a5e45a3ae8840b5f5c4a5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16469, "upload_time": "2019-05-02T12:58:00", "url": "https://files.pythonhosted.org/packages/6e/4d/c111f39f0ed569bf47c9ff1f09b73798fbc08fcb789ca20ad6b4b9f81ac2/gitprivacy-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb7e7fd0345f86614a0325d86e1534a7", "sha256": "8aac1f5a40a0a41860d68f90a40aba789aae15402d96c172c04157f41e929221" }, "downloads": -1, "filename": "gitprivacy-1.3.0.tar.gz", "has_sig": false, "md5_digest": "eb7e7fd0345f86614a0325d86e1534a7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 12900, "upload_time": "2019-05-02T12:58:02", "url": "https://files.pythonhosted.org/packages/ba/2e/fb83b4cc0d68864b791afd9f6ec9d378e8ebd8cc906d979465e8e71b53c6/gitprivacy-1.3.0.tar.gz" } ] }