Page MenuHomePhabricator

"arc start" / "arc feature" / "arc push" Discussion
Closed, ResolvedPublic


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.


  • 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.

Revisions and Commits

rARC Arcanist

Event Timeline

epriestley triaged this task as Normal priority.Apr 9 2013, 3:53 PM
epriestley added subscribers: epriestley, euresti, tido and 3 others.
  • I don't see a big reason for renaming arc feature to arc start but I'm not very good at naming.
  • What about killing arc bookmark and arc branch altogether in favor of arc feature? I don't like these aliases.
  • I'm all for arc feature T123. feature doesn't seem that awkward in this context so we can stick with it.
  • arc push for time tracking is a terrible name as it is very different from git push. What about just arc phrequent start, arc phrequent stop or arc timer start? I think it would be used rarely enough so the longer name wouldn't be a big problem.

Oh, the push point is good. Yeah, let's not do that.

I do sort of want a shortish command for it since installs which use it will probably use it frequently (ROFLOLHURRR) and no one likes making aliases, so I'm a little hesitant to shove it down into second-level commands, but maybe arc phrequent begin/show/end/clear or similar, plus a strong recommendation in the documentation to use arc or shell aliases if you use the feature, is good enough.

I think that arc start / stop can be used for Phrequent since I really don't like renaming arc feature to arc start. Mainly because in that scenario there's no arc stop, only arc diff or w/e, so it doesn't really make a lot of sense.

I'm not super keen on 'start'. arc feature is also used to switch between branches/bookmarks, so naming it 'start' seems a little strange in that scenario. You could almost avoid pop/push entirely though since using arc feature to switch branches would be equivalent to a pop+push.

arc feature T123 sounds reasonable, though I don't see many people choosing task numbers as their branch names right now.

Would like to throw some randomness into the mix:

arc open (we refer to this as "opening a branch", seems pretty natural to me)
arc takeoff (opposite of arc land? ok, admittedly probably too cute...)

arc close already exists and isn't the opposite of the proposed arc open (it's the opposite of arc todo). Possibly we should move arc todo to arc open.

D10586 implements the "arc feature T123". It will assign the task if it's free and tell you who owns it otherwise. (Creating the branch in both cases)

Personally i think

  • arc feature
  • arc diff
  • arc land

are nice.

Maybe the inline help in arcanist just needs some grouping/sorting of commands to better describe the workflow.

chad changed the visibility from "All Users" to "Public (No Login Required)".Jul 3 2015, 4:06 AM
epriestley claimed this task.

After D12336:

  • arc work [branch|bookmark|revision|task] starts or resumes work.
  • arc branches is a read-only workflow that always shows branches.
  • arc bookmarks is a read-only workflow that always shows bookmarks.