{ "info": { "author": "Mozilla", "author_email": "conduit-team@mozilla.com", "bugtrack_url": null, "classifiers": [], "description": "# Wrapper around Phabricator's `arc` cli to support submission of a series of commits.\n\n## Installation\n\n`moz-phab` can be installed with `pip install MozPhab`.\n\nFor detailed installation instructions please see:\n\n- [Windows Install Instructions](https://moz-conduit.readthedocs.io/en/latest/mozphab-windows.html)\n- [Linux Install Instructions](https://moz-conduit.readthedocs.io/en/latest/mozphab-linux.html)\n- [macOS Install Instructions](https://moz-conduit.readthedocs.io/en/latest/mozphab-macos.html)\n\n## Configuration\n\n`moz-phab` has an INI style configuration file to control defaults: `~/.moz-phab-config`\n\nThis file will be created if it doesn't exist.\n\n```\n[ui]\nno_ansi = False\n\n[vcs]\nsafe_mode = False\n\n[git]\nremote =\n\n[submit]\nauto_submit = False\nalways_blocking = False\nwarn_untracked = True\n\n[patch]\napply_to = base\ncreate_bookmark = True\nalways_full_stack = False\n\n[updater]\nself_last_check = \narc_last_check = \nself_auto_update = True\n```\n\n- `ui.no_ansi` : never use ANSI colours (default: auto-detected).\n- `vcs.safe_mode` : use only safe VCS settings (default: false). Use `--safe-mode` \n option to switch it on for a one-time usage.\n- `git.remote`: comma separated string. Default remotes used to find the first\n unpublished commit. Default, empty string, means that a list of remotes will\n be read from `git remote` command.\n- `submit.auto_submit` : when true the confirmation prompt will be skipped\n (default: false).\n- `submit.always_blocking` : when true reviewers in commit descriptions will be marked\n as blocking. reviewers specified on the command line override this setting\n (default: false).\n- `submit.warn_untracked` : when true show a warning if there are uncommitted or\n untracked changes in the working directory (default: true)\n- `patch.apply_to` : [base/here] Where to apply the patches by default. If `\"base\"`\n `moz-phab` will look for the SHA1 in the first commit. If `\"here\"` - current\n commit/checkout will be used (default: base).\n- `patch.create_bookmark` : affects only when patching a Mercurial repository. If `True`\n `moz-phab` will create a bookmark (based on the last revision number) for the\n new DAG branch point.\n- `patch.always_full_stack` : when `False` and the patched revision has successors,\n moz-phab will ask if the whole stack should be patched instead. If `True`\n moz-phab will do it without without asking.\n- `updater.self_last_check` : epoch timestamp (local timezone) indicating the last time\n an update check was performed for this script. set to `-1` to disable this check.\n- `updater.arc_last_check` : epoch timestamp (local timezone) indicating the last time\n an update was performed for arc. set to `-1` to disable this check.\n- `self_auto_update` : when `True` moz-phab will auto-update if a new version is available.\n If `False` moz-phab will only warn about the new version.\n\n`moz-phab` can also be configured via the following environmental variables:\n- `DEBUG` : enabled debugging output (default: disabled)\n- `UPDATE_FILE` : when self-updating write to this file instead of \\_\\_file\\_\\_\n\n## Execution\n\nTo get information about all available commands run\n```\n $ moz-phab -h\n```\n\nAll commands involving VCS (like `submit` and `patch`) might be used with a\n`--safe-mode` switch. It will run the VCS command with only chosen set of extensions.\n\n### Submitting commits to the Phabricator\nThe simplest invocation is\n\n```\n $ moz-phab [start_rev] [end_rev]\n```\n\nIf no positional arguments (`start_rev`/`end_rev`) are given, the\nrange of commits is automatically determined, starting with the first\nnon-public, non-obsolete changeset (for Mercurial) or first unpublished commit\n(for Git) and ending with the currently checked-out changeset. If at least one\nargument is given `moz-phab` is following the underlying VCS's `log` behavior.\nThe first argument is interpreted differently in Mercurial (as inclusive) and\nGit (exclusive). If only one argument is given the end of range is again\ninterpreted as the currently checked-out changeset. If both arguments are\ngiven - the second one is interpreted as inclusive.\n\nBug IDs and reviewers are parsed out of commit messages by default.\nYou can set a reviewer as blocking by appending an exclamation mark to\nthe reviewer's nick, e.g. `r=foo!`. If `submit.always_blocking` is\nset to `true` (see above), reviewers will always be set to blocking\nregardless.\n\nA bug ID can also be set *for every revision in the series* with the\n`--bug` option, which overrides any bug IDs in commit messages.\nSimilarly, reviewers can be set *for every revision in the series*\nwith `--reviewer` (regular reviewers) and/or `--blocker` (blocking\nreviewers), which again overrides any reviewers in commit messages.\n\nRun `moz-phab submit -h` for more options for submitting revisions.\n\nTo submit updates to a commit series, run `moz-phab` in the same way\nwith the same arguments, that is, specifying the full original range\nof commits. Note that, while inserting and amending commits should\nwork fine, reordering commits is not yet supported, and deleting\ncommits will leave the associated revisions open, which should be\nabandoned manually. See\n[bug 1481539](https://bugzilla.mozilla.org/show_bug.cgi?id=1481539) for\nplanned fixes. Also note that \"fix-up\" commits are not yet supported;\nsee [bug 1481542](https://bugzilla.mozilla.org/show_bug.cgi?id=1481542).\n\n`moz-phab` will periodically check for updates and display a notice\nwhen a new version is available. To update `moz-phab`, run `moz-phab\nself-update`.\n\nNote that if you do not have Python in your path, you will need to run\n`/python /moz-phab` instead of `moz-phab`.\n\n### Downloading a patch from the Phabricator\n\n`moz-phab patch` allows patching an entire stack of revisions. The simplest\ninvocation is\n\n```\n $ moz-phab patch rev_id\n```\n\nTo patch a stack ending with the revision `D123` run `moz-phab patch D123`.\nDiffs will be downloaded from the Phabricator and applied using the underlying\nVCS (`import` for Mercurial or `apply` for Git). A commit for each revision will\nbe created in a new bookmark (Mercurial) or branch (Git).\n\nThis behavior can be modified with few options:\n\n- `--apply-to TARGET` Define the commit to which apply the patch:\n - `base` (default) find the base commit in the first ancestor of the revision,\n - `here` use the current commit,\n - `{NODE}` use a commit identified by SHA1 or (in Mecurial) revision number\n\n- `--raw` Print out the diffs of each revision starting from the oldest\n ancestor instead of applying to the repository. It can be used to patch the\n working directory with an external tool:\n `$ moz-phab patch D123 --raw | patch -p1`.\n\n- `--no-commit` Use the `git apply` command (also for Mercurial repos) to patch\n the diffs. No commit or branch is created.\n\n- `--no-bookmark` : used only when patching a Mercurial repository. If not\n provided - `moz-phab` will create a bookmark (based on the last revision number)\n for the new DAG branch point. The default behavior [is configurable](#configuration).\n\n- `--no-branch`: used only when patching a Git repository. If not provided -\n `moz-phab` will create a branch (based on the revision number). Otherwise\n commits will be added just on top of the *base commit* which might result\n in switching the repository to the 'detached HEAD' state.\n\n- `--skip-dependencies` : patch only one revision, ignore dependencies.\n\n### Running arc commands\n\n`moz-phab arc` allows running Arcanist commands indirectly:\n\n```\n$ moz-phab arc ARG [ARG ...]\n```\n\n`arc land --preview` will become `moz-phab arc land --preview`.\n\n## Reporting Issues\n\nWe use [Bugzilla](https://bugzilla.mozilla.org/) to track development.\n\nFile bugs in Bugzilla under\n[Conduit :: moz-phab](https://bugzilla.mozilla.org/enter_bug.cgi?product=Conduit&component=moz-phab).\n\n## Development\n\nWe have strict requirements for moz-phab development:\n\n- must only use standard libraries\n- must be a single file for easy deployment\n\nTests can be executed with `pytest`.\nIntegration tests require to have access to `git`, `hg` with `evolve` extension\nand `patch` commands.\n\nAll python code must be formatted with [black](https://github.com/ambv/black)\nusing the default settings.\n\nPull Requests are not accepted here; please submit changes with Phabricator.", "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/mozilla-conduit/review", "keywords": "", "license": "Mozilla Public License 2.0", "maintainer": "", "maintainer_email": "", "name": "MozPhab", "package_url": "https://pypi.org/project/MozPhab/", "platform": "", "project_url": "https://pypi.org/project/MozPhab/", "project_urls": { "Homepage": "https://github.com/mozilla-conduit/review" }, "release_url": "https://pypi.org/project/MozPhab/0.1.52/", "requires_dist": null, "requires_python": ">=3.5", "summary": "Phabricator review submission/management tool.", "version": "0.1.52" }, "last_serial": 5988400, "releases": { "0.1.43": [ { "comment_text": "", "digests": { "md5": "7bee36a69ddb1397b82596f846941711", "sha256": "def0f76bcabfb64e2dead45089fc34c850953b4f153e2db31cbc88d3846df654" }, "downloads": -1, "filename": "MozPhab-0.1.43.tar.gz", "has_sig": false, "md5_digest": "7bee36a69ddb1397b82596f846941711", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 49545, "upload_time": "2019-10-03T11:43:41", "url": "https://files.pythonhosted.org/packages/11/cf/1ad2be55ccce491f3ebac3270395680c5fe8b03c74b2e52237d82625b126/MozPhab-0.1.43.tar.gz" } ], "0.1.44": [ { "comment_text": "", "digests": { "md5": "577f3cace6450b6fe48d69d6428c12ff", "sha256": "b8d8f2df24f6317fa788e1db2b2bbceb86e25f7addba3162b47d20416f0d949b" }, "downloads": -1, "filename": "MozPhab-0.1.44.tar.gz", "has_sig": false, "md5_digest": "577f3cace6450b6fe48d69d6428c12ff", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 49653, "upload_time": "2019-10-03T11:53:46", "url": "https://files.pythonhosted.org/packages/13/f6/b16237925b7c8e81ef3f8f78e3cdbae86f4fd362b2acdc907b778f700693/MozPhab-0.1.44.tar.gz" } ], "0.1.45": [ { "comment_text": "", "digests": { "md5": "3b31908b5fbec1f7aa39f5eddf2146e5", "sha256": "4986e3f29a423514b7e379b7a3c74f44ceb2b961dfdc27cdbce9704c31a16c20" }, "downloads": -1, "filename": "MozPhab-0.1.45.tar.gz", "has_sig": false, "md5_digest": "3b31908b5fbec1f7aa39f5eddf2146e5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 49605, "upload_time": "2019-10-03T11:58:39", "url": "https://files.pythonhosted.org/packages/e1/20/5251c030d1ade39807e24c4c1da6c42e7bff721fbc1ec26288e7d2cf6601/MozPhab-0.1.45.tar.gz" } ], "0.1.46": [ { "comment_text": "", "digests": { "md5": "43ed92d26de696cecb90d68979adddf3", "sha256": "dadd3122c62b1b72237bf7cf928f5df83572ba5688aca44f016bfa0b112c79ff" }, "downloads": -1, "filename": "MozPhab-0.1.46.tar.gz", "has_sig": false, "md5_digest": "43ed92d26de696cecb90d68979adddf3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 49759, "upload_time": "2019-10-03T12:19:48", "url": "https://files.pythonhosted.org/packages/7c/4d/a7578841a1079bc17cf8602c8a3d3b6c64120efdf1e9e297b7b4529e121d/MozPhab-0.1.46.tar.gz" } ], "0.1.47": [ { "comment_text": "", "digests": { "md5": "c4b0348d6a42c3bc5386ac9c15f772e6", "sha256": "3ac4b913f1037548aff49975f69d94003d8814b7ee2e4630d0167e3762452bbe" }, "downloads": -1, "filename": "MozPhab-0.1.47.tar.gz", "has_sig": false, "md5_digest": "c4b0348d6a42c3bc5386ac9c15f772e6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 49798, "upload_time": "2019-10-04T10:39:47", "url": "https://files.pythonhosted.org/packages/e8/6b/73fc396a30bd68e3882d49cc4577eb5c2f8911c5d98a7e1c4353207947b8/MozPhab-0.1.47.tar.gz" } ], "0.1.48": [ { "comment_text": "", "digests": { "md5": "5a96759e152da4ad033d9c41ac465e5c", "sha256": "3226c659c375008a2c6cbd7a7db788661910ae6ad1862731b045db9a98314131" }, "downloads": -1, "filename": "MozPhab-0.1.48.tar.gz", "has_sig": false, "md5_digest": "5a96759e152da4ad033d9c41ac465e5c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 49831, "upload_time": "2019-10-04T11:15:59", "url": "https://files.pythonhosted.org/packages/1e/f1/e2136855acd7c9f24a5ed35e9efd223cb3ae079c79008a397f4407fb0a1e/MozPhab-0.1.48.tar.gz" } ], "0.1.49": [ { "comment_text": "", "digests": { "md5": "6609ca3e8cac1d7ba88f9661f71d27af", "sha256": "b5d9ddd6c52ac951e1b519eabdd9ff1dd5991b298a35c93ad6c5779580f927d7" }, "downloads": -1, "filename": "MozPhab-0.1.49.tar.gz", "has_sig": false, "md5_digest": "6609ca3e8cac1d7ba88f9661f71d27af", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 49847, "upload_time": "2019-10-04T11:18:38", "url": "https://files.pythonhosted.org/packages/3c/c5/0d5a4435fd31956bde2351879153b9e38a483ac3dbcc136b3bded06e46c2/MozPhab-0.1.49.tar.gz" } ], "0.1.50": [ { "comment_text": "", "digests": { "md5": "bff048f4862abdb39a3b322af9ca9b28", "sha256": "74b95e120e0fc5cde77d535f1779d78533afb64da1aaf971b1e81266fba17232" }, "downloads": -1, "filename": "MozPhab-0.1.50.tar.gz", "has_sig": false, "md5_digest": "bff048f4862abdb39a3b322af9ca9b28", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 49862, "upload_time": "2019-10-04T11:23:27", "url": "https://files.pythonhosted.org/packages/af/5c/d95df4731532aa151ed84339116e6fd4130abc93b09a3c45406164ad5316/MozPhab-0.1.50.tar.gz" } ], "0.1.51": [ { "comment_text": "", "digests": { "md5": "1cfc5f8a9477a7f7c033f5b59cc3be82", "sha256": "f7c6789a1e8213e0b2ca4510b9a7f451325fb3f1095f355800ed4ab391bf2c27" }, "downloads": -1, "filename": "MozPhab-0.1.51.tar.gz", "has_sig": false, "md5_digest": "1cfc5f8a9477a7f7c033f5b59cc3be82", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 49822, "upload_time": "2019-10-08T08:05:10", "url": "https://files.pythonhosted.org/packages/fc/4c/afb1a0cdf4cb52c5f4526ad469941e70064e6f16cffa66460e1915783e96/MozPhab-0.1.51.tar.gz" } ], "0.1.52": [ { "comment_text": "", "digests": { "md5": "83c9c4cb9c9790de4d9b950261128833", "sha256": "af3ef9070c3e3ea9318a8b2e3648796fb5fc83c1b1beaa2e649106ed51290f0a" }, "downloads": -1, "filename": "MozPhab-0.1.52.tar.gz", "has_sig": false, "md5_digest": "83c9c4cb9c9790de4d9b950261128833", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 49841, "upload_time": "2019-10-17T08:41:11", "url": "https://files.pythonhosted.org/packages/ef/3a/707095bf9992c638f84414ba6d87cc7b8c86147c9ebddc0dfc01a10edff5/MozPhab-0.1.52.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "83c9c4cb9c9790de4d9b950261128833", "sha256": "af3ef9070c3e3ea9318a8b2e3648796fb5fc83c1b1beaa2e649106ed51290f0a" }, "downloads": -1, "filename": "MozPhab-0.1.52.tar.gz", "has_sig": false, "md5_digest": "83c9c4cb9c9790de4d9b950261128833", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 49841, "upload_time": "2019-10-17T08:41:11", "url": "https://files.pythonhosted.org/packages/ef/3a/707095bf9992c638f84414ba6d87cc7b8c86147c9ebddc0dfc01a10edff5/MozPhab-0.1.52.tar.gz" } ] }