remove -t, -r now does depth-first

-t ended up being an awkward workflow, and depth-first is more intuitive

also improve version conflict error message
refactory repository logic into a better interface

now encapsulates the running of the command and any additional logic