Fossil does all of this, and has a better VCS for my use case than git does. https://fossil-scm.org