<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
Thanks for the excellent explanation, Andy!<BR>
 <BR>
 <BR>
Mitch.<BR>
 <BR>
 <BR>
 <BR>
------------------------<BR>
 <BR>
> Date: Thu, 26 Feb 2009 13:34:03 -0800<BR>> From: adi@hexapodia.org<BR>> To: maltman23@hotmail.com<BR>> CC: nils@shkoo.com; noisebridge-discuss@lists.noisebridge.net<BR>> Subject: Re: [Noisebridge-discuss] big led screen<BR>> <BR>> On Thu, Feb 26, 2009 at 01:16:18PM -0800, Mitch Altman wrote:<BR>> > For those of us who aren't familiar with it, could you say a little<BR>> > bit more about what Mercirial is? And how to use it? Is there a wiki<BR>> > page on our site about it?<BR>> <BR>> Mercurial is a Distributed Version Control System (DVCS) similar in<BR>> usage model to Git, the system used to manage the Linux kernel. (See<BR>> [1] below for why I recommend Mercurial over Git.)<BR>> <BR>> I recommend DVCS for all new software projects, rather than centralized<BR>> VCS systems like Subversion (SVN) or ancient, crufty systems like CVS or<BR>> (shudder) SourceSafe. There is a small additional cost to using DVCS in<BR>> some cases -- you have to think about local versus remote repositories<BR>> -- but the benefits are enormous. (See [2] below for one caveat.)<BR>> <BR>> The Mercurial wiki at http://www.selenic.com/mercurial/wiki/ has a lot<BR>> of great info and introductions for people who've used other systems.<BR>> <BR>> There's an illustrated intro to DVCS Concepts at<BR>> http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/<BR>> that provides more details about what all this stuff is.<BR>> <BR>> [1] Why Mercurial?<BR>> <BR>> I prefer Mercurial over Git for small projects because<BR>> 1. mercurial has a more friendly command line UI<BR>> 2. mercurial has fewer bizarre failure modes ('what do you mean I have<BR>> to "git reset --hard 689eaf05028f"?')<BR>> 3. mercurial has a more functional Windows port (although I still<BR>> recommend that Windows users simply run Ubuntu under VMWare Player<BR>> to do real software development rather than attempting to use Cygwin<BR>> or whatever.)<BR>> The downside of mercurial, though, is that it's somewhat slower than<BR>> git. Hg commands tend to take up to a second or two rather than git's<BR>> blazingly fast UI -- 50 millseconds (yes, I timed it!) for many<BR>> commands. And Hg has a somewhat slower repository engine due to being a<BR>> nearly-pure Python implementation rather than Git's insanely complicated<BR>> C engine, so really large projects like Linux are not a good fit.<BR>> <BR>> <BR>> [2] When should you use a centralized VCS rather than a DVCS?<BR>> <BR>> The one caveat to my "always use DVCS" mantra is that projects where<BR>> large files are repeatedly modified will explode any DVCS system's<BR>> repository size. So if you're checking in 100MB .avi files (which is<BR>> often a stupid idea, but sometimes makes sense, for example video<BR>> artists such as our own pvck/mediapathic) and repeatedly modifying them,<BR>> then using a centralized VCS may make more sense. The DVCS systems are<BR>> evolving, and there's a reasonable chance someone will come up with a<BR>> decent solution to this problem in the next 18 months, but for now,<BR>> check your large media files into SVN instead.<BR>> <BR>> -andy<BR><BR></body>
</html>