mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-08 07:52:39 +01:00
354da1ddaa
Summary: Ref PHI1808. In Mercurial, we must save and restore bookmark state explicitly. - Save and restore bookmarks. - Clean up concepts in "arc-ls-markers" slightly, so we don't need separate "isCurrent" and "isActive" flags, hopefully. I believe the totality of Mercurial state is: - A (non-bare) working copy points at exactly one commit (which might be the empty/null commit, in an empty repository). - A working copy has exactly one active branch. - Each branch has zero or more heads. - Each head may be closed. - Each (non-null) commit belongs to exactly one branch. - Note that the active branch may have zero heads and zero commits which belong to it! - A working copy has zero or one active bookmark. To capture this, we now emit: - A list of branch heads. If a branch head is a working copy commit, that head is flagged as active. - A list of bookmarks. If a bookmark is the current bookmark, that bookmark is flagged as active. - A single "branch-state" virtual marker. This covers the case where you have run "hg branch X" to create X, but no objects in the working copy actually correspond to X yet. It also covers the case where you are on a concrete branch, but not any head of that branch. - A single "commit-state" virtual marker. This always shows the current commit in the working copy. Test Plan: - Useful states to test are: - Empty repository (not all commands currently work here). - Normal repository, on a bookmark. - Normal repository, no bookmark. - "hg up 123" to update to somewhere in history. - "hg branch X", to start a new branch with no commits. - Ran "arc branches" and "arc bookmarks" in various states. Saw generally sensible output. - Ran "arc land --hold ..." in various states against a failing remote. Saw generally sensible output, and saw working properly restored to the original state. Differential Revision: https://secure.phabricator.com/D21396 |
||
---|---|---|
.. | ||
arcanoid | ||
hg | ||
init | ||
lib | ||
shell | ||
unit | ||
xhpast |