While I have learned to be mostly competent when it comes to git day-to-day tasks, I still miss hg for it's clean interface design and simplified workflow.
Agreed. It was a version control system for humans. Unfortunately the Hg people decided that the only stable interface would be the CLI, which made it infeasible to build the likes of GitHub around Hg, and GitHub (not Git itself) is what drove Git's success.
Can we stop with "github" narrative? I remember choosing git vs hg back when github wasn't a thing yet. We chose git on its own merits - it was much faster and had much better support for editing commits (it mattered for our code review processs). I am sure our org was not the only one.
(FWIW, I think hg may have caught up in those areas.. But this is too late now.)
Well, I don't think it's mere "narrative". I'm sure Git has its merits--performance, for example--but I seriously doubt this factored into most orgs' calculus considering most orgs probably wouldn't have hit any serious performance issues with hg. I strongly suspect that Git's popularity has a lot more to do with GitHub (and to a lesser extent, the popularity of the Linux kernel) than it did to any actual merit, but I don't think there's any evidence one way or another.
Mercurial had its own GitHub, though. Was it bitbucket? I don’t remember, but it had an equivalent, I think. I really think Linux and performance was a key factor.
The version control software market has evolved a lot since Bitbucket began in 2008. When we launched, centralized version control was the norm and we only supported Mercurial repos.
Github was launched in April 2008 [1]. Bitbucket is harder to find, but was definitely around by June 2008 [2]. Mercurial vs git was definitely the defining difference between the two initially, though the Rails ecosystem exploding onto Github made a huge adoption difference. git being faster + built in support for rebasing was big was well.
> Unfortunately the Hg people decided that the only stable interface would be the CLI
Citation needed for this.
Mercurial has the best VCS GUI I have ever seen, TortoiseHg. And there are quite a few web UIs supporting Mercurial, namely Kallithea and GitLab’s fork heptapod.net.
> Mercurial's internals are continually evolving to be simpler, more consistent, and more powerful, a process we hope will continue for the foreseeable future. Unfortunately, this process means we will regularly be changing interfaces in ways that break third-party code in various (mostly minor) ways. For the vast majority of third party code, the best approach is to use Mercurial's published, documented, and stable API: the command line interface.
Oh yeah, hg was way easier to learn, and IMO to understand. I'm very happy that I learned hg first and then picked up git; I think learning hg first was "easy mode" and then extending to git was easier to learn in turn.
Mercurial is much more straightforward to work with for most common workflows (but can still be extended for other, less common, workflows). I found that I can use mercurial effectively just by reading the built-in help. With git ... not so much.
Not that the documentation on git is bad necessarily, there's just so much of it. A simple demonstration of this might be something like:
% git help commit | wc -l
622
% hg help commit | wc -l
59
% hg help commit -v | wc -l
98
And some of the CLI syntax is rather arcane, too.
It's been years since I last used mercurial, so I'd have to go back to find more specific examples, but I struggled a lot more getting started with git than with mercurial.
Don't think of git as a version-control system. Think of it more as a distributed content-addressable object store database representing an acyclic directed graph[1].
Probably a joke. Unlike most other mentioned version control systems, Git doesn't
seem like it's going anywhere any time soon. But neither is Git eternal, heh.
For example, we will likely use Ethernet until the end of eternity. That's not because Ethernet is perfect. Far from it. But because whenever we come up with new networking technology, instead of coming up with a new name, too, we keep calling them Ethernet and just increment the version number.
I've been using git for twelve or so years. In the last few years I've been working on more projects with non-programmers and more projects involving media and it has made me dislike git more and more with every passing day. I really hope git is not where version control stops seeing innovation; there are a lot of projects for which it is ill-suited.
> In the last few years I've been working on more projects with non-programmers and more projects involving media and it has made me dislike git more and more with every passing day.
I think you give yourself an answer. Git is used by myriads of wannabe data scientist which only have a faint of CS understanding, create artifacts others have to clean after them.
Replace wannabe data scientist with whatever describes your situation.
> SCCS is an abbreviation for Source Code Control System. It is a maintenance and enhancement tracking tool. When a file is put under SCCS, the source code control system maintains the file and, when changes are made, identifies and stores them in the file with the original source code and/or documentation. As other changes are made, they too are identified and retained in the file.
> Retrieval of the original and any set of changes is possible. Any version of the file as it develops can be reconstructed for inspection or additional modification. History data can be stored with each version, documenting why the changes were made, who made them, and when they were made.