Hello Siebrand,
Siebrand Mazeland wrote:
Hi Juliano,
Thank you for that elaborate analysis. Aside from functionality comparison,
I find one thing missing that would be important if the MediaWiki project
were to facilitate another tool for SCM: multi platform support. Can you add
some information on that, too, because I know that we have developers on
Linux, OS X, and Windows, and we wouldn't really like to exculde one of
those groups just because of the used SCM tool. Having proper clients on all
major platforms is one of the reasons I really like Subversion for...
Yeah, that is something that Subversion still shines bright compared to
all other tools.
If you don't mind using the command line in Windows, Git, Mercurial and
Bazaar all have good command line support, virtually the same between
different OSes. But usually, Windows users don't like the command line,
and here is where it makes a difference.
Git is only officially supported in Windows in Cygwin, which makes it
slow as a rock, and definitely no real Windows integration. Git itself
was not designed to run on non-Posix platforms.
Then there is the msysGit fork that strives to "fix" that, and have Git
compile on MingW32. The problem, again with Git original design, is that
msysGit end up depending on bash, perl, tcl, tk, vim and other GNU ports
from MingW32, most of these are aliens in a pure-Windows environment.
You mostly have to run msysgit in its own private bash shell, which
redefines the meaning of some Windows commands, like find, in order to
match those in Linux (that is expected from Git's porcelain). Git-svn is
another pain. MsysGit also offers virtually no Windows integration. It
comes with some standalone interface (git-gui, gitk), and there are
plans of a Tortoise-like shell integration called git-cheetah, not ready
for consumption.
People argue that Git works "fine" in Windows through msysGit, but
usually for people with good Linux experience, that fell comfortable in
a bash shell. Most Windows developers don't match this profile.
Mercurial provides *much* better Windows support, since it is designed
to run over Python with whatever it provides and making few assumptions
about the underlying operating system. Python is natively supported on
Windows, so the end result is much better than Git. It had a few
problems in the past (e.g. with filesystem case-insensitivity), but that
is fixed by now. Two-way Svn communication is still under development.
There is TortoiseHg, that provides Windows integration, and supports
most operations the user usually needs, but it's interface is currently
really ugly, in Gtk+ (not Windows GDI native), with buttons in strange
places, etc. It shares libraries with TortoiseSVN 1.5, and works really
well. It includes kdiff3, which is a great tool for merging.
Bazaar shares the same advantages of being written in Python with
Mercurial. Bazaar properly handles Unicode filenames in different
locales (something that both Git and Mercurial fail), and is the most
user-friendly of the three. TortoiseBzr is included with the default
Windows installer, has better i18n support (more friendly for
non-English speakers), and is really well polished compared to
TortoiseHg; but it is still experimental, and a lot of functionality is
either missing or broken. It has somewhat good two-way Svn communication.
And, in case you want to keep your central Subversion repository, there
is SVK. It works great in Windows, but is just a command-line tool.
There is no GUI, but you have the advantage that all your current
Subversion tools (specially, TortoiseSVN and Eclipse) are completely
usable in a distributed manner, without modifications. In this case you
use the SVK command-line to mirror, pull, push and merge, and Subversion
for the local branch development. Not really user-friendly, but works
well most of the time.
I have some big interest (as in scientific research interest) in version
control systems. I give presentations and short courses about VCSes to
teams of developers, most of them PHP, Java and C# developers, most of
them in Windows environment.
The first thing that I notice clearly is that Windows developers, who
don't have a lot of contact with Linux or open-source, don't care a lot
about distributed version control. For them, having a user-friendly,
feature-complete, fully-integrated UI like TortoiseSVN and Subeclipse is
way more important than being capable of sharing commits in a
distributed manner. They recognize the benefits of DVCSes, but they are
more objective: "Do I really need these specific features? Will them
give me a raise? No? So thanks."
Those who are more enthusiastic and want to jump into distributed
version control, they find Mercurial and Bazaar much easier (and saner)
to use than Git. I was once told that there is no point in spending too
much time dealing and learning about a single version control tool, even
though it offers more features (referring to Git over Hg), than doing
actual work.
That sounded sensible, and made me think about the fact that most DVCS
fuss came after Torvalds presentation (even though they weren't any news
for quite a time already), and mostly around Git, and mostly moved by
open-source enthusiasts. It really looks like the "Linus said so"
syndrome. Open-source enthusiasts tend to regard Torvalds as a deity,
and give him too much credibility, even when his mouth is just expelling
a lot of bullsh*t.
--
Juliano F. Ravasi ยทยท
http://juliano.info/
5105 46CC B2B7 F0CD 5F47 E740 72CA 54F4 DF37 9E96
"A candle loses nothing by lighting another candle." -- Erin Majors
* NOTE: Don't try to reach me through this address, use "contact@" instead.