On Thu, Feb 25, 2016 at 5:54 AM, David Quintana (gigaherz) gigaherz@gmail.com wrote:
I think the real goal with moving to a platform such as github is reducing the entry barriers for new contributors. As it has been mentioned already, almost all projects who moved from SVN with "send patches" contribution system, to Git/Hg with Pull Requests have got non-negligible growth in contributions.
The reason I'd agree with using github as a target, is simply their svn bridge that allows developers who want to avoid git to still commit to a fork with SVN and be able to send pull requests afterward.
I have no experience with Hg beyond cloning one or two repositories that I needed code from (years ago), so I don't know how they compare feature-wise, or what the best GUI interfaces are for it. I do however know that without tortoiseGit, I'd probably still be pushing to remain on SVN.
There are several excellent graphical interfaces for Mercurial. The most popular one is TortoiseHg[0], which provide desktop shell integration like TortoiseSVN and TortoiseGit do. For those who don't care for shell integration, but want a good graphical workflow, there's Atlassian SourceTree[1] (which also works for Git). Smart(Git/Hg)[2] is a lesser-known alternative to SourceTree.
On the IDE integration front, Mercurial support is integrated into CLion[3], NetBeans[4], and two actively maintained Visual Studio source control extensions[5][6].
Other frontends and integration extensions are listed on the Mercurial site[7].
And for anyone reading this who knows SVN but hasn't really learned to use DVCSs yet, there is one key concept that makes all the difference for someone used to SVN to understand how git works: the fact that the operations you normally do with SVN are THE SAME on git, they just work on the local repository clone, instead of the server:
Svn checkout -> git checkout from local clone Svn commit -> git commit to local clone Svn diff -> git diff from local clone ...
Git simply has a separate set of concepts for interacting with remotes: Clone, Pull, Fetch, Rebase, Push, Force-push, Squash, etc. The whole thing becomes much less confusing if you get that idea.
And this is all true for Mercurial, as well. Virtually all DVCSes work in this manner (though the syntax and semantics might slightly differ).
[0]: http://tortoisehg.bitbucket.org/ [1]: https://www.sourcetreeapp.com/ [2]: http://www.syntevo.com/smartgit/ [3]: https://www.jetbrains.com/clion/help/using-mercurial-integration.html [4]: http://wiki.netbeans.org/MercurialVersionControl [5]: http://www.newsupaplex.pp.ru/hgscc_news_eng.html [6]: http://visualhg.codeplex.com/ [7]: https://www.mercurial-scm.org/wiki/OtherTools