Does sfdx force:source:deploy have major functionality that sfdx force:mdapi:deploy doesn't have?

The two commands are virtually identical, except that you can upload metadata in sfdx format instead of mdapi format. And yes, this includes deploying metadata and code to a namespace org used for managed package uploading (I use sfdx with my primary dev org, which has had a namespace for nearly a decade).


I’ve been playing with sfdx force:source:deploy today and I can see several things:

  • it’s possible to specify the package.xml manifest file as a parameter, which is a little bit better than when you go through sfdx mdapi (because you need to go through sfdx force:source:convert to convert sfdx source into mdapi format and this outputs whole sfdx project - without possibility to limit scope to certain items).
  • it has certain flaws - e.g. if you specify only one custom field in your manifest file - nevertheless it converts and deploys whole object
  • there is also sfdx force:source:delete which seem to be nice alternative for destructive change set (whatever is not tracked in git source gets deleted from an org)

Testing that further, finally I’m trying to set git-based deployments for sandbox based orgs, seem to be an interesting addition to previously available tools.