I Just think that I could actually contribute code much faster if I didn't have to learn what is an almost entirely other subject.
views:
135answers:
6Systems you mentioned have different features so the gui would get very confusing if it had to support each of them.
For example git and hg does not have the notion of checking out (as in get it ready to modify) file before editing it - which is a good thing - but svn and cvs expect you to check out files before you modify them.
The underlying implementation is different as well so again the tool would have to have a completely different module for each system - I would hope that it is easier to have separate tools for each.
That said, there are tools that support more than one system like cvs and svn because they both have similar work flows. I have not yet seen tools that would work on cvs and say mercurial or svn and git.
I personally like to use specific gui for specific system because the abstraction usually hides some functionality, the most common user interface that I prefer to use is the command line anyway ...
learning a version control system (e.g. git) for the first time would take about a week or two. After that, each system should take you a few days only.
Not really a waste of time, quite the opposite, a very valuable investment. It will actually help you improve the way you manage your projects.
I've heard from a lot of people that once they learn git, they can't manage any project without it anymore (and I'm one of those people).
So do yourself a favor and learn the version control system for the project you want to contribute to.
Emacs
I don't know if it is what you are interested in, but Emacs comes with a unified but limited generic version control interface called VC. It works with various version control systems: CVS, RCS, Subversion, Git, Bazaar, Mercurial and others.
There is also third-party DVC package, which provides a generic Emacs interface to version control systems. Currently it supports bzr, hg, git, monotone, tla.
Not that I'm aware of.
However, the modern vc systems seem to be able to talk to other systems. For example, if you use mercurial, you can use hgsubversion to interact with a subversion repository. If you use git, you could use git-svn to do the same thing. These tools are used on the command line. I'm not aware of one that does cross-vc interaction in a GUI.
You could at least use something like tortoisehg most of the time, and drop to the command line to interact with git and svn.
Having said that, hg
can interact with a git
repo using hg-git
, and bzr
might be able to interact with both hg
and git
. (all of them can interact with svn).
I don't know how complete are bzr-git and bzr-hg, judging for the project descriptions, they can do anything except for pushing.
https://launchpad.net/bzr-git
https://launchpad.net/bzr-hg
There's also a git-bzr
project to allow one to use git
to pull/push from a bzr
repository.
http://github.com/kfish/git-bzr
The only thing which I didn't see yet is a git-hg
that allows you to interact with an hg repo from git.