Generic backend for version-control systems.
Each backend should implement this signature.
Test whether the given repository is correctly initialized.
Fetch changes from upstream. This is supposed to put the changes in a staging area. Be aware that the remote URL might have been changed, so make sure to update accordingly.
Reset the master branch of the repository to match the remote repository state.
Create a backend from a VCS
implementation.