In the wake of Microsoft's acquisition of GitHub I briefly entertained the thought of writing my own GitHub replacement, at which point I realized for the first time that the concept of a Pull Request is a GitHub thing, not a Git thing. Also at the same time we're having a discussion at work about migrating from TFS to Git. And I've always liked Mercurial best for my own development... Which leads me to ask:<p>1. Is there a protocol specification for source control (like OStatus or ActivityPub but for communicating with a source control server)?<p>2. If not, can we create one with a name like Open Version Control (OVC for short)?<p>3. Can we then agree on what constitutes the necessary data for a commit, push, user info, etc (so we can make Linus happy[1]) so plugins/extension can be made for Git, Mercurial, TFS, VSTS, SVN, etc such that I can use Mercurial for my local workflow and then use a command like `hg ovc push GitLab/FeatureFoo` and my local Mercurial repo pushes the state of my branch to the FeatureFoo branch on the GitLab remote I've defined (and the fact that GitLab is running Git and not Hg would be irrelevant).<p>At that point I couldn't care less how the hosting provider works internally; it also means an OVC-compliant host could give you the repo in any supported format you could want for local use (Hg for me; Git for Linux; VSS for Steve Ballmer, etc).<p>Would this be a useful development or would work on such a project be a waste of time?<p>[1] https://www.wired.com/2012/05/torvalds-github/
> 1. Is there a protocol specification for source control (like OStatus or ActivityPub but for communicating with a source control server)?<p>Yes - each SCM has at least one protocol. Here's the spec for subversion, <a href="https://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_ra_svn/protocol" rel="nofollow">https://svn.apache.org/repos/asf/subversion/trunk/subversion...</a> , here's the spec for Git: <a href="https://github.com/git/git/blob/9bfa0f9be3e718f701200a242ea04259a4dc4dfc/Documentation/technical/protocol-v2.txt" rel="nofollow">https://github.com/git/git/blob/9bfa0f9be3e718f701200a242ea0...</a><p>> 2. If not, can we create one with a name like Open Version Control (OVC for short)?<p>Unlikely. Each SCM operates in their own way that might be completely at odds with how another SCM works. Also the union of people that have the ability to do it and the incentive to do it is pretty much zero.<p>>3. Can we then agree on what constitutes the necessary data for a commit, push, user info, etc<p>Unlikely. See 2.