`arc feature D123` does not checkout branch for revision D123
Open, Needs TriagePublic

Description

The documentation for arc feature says:

# arc help feature
          With name, it creates or checks out a branch. If the branch
          name doesn't exist and is in format D123 then the branch of
          revision D123 is checked out.

I have a local branch fix/lint with following commit at HEAD:

Fix linter errors/warnings
                        
 Summary:                                         
 No functional changes
                              
 Test Plan:
 * Checked that the new-app dialogue still shows the correct string
 * The other two changes were whitespace only      

 Reviewers: #...
                                                                      
 Differential Revision: https://.../D17

In this local repository, I issued to the following command while having checked out the master branch:

# arc feature D17
Branch D17 set up to track local branch master.                  
Switched to a new branch 'D17'

I would have expected arcanist to checkout the fix/lint branch, instead of creating a new branch, because there already exist a branch containing Differential Revision: .../D17.

I am using latest stable version of arcanist/libphutil:

# arc version
arcanist e17fe43ca3fe6dc6dd0b5ce056f56310ea1d3d51 (21 Oct 2016)
libphutil b4f866bd75ec138397a16337bc5d326e586a6276 (18 Nov 2016)

Trace:

# arc --trace feature D17
 ARGV  '.../phabricator/arcanist/bin/../scripts/arcanist.php' '--trace' 'feature' 'D17'
 LOAD  Loaded "phutil" from ".../phabricator/libphutil/src".
 LOAD  Loaded "arcanist" from ".../phabricator/arcanist/src".
Config: Reading user configuration file ".../.arcrc"...
Config: Did not find system configuration at "/etc/arcconfig".
Working Copy: Reading .arcconfig from ".../.arcconfig".
Working Copy: Path "..." is part of `git` working copy "...".
Working Copy: Project root is at "...".
Config: Did not find local configuration at ".../.git/arc/config".
>>> [0] <exec> $ git for-each-ref --format='%(refname)%01%(objectname)%01%(committerdate:raw)%01%(tree)%01%(subject)%01%(subject)%0a%0a%(body)%01%02' -- refs/heads
<<< [0] <exec> 5,724 us
>>> [1] <exec> $ git symbolic-ref --quiet HEAD
<<< [1] <exec> 5,161 us
>>> [2] <conduit> differential.querydiffs() <bytes = 73>
>>> [3] <http> https://.../api/differential.querydiffs
<<< [3] <http> 170,969 us
<<< [2] <conduit> 171,370 us
>>> [4] <exec> $ git checkout --track -b 'D17'
<<< [4] <exec> 6,216 us
Branch D17 set up to track local branch master.
Switched to a new branch 'D17'

Question: Is arc feature supposed to work in the way I expected? If not, would it be possible to clarify the arc help documentation?

urzds created this task.Nov 22 2016, 10:12 AM
eadler added a project: Restricted Project.Nov 24 2016, 7:11 AM
urzds added a comment.Jan 3 2017, 12:16 PM

Somewhat related to T4706.