Git workflows in `arc land` have been completely rewritten to fix issues on a large number of //unorthodox// or //creative// flows.
Mercurial, SVN, Git/SVN and Hg/SVN are not affected.
In particular:
- We try much harder to put you back where you started on failure, instead of stopping in the middle and asking you to resolve things.
- The author and author date are now preserved.
- You can land from a detached HEAD.
- You can land from a tag.
- You can land a branch onto itself.
- You can land onto a remote branch without having a local copy of that branch.
- You can land onto a remote branch with a local copy of the branch which isn't really that branch but is just some other branch which you've named the same thing as the other branch.
- Upstreams are resolved recursively until we find one in a remote, fail to reach a remote, or are trapped in a cycle.
- Remote and target selection behavior is now more explicit and more clearly communicated.
- `arc help land` is more descriptive and complete.
- After pushing, we now try to find a path from the local branch to the remote by following branch upstreams. If we can, we update them and then put you on the branch at the end of the path. The exact behavior here is complicated but the expectation is that it should generally do something reasonable no matter what the path between you and the remote is.
If you run into cases on the new flow that don't work well or where the workflow or error behavior are unclear, let us know.
For more context, see T3855, T9537, T8620, T4333, T9543, T9658, T9660 and T9506.