Currently, we have arc feature, which creates branches and bookmarks. This is aliased as arc branch and arc bookmark in Git and Mercurial respectively. There is a small amount special logic around the argument (arc feature X): we treat it as a plain branch/bookmark name in all cases, except when it is in the form D123, when we figure out which branch D123 lives on.
Some possible things we might want to do with this feature:
- It is not especially discoverable right now, and the name isn't especially clear (see T2920).
- Possibly, we should rename this to arc start.
- Possibly, we should make arc branch and arc bookmark be readonly (some discussion in the huge wall of text in D5357#6 and elsewhere on that diff).
- We may want to recognize arc feature T123 specially, to indicate that the branch fixes a specific task (some discussion in T2920#2 / T2920#3).
- e.g., arc start T123 would check the task state (make sure you own it or prompt you to claim it), print it out, and maybe mark it "in progress" after T1421 if we formalize that.
- arc diff would prefill Fixes T123 into the summary when diffed from a T123 branch or bookmark.
- Phrequent (a new time-tracking application) would benefit from integration here. It will probably add arc push (start work on something), arc pop (stop work on the thing on top of the stack) and arc peek (look at your stack) or similar. I don't want to enable this by default because I think time tracking is undesirable for most installs, but for installs that have do some kind of hourly billing to clients or generate an audit record of where time was spent, arc feature T123 could imply arc push T123 if some config was set.
Thus, my tentative plan is:
- Rename arc feature to arc start.
- Make arc bookmark / arc branch readonly (e.g., not extensions of or aliases for arc start).
- Recognize arc start T123 specially and build all the integrations mentioned above.
- Integrate with arc push after that is built, if configuration is set.
So:
- Does this sound terrible / awesome? In particular, the feature -> start rename is not really necessary, but I believe it will make the feature easier to discover and understand (and we can leave arc feature as an alias for a while) -- but it's somewhat disruptive and purely subjective.
- Are there other objects where integration would make sense?
- We can make arc start Dnnn do arc push integration too, but nothing else leaps out at me. Possibly arc start Dnnn for a revision you don't own could imply arc patch, I suppose ("start review of Dnnn"), but this might be overreaching.