<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Whose Distributed VCS Is The Most Distributed?</title>
	<atom:link href="http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/feed" rel="self" type="application/rss+xml" />
	<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed</link>
	<description>Viewpoints on technology, society, and government</description>
	<lastBuildDate>Tue, 14 May 2013 02:23:41 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<item>
		<title>By: Curt Sampson</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-4935</link>
		<dc:creator>Curt Sampson</dc:creator>
		<pubDate>Mon, 30 Nov 2009 06:18:24 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-4935</guid>
		<description><![CDATA[This post seems to have gone a bit wrong in certain parts of its underlying thinking, which makes the conclusions slightly unfair, in my mind.

The basic problem here is that Subversion is not a distributed VCS, in the common sense of the word that means &quot;everybody has their own, separate and different copy of the repository.&quot; Subversion works on the single-central-repo model, and shouldn&#039;t be included in this list at all, if being able to have disconnected operation or not have a shared &quot;master&quot; repository is a requirement.              
If you want to compare working within Subversions central-repo model to working within the distributed model of another VCS, that can be a fair enough comparison. But you need to work within the strengths of each VCS. A DVCS would lose on most counts to Subversion if you used Subversion&#039;s working model within a DVCS.

In that light, how does Subversion compare? I&#039;ll be making some specific references to Git in this comparsion since, out of this list, Subversion and Git are the two VCSs I&#039;m most familiar with.  

1. I&#039;m not clear what &quot;the fundamental method of collaboration must be a branch&quot; really means, myself. If you need to be able to create commits that do not go to the master repo, Subversion of course fails completely here; it&#039;s not a DVCS! But as far as updates from the central server being a merge into a local branch of work, yes, that&#039;s how Subversion works. Think of your working copy as a (very short) local branch, and that&#039;s exactly how `svn update` works. You can see this as a one-step version of doing a `git stash`, `pull` and `stash pop`, with the provisio that once you&#039;ve done the `svn update`, it&#039;s more work to try to back out of it (though it can be done).

2. Branching is quite cheap in Subversion; it&#039;s just an `svn cp` with two repository URLs. It&#039;s pretty near as cheap as it gets, barring the necessary network I/O overhead. That&#039;s not to say that merging is going to be cheap, just creating a branch is.

3. Merging between branches is indeed poor in Subversion, as of 2006.  I understand it&#039;s improved a lot in the past couple of years. I&#039;ve not done enough of this to do a good comparision. 

4. No individidual merging of changesets. (I&#039;m not even clear on how this might work in any VCS, if there are conflicts, even if those conflicts are trivially resolved.)

5. Branching does preserve full history in Subversion, since the branch is part of the same repository, and you can easily trace back through the beginning of the branch back into the history that led to the branch point. No, Subversion of course does not support cross-repo branching, because there is only one repo. Th
e question of whether it does or not doesn&#039;t make sense in the Subversion world.

6. Merging does not, as of 2006, preserve full history in Subversion, since the merge is basically just a huge patch. (I generally note in the commit message the branch and revision from which I&#039;m merging when I merge across branches.) I understand in newer versions of Subversion this information is preserved automatically. 

7. Subversion does basically nothing off-line except let you compare your local changes to the working copy with the checked-out version, and revert them.

8. Subversion is indeed fast enough for general purpose use.

If you&#039;re working in an environment where you have a centralized, &quot;master&quot; repository which everybody updates frequently and updates from frequently, svn seems to compare reasonably well with the DVCSs except for merging, where as of 2006 it is a ways behind. (Someone else will have to explain what the latest versions of Subversion do to improve this.) It does have the advantage that the system and workflow, being fairly constrained, is in the circumstances generally a bit simpler to use than the DVCSs.]]></description>
		<content:encoded><![CDATA[<p>This post seems to have gone a bit wrong in certain parts of its underlying thinking, which makes the conclusions slightly unfair, in my mind.</p>
<p>The basic problem here is that Subversion is not a distributed VCS, in the common sense of the word that means &#8220;everybody has their own, separate and different copy of the repository.&#8221; Subversion works on the single-central-repo model, and shouldn&#8217;t be included in this list at all, if being able to have disconnected operation or not have a shared &#8220;master&#8221; repository is a requirement.<br />
If you want to compare working within Subversions central-repo model to working within the distributed model of another VCS, that can be a fair enough comparison. But you need to work within the strengths of each VCS. A DVCS would lose on most counts to Subversion if you used Subversion&#8217;s working model within a DVCS.</p>
<p>In that light, how does Subversion compare? I&#8217;ll be making some specific references to Git in this comparsion since, out of this list, Subversion and Git are the two VCSs I&#8217;m most familiar with.  </p>
<p>1. I&#8217;m not clear what &#8220;the fundamental method of collaboration must be a branch&#8221; really means, myself. If you need to be able to create commits that do not go to the master repo, Subversion of course fails completely here; it&#8217;s not a DVCS! But as far as updates from the central server being a merge into a local branch of work, yes, that&#8217;s how Subversion works. Think of your working copy as a (very short) local branch, and that&#8217;s exactly how `svn update` works. You can see this as a one-step version of doing a `git stash`, `pull` and `stash pop`, with the provisio that once you&#8217;ve done the `svn update`, it&#8217;s more work to try to back out of it (though it can be done).</p>
<p>2. Branching is quite cheap in Subversion; it&#8217;s just an `svn cp` with two repository URLs. It&#8217;s pretty near as cheap as it gets, barring the necessary network I/O overhead. That&#8217;s not to say that merging is going to be cheap, just creating a branch is.</p>
<p>3. Merging between branches is indeed poor in Subversion, as of 2006.  I understand it&#8217;s improved a lot in the past couple of years. I&#8217;ve not done enough of this to do a good comparision. </p>
<p>4. No individidual merging of changesets. (I&#8217;m not even clear on how this might work in any VCS, if there are conflicts, even if those conflicts are trivially resolved.)</p>
<p>5. Branching does preserve full history in Subversion, since the branch is part of the same repository, and you can easily trace back through the beginning of the branch back into the history that led to the branch point. No, Subversion of course does not support cross-repo branching, because there is only one repo. Th<br />
e question of whether it does or not doesn&#8217;t make sense in the Subversion world.</p>
<p>6. Merging does not, as of 2006, preserve full history in Subversion, since the merge is basically just a huge patch. (I generally note in the commit message the branch and revision from which I&#8217;m merging when I merge across branches.) I understand in newer versions of Subversion this information is preserved automatically. </p>
<p>7. Subversion does basically nothing off-line except let you compare your local changes to the working copy with the checked-out version, and revert them.</p>
<p>8. Subversion is indeed fast enough for general purpose use.</p>
<p>If you&#8217;re working in an environment where you have a centralized, &#8220;master&#8221; repository which everybody updates frequently and updates from frequently, svn seems to compare reasonably well with the DVCSs except for merging, where as of 2006 it is a ways behind. (Someone else will have to explain what the latest versions of Subversion do to improve this.) It does have the advantage that the system and workflow, being fairly constrained, is in the circumstances generally a bit simpler to use than the DVCSs.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Curt Sampson</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-4934</link>
		<dc:creator>Curt Sampson</dc:creator>
		<pubDate>Mon, 30 Nov 2009 05:46:04 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-4934</guid>
		<description><![CDATA[Now, in 2009, gitosis is fantastic for keeping &quot;master&quot; git repositories. The repositories are managed under a single account (though you could use multiple accounts, if you&#039;re a nervous sort). The configuration is a set of ssh public keys, each with an arbitrary name associated with it, and a configuration file describing who has what access (read or read/write) to which repositories. gitosis puts everybody&#039;s keys in the accounts .ssh/authorized_keys file with appropriate restrictions so that they can run only the server program, which uses the configuration file to serve requests within the access limits.

It also supports using git-daemon for public access, as well, again controlled through the configuration file.

Gitosis was one of the big features that convinced me to switch to git.]]></description>
		<content:encoded><![CDATA[<p>Now, in 2009, gitosis is fantastic for keeping &#8220;master&#8221; git repositories. The repositories are managed under a single account (though you could use multiple accounts, if you&#8217;re a nervous sort). The configuration is a set of ssh public keys, each with an arbitrary name associated with it, and a configuration file describing who has what access (read or read/write) to which repositories. gitosis puts everybody&#8217;s keys in the accounts .ssh/authorized_keys file with appropriate restrictions so that they can run only the server program, which uses the configuration file to serve requests within the access limits.</p>
<p>It also supports using git-daemon for public access, as well, again controlled through the configuration file.</p>
<p>Gitosis was one of the big features that convinced me to switch to git.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-2244</link>
		<dc:creator>Mike</dc:creator>
		<pubDate>Thu, 05 Jun 2008 10:03:49 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-2244</guid>
		<description><![CDATA[Mercurial lets you transplant patches, but it doesn&#039;t handle the merging the branches well afterwards, and that&#039;s what really matters: http://www.selenic.com/mercurial/wiki/index.cgi/TransplantExtension

Without being able to merge easily after cherrypicking, a DVCS really can&#039;t be said support cherrypicking.]]></description>
		<content:encoded><![CDATA[<p>Mercurial lets you transplant patches, but it doesn&#8217;t handle the merging the branches well afterwards, and that&#8217;s what really matters: <a href="http://www.selenic.com/mercurial/wiki/index.cgi/TransplantExtension" rel="nofollow">http://www.selenic.com/mercurial/wiki/index.cgi/TransplantExtension</a></p>
<p>Without being able to merge easily after cherrypicking, a DVCS really can&#8217;t be said support cherrypicking.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: beza1e1</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1649</link>
		<dc:creator>beza1e1</dc:creator>
		<pubDate>Tue, 14 Aug 2007 09:50:43 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1649</guid>
		<description><![CDATA[No BBCode? Maybe this works:

http://computerroriginaliascience.blogspot.com/2007/08/how-to-evaluate-dvcs.html]]></description>
		<content:encoded><![CDATA[<p>No BBCode? Maybe this works:</p>
<p><a href="http://computerroriginaliascience.blogspot.com/2007/08/how-to-evaluate-dvcs.html" rel="nofollow">http://computerroriginaliascience.blogspot.com/2007/08/how-to-evaluate-dvcs.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: beza1e1</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1648</link>
		<dc:creator>beza1e1</dc:creator>
		<pubDate>Tue, 14 Aug 2007 09:48:56 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1648</guid>
		<description><![CDATA[I try to do some research on this in a study thesis. Maybe you&#039;d like to comment on my ideas [url=
http://computerroriginaliascience.blogspot.com/2007/08/how-to-evaluate-dvcs.html]how to evaluate DVCSs?[/url]]]></description>
		<content:encoded><![CDATA[<p>I try to do some research on this in a study thesis. Maybe you&#8217;d like to comment on my ideas [url=<br />
<a href="http://computerroriginaliascience.blogspot.com/2007/08/how-to-evaluate-dvcs.htmlhow" rel="nofollow">http://computerroriginaliascience.blogspot.com/2007/08/how-to-evaluate-dvcs.htmlhow</a> to evaluate DVCSs?[/url]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pachi</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1536</link>
		<dc:creator>pachi</dc:creator>
		<pubDate>Mon, 21 May 2007 13:50:26 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1536</guid>
		<description><![CDATA[Mercurial does support cherrypicking using the &lt;a href=&quot;http://www.selenic.com/mercurial/wiki/index.cgi/TransplantExtension&quot;&gt;transplant&lt;/a&gt; extension.

There are many very useful &lt;a href=&quot;http://www.selenic.com/mercurial/wiki/index.cgi/UsingExtensions&quot;&gt;Mercurial extensions&lt;/a&gt; that are worth a try.]]></description>
		<content:encoded><![CDATA[<p>Mercurial does support cherrypicking using the <a href="http://www.selenic.com/mercurial/wiki/index.cgi/TransplantExtension">transplant</a> extension.</p>
<p>There are many very useful <a href="http://www.selenic.com/mercurial/wiki/index.cgi/UsingExtensions">Mercurial extensions</a> that are worth a try.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The Changelog</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1408</link>
		<dc:creator>The Changelog</dc:creator>
		<pubDate>Wed, 07 Mar 2007 00:02:23 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1408</guid>
		<description><![CDATA[I recently wrote an article or two about distributed version control systems.

I&#039;ve been using Darcs since 2005.  I switched to Darcs, in fact, 10 days after the simultaneous founding announcements of git and Mercurial.

Overall, I have been happy.  I]]></description>
		<content:encoded><![CDATA[<p>I recently wrote an article or two about distributed version control systems.</p>
<p>I&#8217;ve been using Darcs since 2005.  I switched to Darcs, in fact, 10 days after the simultaneous founding announcements of git and Mercurial.</p>
<p>Overall, I have been happy.  I</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jakub Narebski</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1257</link>
		<dc:creator>Jakub Narebski</dc:creator>
		<pubDate>Mon, 06 Nov 2006 23:31:19 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1257</guid>
		<description><![CDATA[I won&#039;t repeat the argument that git is [i]snapshot[/i] not changeset/patchset based about it&#039;s ability to cherry-pick patches, but perhaps [url=http://www.procode.org/stgit/]Stacked GIT[/url] (also known as StGIT) would give what you want in #4.]]></description>
		<content:encoded><![CDATA[<p>I won&#8217;t repeat the argument that git is [i]snapshot[/i] not changeset/patchset based about it&#8217;s ability to cherry-pick patches, but perhaps [url=http://www.procode.org/stgit/]Stacked GIT[/url] (also known as StGIT) would give what you want in #4.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bloggo ergo sum</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1183</link>
		<dc:creator>bloggo ergo sum</dc:creator>
		<pubDate>Fri, 29 Sep 2006 16:27:34 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1183</guid>
		<description><![CDATA[Whose Distributed VCS Is The Most Distributed? - The Changelog
A good read on the more recent tools available.  Included is:

SVN
GIT
Darcs
Arch
baz
Mercurial
bazaar-ng

...]]></description>
		<content:encoded><![CDATA[<p>Whose Distributed VCS Is The Most Distributed? &#8211; The Changelog<br />
A good read on the more recent tools available.  Included is:</p>
<p>SVN<br />
GIT<br />
Darcs<br />
Arch<br />
baz<br />
Mercurial<br />
bazaar-ng</p>
<p>&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: era</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1172</link>
		<dc:creator>era</dc:creator>
		<pubDate>Sun, 24 Sep 2006 19:47:48 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1172</guid>
		<description><![CDATA[Just a quick note about &quot;reasonably fast&quot;.

I have this puny little 133MHz laptop which has been working just fine for me over several years. With 32Mb of RAM and Debian Woody, I was able to run X, Emacs, and CVS and basically not worry. Except that CVS is not, you know, distributed.

So I got a RAM upgrade (64Mb is all this puppy can take) and upgraded to Ubuntu Dapper, and installed SVK, because we recently switched to SVN at work and this seemed like the most &quot;natural&quot; way to go distributed. Well, it couldn&#039;t even download 68 revisions of a single text file -- it took forever, and failed because of some network error, and had to be unjammed before I could try again, and then it corrupted its repo, and I had to start over from scratch, and eventually, the &quot;oom-killer&quot; thing (I guess &quot;oom&quot; stands for &quot;out of memory&quot;) killed not only svk, but also  various and sundry vital system daemons.

Next, since I&#039;m on Ubuntu now, I thought I&#039;d try bzr. Big deal. Basically the same thing -- it kept on going and going and going and eventually fell on its face after having consumed up all memory. (And it&#039;s not like I have a small swap space on this machine -- I set up like a gigabyte, but I suspect oom-killer will never even allow me to access all of it.)

Next up, darcs. You know what? It just works (tm). I&#039;m still too chicken to try to run X again, but Emacs + darcs is a very reasonable combination indeed, even on this modest hardware.

PS. Sorry if the wrapping is screwy, I had to save this to a text file while finding a machine that would be able to look at your CAPTCHA /-:]]></description>
		<content:encoded><![CDATA[<p>Just a quick note about &#8220;reasonably fast&#8221;.</p>
<p>I have this puny little 133MHz laptop which has been working just fine for me over several years. With 32Mb of RAM and Debian Woody, I was able to run X, Emacs, and CVS and basically not worry. Except that CVS is not, you know, distributed.</p>
<p>So I got a RAM upgrade (64Mb is all this puppy can take) and upgraded to Ubuntu Dapper, and installed SVK, because we recently switched to SVN at work and this seemed like the most &#8220;natural&#8221; way to go distributed. Well, it couldn&#8217;t even download 68 revisions of a single text file &#8212; it took forever, and failed because of some network error, and had to be unjammed before I could try again, and then it corrupted its repo, and I had to start over from scratch, and eventually, the &#8220;oom-killer&#8221; thing (I guess &#8220;oom&#8221; stands for &#8220;out of memory&#8221;) killed not only svk, but also  various and sundry vital system daemons.</p>
<p>Next, since I&#8217;m on Ubuntu now, I thought I&#8217;d try bzr. Big deal. Basically the same thing &#8212; it kept on going and going and going and eventually fell on its face after having consumed up all memory. (And it&#8217;s not like I have a small swap space on this machine &#8212; I set up like a gigabyte, but I suspect oom-killer will never even allow me to access all of it.)</p>
<p>Next up, darcs. You know what? It just works &#8482;. I&#8217;m still too chicken to try to run X again, but Emacs + darcs is a very reasonable combination indeed, even on this modest hardware.</p>
<p>PS. Sorry if the wrapping is screwy, I had to save this to a text file while finding a machine that would be able to look at your CAPTCHA /-:</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1169</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Thu, 21 Sep 2006 05:43:55 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1169</guid>
		<description><![CDATA[I think git does #4, actually.  I&#039;m not completely sure what you mean by your description of the feature.  In particular, the phrase &quot;merging a changeset&quot; does not have an obvious translation into git-ese.  Perhaps you could elaborate?  Git doesn&#039;t have an explicit concept of changesets, as it&#039;s fundamentally snapshot based.  And merging applies to heads of development (branches) and nothing else.

What I&#039;m thinking of is what git terms &quot;rebasing a branch&quot;.  If you&#039;ve been hacking a neat feature on top of baseline version 1.1, and in the mean time baseline version 2.0 has been released, merging your changes in could be messy.  You can either merge with 2.0 and fix the conflicts before releasing your changes to the world, or you can &quot;rewrite history&quot; and apply the changes you&#039;ve made to version 2.0, resulting in a branch that looks like you started hacking on version 2.0.  This can produce a less tangled branch history, so is appreciated in large projects.

Git&#039;s cherry-pick is BASICALLY diff-and-patch, but it does one diff and patch per change along the branch, so you keep the full development history, AND it checks each patch to see if it has already been applied to the destination branch.  If it has, it skips it.  (The &quot;git-cherry&quot; helper does that.)

There&#039;s also git-rerere, which remembers merge conflicts that have to be manually fixed and recycles the previous manual resolution if the same conflict has to be fixed again in a later merge or rebase operation.

Neither of these assign a permanent ID number to a particular change (git assigns permanent ID numbers to snapshots, not the deltas between them), but in practice they reduce the incidence of needing to manually resolve the same conflict twice to negligible levels.]]></description>
		<content:encoded><![CDATA[<p>I think git does #4, actually.  I&#8217;m not completely sure what you mean by your description of the feature.  In particular, the phrase &#8220;merging a changeset&#8221; does not have an obvious translation into git-ese.  Perhaps you could elaborate?  Git doesn&#8217;t have an explicit concept of changesets, as it&#8217;s fundamentally snapshot based.  And merging applies to heads of development (branches) and nothing else.</p>
<p>What I&#8217;m thinking of is what git terms &#8220;rebasing a branch&#8221;.  If you&#8217;ve been hacking a neat feature on top of baseline version 1.1, and in the mean time baseline version 2.0 has been released, merging your changes in could be messy.  You can either merge with 2.0 and fix the conflicts before releasing your changes to the world, or you can &#8220;rewrite history&#8221; and apply the changes you&#8217;ve made to version 2.0, resulting in a branch that looks like you started hacking on version 2.0.  This can produce a less tangled branch history, so is appreciated in large projects.</p>
<p>Git&#8217;s cherry-pick is BASICALLY diff-and-patch, but it does one diff and patch per change along the branch, so you keep the full development history, AND it checks each patch to see if it has already been applied to the destination branch.  If it has, it skips it.  (The &#8220;git-cherry&#8221; helper does that.)</p>
<p>There&#8217;s also git-rerere, which remembers merge conflicts that have to be manually fixed and recycles the previous manual resolution if the same conflict has to be fixed again in a later merge or rebase operation.</p>
<p>Neither of these assign a permanent ID number to a particular change (git assigns permanent ID numbers to snapshots, not the deltas between them), but in practice they reduce the incidence of needing to manually resolve the same conflict twice to negligible levels.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nathaniel</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1116</link>
		<dc:creator>Nathaniel</dc:creator>
		<pubDate>Tue, 15 Aug 2006 22:27:52 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1116</guid>
		<description><![CDATA[For monotone, having a central repository is the most common working mode -- keeping track of everyone&#039;s repositories is too much of a hassle to deal with :-).

The central repo isn&#039;t particularly &quot;authoritative&quot;, though; monotone replication is more like mirroring than like branching, so we can all have equally authoritative copies of our mainline branches.

Possibly useful link about this topic: [url]http://venge.net/monotone/wiki/MasterRepository[/url]]]></description>
		<content:encoded><![CDATA[<p>For monotone, having a central repository is the most common working mode &#8212; keeping track of everyone&#8217;s repositories is too much of a hassle to deal with :-).</p>
<p>The central repo isn&#8217;t particularly &#8220;authoritative&#8221;, though; monotone replication is more like mirroring than like branching, so we can all have equally authoritative copies of our mainline branches.</p>
<p>Possibly useful link about this topic: [url]http://venge.net/monotone/wiki/MasterRepository[/url]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Goerzen</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1115</link>
		<dc:creator>John Goerzen</dc:creator>
		<pubDate>Tue, 15 Aug 2006 16:51:28 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1115</guid>
		<description><![CDATA[I didn&#039;t test this with a bunch of different ones, but I can comment about Darcs.

Normally, you use &quot;darcs push&quot; to push to a central server.  It uses ssh and run the darcs binary on that server to apply the patches.  So all you need is ssh and a darcs binary there, and standard Unix permissions can control the setup.

An alternative is to use signed patches sent over email.  The Darcs author, David Roundy, does this.  You can simply run &quot;darcs send&quot;, and it will send any patches you have that the central repo doesn&#039;t.  The central repo describes where to send the patches to.  You can use a simple script on the central server that will check signatures, and if so, pass the patches to darcs apply.

So the requirements are probably a little less than SVN.

If you don&#039;t need to handle multiple users committing simultaneously (and thus don&#039;t need the darcs binary to handle locking and conflicts), you can just rsync your personal repo up to the server.]]></description>
		<content:encoded><![CDATA[<p>I didn&#8217;t test this with a bunch of different ones, but I can comment about Darcs.</p>
<p>Normally, you use &#8220;darcs push&#8221; to push to a central server.  It uses ssh and run the darcs binary on that server to apply the patches.  So all you need is ssh and a darcs binary there, and standard Unix permissions can control the setup.</p>
<p>An alternative is to use signed patches sent over email.  The Darcs author, David Roundy, does this.  You can simply run &#8220;darcs send&#8221;, and it will send any patches you have that the central repo doesn&#8217;t.  The central repo describes where to send the patches to.  You can use a simple script on the central server that will check signatures, and if so, pass the patches to darcs apply.</p>
<p>So the requirements are probably a little less than SVN.</p>
<p>If you don&#8217;t need to handle multiple users committing simultaneously (and thus don&#8217;t need the darcs binary to handle locking and conflicts), you can just rsync your personal repo up to the server.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sven Mueller</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1114</link>
		<dc:creator>Sven Mueller</dc:creator>
		<pubDate>Tue, 15 Aug 2006 16:25:07 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1114</guid>
		<description><![CDATA[Hi.

There is one question I don&#039;t see covered on any comparison of DVCSs. With team collaboration on a project, it is often desirable to maintain a central &quot;authoritative&quot; repository to which several people can commit. So:
How good are the different DVCSs at offering multi-user commits to a remote repository, preferably without requiring shell access on the machine where that repository is kept?
I know SVK is able to offer that, cause the central repository can be a simple SVN server.
Given the rest of the comparison here, darcs might be a viable solution if I/we ever need a distributed VCS.

regards,
Sven]]></description>
		<content:encoded><![CDATA[<p>Hi.</p>
<p>There is one question I don&#8217;t see covered on any comparison of DVCSs. With team collaboration on a project, it is often desirable to maintain a central &#8220;authoritative&#8221; repository to which several people can commit. So:<br />
How good are the different DVCSs at offering multi-user commits to a remote repository, preferably without requiring shell access on the machine where that repository is kept?<br />
I know SVK is able to offer that, cause the central repository can be a simple SVN server.<br />
Given the rest of the comparison here, darcs might be a viable solution if I/we ever need a distributed VCS.</p>
<p>regards,<br />
Sven</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: anon</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1110</link>
		<dc:creator>anon</dc:creator>
		<pubDate>Sun, 13 Aug 2006 05:30:30 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1110</guid>
		<description><![CDATA[git doesn&#039;t do [i]changesets[/i].  git tracks file identities at each step.  The [i]changeset[/i] is a derived quantity.

Thus, your #4 works even though you think it won&#039;t...  You can cherry-pick changes, merge later, and have everything work perfectly.  Seriously.  I do this often.  The [i]changeset[/i] is [b]not[/b] replayed, re-applied, or anything like that.  If the default merge strategy doesn&#039;t work for you, there are others available.  Plus, git-rerere will handle some really bizarre cross-merge and rebasing changes for you by recording what you did to resolve those changes last time.

Plus, git-cherry-pick by default will record the tree from which you picked the changes.  The gitk viewer uses that as a link, so you can jump to it, etc.

Two holes in git&#039;s toolset right now are cloning with limited history and handling subprojects.  Those are better handled by other tools, alas.]]></description>
		<content:encoded><![CDATA[<p>git doesn&#8217;t do [i]changesets[/i].  git tracks file identities at each step.  The [i]changeset[/i] is a derived quantity.</p>
<p>Thus, your #4 works even though you think it won&#8217;t&#8230;  You can cherry-pick changes, merge later, and have everything work perfectly.  Seriously.  I do this often.  The [i]changeset[/i] is [b]not[/b] replayed, re-applied, or anything like that.  If the default merge strategy doesn&#8217;t work for you, there are others available.  Plus, git-rerere will handle some really bizarre cross-merge and rebasing changes for you by recording what you did to resolve those changes last time.</p>
<p>Plus, git-cherry-pick by default will record the tree from which you picked the changes.  The gitk viewer uses that as a link, so you can jump to it, etc.</p>
<p>Two holes in git&#8217;s toolset right now are cloning with limited history and handling subprojects.  Those are better handled by other tools, alas.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nathaniel</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1108</link>
		<dc:creator>Nathaniel</dc:creator>
		<pubDate>Sat, 12 Aug 2006 08:58:28 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1108</guid>
		<description><![CDATA[Since monotone came up, I&#039;ll quickly summarize, leaving #1 for last...

2) In monotone, branching is essentially free -- committing to a new branch costs exactly the same as committing to an existing branch.

3) Monotone&#039;s merger is pretty smart -- it has a few enhancements that would be nice to add at some point, but it&#039;s smarter than 3-way merge, provably correct (for some value of provably), and cleanly handles things like renames (both files and directories), arbitrary attributes on files, etc.

4) Merging individual changesets is trivial -- you can &#039;mtn pluck&#039; them out of history and into your workspace, using the smart merger to wiggle them into place.  However, future merges are blind to this.  The reason this feature is unique to darcs is that, well, no-one knows how to make it actually work -- even darcs (cf. the last year+ of traffic on the darcs-traffic list).  We&#039;re all watching to see if the darcs devels solve the problem, but until they do, I don&#039;t think anyone else wants to get sucked into the situation where there are users waiting for you to invent new math that may or may not exist.

5 &amp; 6) Of course we preserve history.

7) Actually, in some sense it&#039;s only possible to work with history offline :-).  Monotone&#039;s only network operation is &quot;sync my local mirror&quot;; everything else works against local disk.  (This might change at some point to support conveniences like history-less checkout, but we&#039;ll see.)

8) &quot;Fast enough for general purpose use&quot; is a bit subjective, but I&#039;d say so.  The one potential issue is that initial pulls are somewhat slow, which large projects have worked around by putting up compressed repos for HTTP download.  We&#039;re working on fixing this now, as well.

Right, about #1, then -- you describe the particular branching model that is popular for DVCS&#039;s these days -- I think it originated with BK.  It&#039;s not the only possibility.  Unfortunately, we don&#039;t have a good potted explanation I can point you to about how monotone does it.  But briefly, a project generally has a whole shared namespace of branches.  You normally synchronize the whole namespace at a time (though don&#039;t have to).  I.e., this namespace is not tied to any particular location; people can commit to &quot;the same&quot; branch while disconnected.  Branching is orthogonal to physical location -- you only create a new branch when you have some divergence you/your project wants to keep track of.  By default, branches are replicated, globally visible, and shared.

There are some rough edges on all this still -- fixing those is priority #2 after improving pull speed -- but that&#039;s the basic idea.

Cheers,]]></description>
		<content:encoded><![CDATA[<p>Since monotone came up, I&#8217;ll quickly summarize, leaving #1 for last&#8230;</p>
<p>2) In monotone, branching is essentially free &#8212; committing to a new branch costs exactly the same as committing to an existing branch.</p>
<p>3) Monotone&#8217;s merger is pretty smart &#8212; it has a few enhancements that would be nice to add at some point, but it&#8217;s smarter than 3-way merge, provably correct (for some value of provably), and cleanly handles things like renames (both files and directories), arbitrary attributes on files, etc.</p>
<p>4) Merging individual changesets is trivial &#8212; you can &#8216;mtn pluck&#8217; them out of history and into your workspace, using the smart merger to wiggle them into place.  However, future merges are blind to this.  The reason this feature is unique to darcs is that, well, no-one knows how to make it actually work &#8212; even darcs (cf. the last year+ of traffic on the darcs-traffic list).  We&#8217;re all watching to see if the darcs devels solve the problem, but until they do, I don&#8217;t think anyone else wants to get sucked into the situation where there are users waiting for you to invent new math that may or may not exist.</p>
<p>5 &#038; 6) Of course we preserve history.</p>
<p>7) Actually, in some sense it&#8217;s only possible to work with history offline :-).  Monotone&#8217;s only network operation is &#8220;sync my local mirror&#8221;; everything else works against local disk.  (This might change at some point to support conveniences like history-less checkout, but we&#8217;ll see.)</p>
<p>8) &#8220;Fast enough for general purpose use&#8221; is a bit subjective, but I&#8217;d say so.  The one potential issue is that initial pulls are somewhat slow, which large projects have worked around by putting up compressed repos for HTTP download.  We&#8217;re working on fixing this now, as well.</p>
<p>Right, about #1, then &#8212; you describe the particular branching model that is popular for DVCS&#8217;s these days &#8212; I think it originated with BK.  It&#8217;s not the only possibility.  Unfortunately, we don&#8217;t have a good potted explanation I can point you to about how monotone does it.  But briefly, a project generally has a whole shared namespace of branches.  You normally synchronize the whole namespace at a time (though don&#8217;t have to).  I.e., this namespace is not tied to any particular location; people can commit to &#8220;the same&#8221; branch while disconnected.  Branching is orthogonal to physical location &#8212; you only create a new branch when you have some divergence you/your project wants to keep track of.  By default, branches are replicated, globally visible, and shared.</p>
<p>There are some rough edges on all this still &#8212; fixing those is priority #2 after improving pull speed &#8212; but that&#8217;s the basic idea.</p>
<p>Cheers,</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Van Eynde</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1107</link>
		<dc:creator>Peter Van Eynde</dc:creator>
		<pubDate>Fri, 11 Aug 2006 22:37:03 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1107</guid>
		<description><![CDATA[The bad part is that it was working perfectly, until at a certain moment it just stopped merging. I don&#039;t like working with such a thread looming above me, even if darcs is &lt;b&gt;very&lt;/b&gt; nice indeed.]]></description>
		<content:encoded><![CDATA[<p>The bad part is that it was working perfectly, until at a certain moment it just stopped merging. I don&#8217;t like working with such a thread looming above me, even if darcs is <b>very</b> nice indeed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Westermann-Clark</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1106</link>
		<dc:creator>Daniel Westermann-Clark</dc:creator>
		<pubDate>Fri, 11 Aug 2006 15:59:48 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1106</guid>
		<description><![CDATA[Nice, I didn&#039;t know about that shortcut.

Looks like I also forgot the last two points:

7. You can create a local branch offline and commit to there.  SVK also lets you work with the full history of the remote repository (the part you have mirrored).  Once you&#039;re connected again, you can easily pull down new changes from the remote repository and push yours back.

8. SVK is quite fast for general use, but I don&#039;t know how it compares to others.  The initial mirroring of a repository can be slow if the repository has many revisions.]]></description>
		<content:encoded><![CDATA[<p>Nice, I didn&#8217;t know about that shortcut.</p>
<p>Looks like I also forgot the last two points:</p>
<p>7. You can create a local branch offline and commit to there.  SVK also lets you work with the full history of the remote repository (the part you have mirrored).  Once you&#8217;re connected again, you can easily pull down new changes from the remote repository and push yours back.</p>
<p>8. SVK is quite fast for general use, but I don&#8217;t know how it compares to others.  The initial mirroring of a repository can be slow if the repository has many revisions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Goerzen</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1105</link>
		<dc:creator>John Goerzen</dc:creator>
		<pubDate>Fri, 11 Aug 2006 14:21:06 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1105</guid>
		<description><![CDATA[I personally use Darcs quite heavily for Debian package maintenance, and in fact, the majority of my packages use Darcs (either because I wrote them, or because I maintain them in Darcs).  See [url=http://darcs.complete.org/debian]darcs.complete.org/debian[/url] for my Debian darcs repositories.

I have found this to not be an issue with modern darcs.  kdiff3 is especially nice when merging with upstreams that have applied Debian patches already.

I know that the issue exists, but I have only seen it bother me once in actual use.  As a practical matter, it isn&#039;t a consideration for me.]]></description>
		<content:encoded><![CDATA[<p>I personally use Darcs quite heavily for Debian package maintenance, and in fact, the majority of my packages use Darcs (either because I wrote them, or because I maintain them in Darcs).  See [url=http://darcs.complete.org/debian]darcs.complete.org/debian[/url] for my Debian darcs repositories.</p>
<p>I have found this to not be an issue with modern darcs.  kdiff3 is especially nice when merging with upstreams that have applied Debian patches already.</p>
<p>I know that the issue exists, but I have only seen it bother me once in actual use.  As a practical matter, it isn&#8217;t a consideration for me.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Goerzen</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1103</link>
		<dc:creator>John Goerzen</dc:creator>
		<pubDate>Fri, 11 Aug 2006 13:18:00 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1103</guid>
		<description><![CDATA[Regarding #4, the problem is that you commit the merge at the wrong time.  You don&#039;t commit the fact that the merge happened when it actually occurs; rather the cherrypicked merge gets committed whenever the full history up through (and beyond) that particular patch is merged.

So someone trying to track the history of merges will have a terrible time, since bzr log will show a &quot;merged:&quot; line of the source repo at the wrong place.  It&#039;s really storing an incorrect history.

Regarding the history preservation, someone sent me information on how to get that out of bzr, so I will update the article.  It is completely undocumented in the bzr manpage and bzr diff, and only works for non-cherrypicking, but is nevertheless a valid point.]]></description>
		<content:encoded><![CDATA[<p>Regarding #4, the problem is that you commit the merge at the wrong time.  You don&#8217;t commit the fact that the merge happened when it actually occurs; rather the cherrypicked merge gets committed whenever the full history up through (and beyond) that particular patch is merged.</p>
<p>So someone trying to track the history of merges will have a terrible time, since bzr log will show a &#8220;merged:&#8221; line of the source repo at the wrong place.  It&#8217;s really storing an incorrect history.</p>
<p>Regarding the history preservation, someone sent me information on how to get that out of bzr, so I will update the article.  It is completely undocumented in the bzr manpage and bzr diff, and only works for non-cherrypicking, but is nevertheless a valid point.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Goerzen</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1102</link>
		<dc:creator>John Goerzen</dc:creator>
		<pubDate>Fri, 11 Aug 2006 13:12:15 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1102</guid>
		<description><![CDATA[From what I can tell, this sounds just like a diff followed by a patch -- that is, it doesn&#039;t pull the *same* changeset over, but rather commits a new changeset with the same changes as the original.  Is that wrong?  If so, could you list the exact commands you&#039;re using?  (I&#039;m assuming you&#039;re using hg export)]]></description>
		<content:encoded><![CDATA[<p>From what I can tell, this sounds just like a diff followed by a patch &#8212; that is, it doesn&#8217;t pull the *same* changeset over, but rather commits a new changeset with the same changes as the original.  Is that wrong?  If so, could you list the exact commands you&#8217;re using?  (I&#8217;m assuming you&#8217;re using hg export)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Goerzen</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1101</link>
		<dc:creator>John Goerzen</dc:creator>
		<pubDate>Fri, 11 Aug 2006 13:10:48 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1101</guid>
		<description><![CDATA[Unfortunately, I didn&#039;t have time to look at Monotone and SVK, though I&#039;m happy to see the SVK comments below]]></description>
		<content:encoded><![CDATA[<p>Unfortunately, I didn&#8217;t have time to look at Monotone and SVK, though I&#8217;m happy to see the SVK comments below</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: the debian user</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1100</link>
		<dc:creator>the debian user</dc:creator>
		<pubDate>Fri, 11 Aug 2006 08:04:13 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1100</guid>
		<description><![CDATA[Debian Developer John Goerzen just did a tremendous job, useful not only for Debian users but for all developers of free and open source software. He compared the different available version control systems which support distributed collaborative work....]]></description>
		<content:encoded><![CDATA[<p>Debian Developer John Goerzen just did a tremendous job, useful not only for Debian users but for all developers of free and open source software. He compared the different available version control systems which support distributed collaborative work&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Van Eynde</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1098</link>
		<dc:creator>Peter Van Eynde</dc:creator>
		<pubDate>Fri, 11 Aug 2006 07:35:43 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1098</guid>
		<description><![CDATA[As I documented in [url=http://wiki.debian.org/PackagingWithDarcsAndTailor]PackagingWithDarcsAndTailor[/url] I consider darcs to be bad for debian package maintenance because we are guaranteed to introduce [url=http://darcs.net/DarcsWiki/FrequentlyAskedQuestions#head-76fb029ff6e9c20468eacf3ff00d791e2cf03ecb]&quot;doppleganger patches&quot;[/url] when a fix of ours flows into upstream. Enough of these will make the debian branch unmergable with the upstream one.

Personally I&#039;m investigating bzr at the moment.]]></description>
		<content:encoded><![CDATA[<p>As I documented in [url=http://wiki.debian.org/PackagingWithDarcsAndTailor]PackagingWithDarcsAndTailor[/url] I consider darcs to be bad for debian package maintenance because we are guaranteed to introduce [url=http://darcs.net/DarcsWiki/FrequentlyAskedQuestions#head-76fb029ff6e9c20468eacf3ff00d791e2cf03ecb]&#8220;doppleganger patches&#8221;[/url] when a fix of ours flows into upstream. Enough of these will make the debian branch unmergable with the upstream one.</p>
<p>Personally I&#8217;m investigating bzr at the moment.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Martin</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1097</link>
		<dc:creator>Martin</dc:creator>
		<pubDate>Fri, 11 Aug 2006 06:51:27 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1097</guid>
		<description><![CDATA[A couple of corrections about Bazaar:

#2 - Bazaar has a mechanism called &#039;repositories&#039; to do cheap local or remote branching.  It works without requiring hardlinks, which is good on OS X and Windows.  It helps in some cases where hardlinking cannot, such as bringing down someone else&#039;s branch related to something you already have.  It actually works very well, but I acknowledge the documentation is confusing and we should fix that.

#3 - Merging between branches is pretty good.  I wouldn&#039;t say that Arch&#039;s merging is much like darcs, but a full comparison is too long for this comment.  In particular Arch won&#039;t do darcs&#039;s very cool merging of discontiguous changes without considerable user effort.

#4 - No, bzr is a bit more intelligent than just getting a patch and applying it, though we still want to do more to improve cherry picking.  I&#039;m not sure where you got this idea that we will cause nightmares by ignoring partially merged patches; we certainly don&#039;t.  There is some design work for improving the tracking of this.

#5 - Bazaar brings across the full history when you branch or merge.  We *present* the data as being rolled up, but it&#039;s all still there and you can look at it e.g. with the GUI, and it&#039;s used by merging.  The distinctness of the changes is not lost; this is something we specifically fixed compared to Arch.

We also have support for svn-like checkouts where the history is stored remotely and accessed only when needed.

#8 - We&#039;re specifically concentrating on performance as we come up to 1.0.  0.9 will be substantially faster than the previous release.

Bazaar really does not lose history.  I wish you would correct that in the article.  If you read it somewhere or if there&#039;s something we should make more clear please let me know.]]></description>
		<content:encoded><![CDATA[<p>A couple of corrections about Bazaar:</p>
<p>#2 &#8211; Bazaar has a mechanism called &#8216;repositories&#8217; to do cheap local or remote branching.  It works without requiring hardlinks, which is good on OS X and Windows.  It helps in some cases where hardlinking cannot, such as bringing down someone else&#8217;s branch related to something you already have.  It actually works very well, but I acknowledge the documentation is confusing and we should fix that.</p>
<p>#3 &#8211; Merging between branches is pretty good.  I wouldn&#8217;t say that Arch&#8217;s merging is much like darcs, but a full comparison is too long for this comment.  In particular Arch won&#8217;t do darcs&#8217;s very cool merging of discontiguous changes without considerable user effort.</p>
<p>#4 &#8211; No, bzr is a bit more intelligent than just getting a patch and applying it, though we still want to do more to improve cherry picking.  I&#8217;m not sure where you got this idea that we will cause nightmares by ignoring partially merged patches; we certainly don&#8217;t.  There is some design work for improving the tracking of this.</p>
<p>#5 &#8211; Bazaar brings across the full history when you branch or merge.  We *present* the data as being rolled up, but it&#8217;s all still there and you can look at it e.g. with the GUI, and it&#8217;s used by merging.  The distinctness of the changes is not lost; this is something we specifically fixed compared to Arch.</p>
<p>We also have support for svn-like checkouts where the history is stored remotely and accessed only when needed.</p>
<p>#8 &#8211; We&#8217;re specifically concentrating on performance as we come up to 1.0.  0.9 will be substantially faster than the previous release.</p>
<p>Bazaar really does not lose history.  I wish you would correct that in the article.  If you read it somewhere or if there&#8217;s something we should make more clear please let me know.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Caldwell</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1096</link>
		<dc:creator>David Caldwell</dc:creator>
		<pubDate>Fri, 11 Aug 2006 05:50:03 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1096</guid>
		<description><![CDATA[In #4 you say that Mercurial does not have any support for cherrypicking patches across branches. This is incorrect--I do it all the time. It&#039;s not a completely seamless process, but it&#039;s not bad. First, export the changeset you want to a temp file, then import it onto the new branch (it will import to wherever your working directory is pointing).

It would certainly be better to be able to do it in one step, but two isn&#039;t bad.

-David]]></description>
		<content:encoded><![CDATA[<p>In #4 you say that Mercurial does not have any support for cherrypicking patches across branches. This is incorrect&#8211;I do it all the time. It&#8217;s not a completely seamless process, but it&#8217;s not bad. First, export the changeset you want to a temp file, then import it onto the new branch (it will import to wherever your working directory is pointing).</p>
<p>It would certainly be better to be able to do it in one step, but two isn&#8217;t bad.</p>
<p>-David</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: glandium</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1095</link>
		<dc:creator>glandium</dc:creator>
		<pubDate>Fri, 11 Aug 2006 05:33:38 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1095</guid>
		<description><![CDATA[For 1) I&#039;d add that it&#039;s actually very easy to branch from a remote repository.
you just svk cp &lt;remote_url&gt; &lt;local_directory&gt;. It will ask you where you want to put the mirror and the local branch in your svk repo.]]></description>
		<content:encoded><![CDATA[<p>For 1) I&#8217;d add that it&#8217;s actually very easy to branch from a remote repository.<br />
you just svk cp <remote_url> <local_directory>. It will ask you where you want to put the mirror and the local branch in your svk repo.</local_directory></remote_url></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Westermann-Clark</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1094</link>
		<dc:creator>Daniel Westermann-Clark</dc:creator>
		<pubDate>Fri, 11 Aug 2006 04:30:42 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1094</guid>
		<description><![CDATA[[url=http://svk.elixus.org/]SVK[/url] brings a number of distributed VCS features to Subversion (in addition to other neat things like VCP).  It isn&#039;t as &quot;pure&quot; as Darcs, but I find it immensely useful for working with many existing Subversion repositories.

Feature by feature:

1. SVK uses a depot to hold a full mirror of each Subversion repository you want to use.  You initialize and then checkout from the mirror.  Once a repository is mirrored, you can create a local branch, which retains full history and allows you to commit without network access to or commit permissions on the server.  So branching is not &quot;fundamental&quot; in that it requires extra steps, but it is quite simple.

2. Branching is implemented, as in Subversion, as a copy operation.  Subversion copies are copy-on-write, so they are cheap and fast.

3. SVK implements merge tracking using a simple push and pull model.  It also implements star-merge (based on tla&#039;s algorithm, IIRC).

4. SVK allows you to cherry pick changesets, but it is not very well abstracted at the moment.

5. SVK retains full history on remote branches (i.e., those that happen on the server) and on local branches (i.e., those that happen in your local depot).

6. Merging from one branch to another preserves full history in SVK.  SVK calls this an &quot;incremental&quot; merge.

I don&#039;t expect to convert anyone currently using Darcs to SVK, but any DVCS review should at least mention SVK.  :-)]]></description>
		<content:encoded><![CDATA[<p>[url=http://svk.elixus.org/]SVK[/url] brings a number of distributed VCS features to Subversion (in addition to other neat things like VCP).  It isn&#8217;t as &#8220;pure&#8221; as Darcs, but I find it immensely useful for working with many existing Subversion repositories.</p>
<p>Feature by feature:</p>
<p>1. SVK uses a depot to hold a full mirror of each Subversion repository you want to use.  You initialize and then checkout from the mirror.  Once a repository is mirrored, you can create a local branch, which retains full history and allows you to commit without network access to or commit permissions on the server.  So branching is not &#8220;fundamental&#8221; in that it requires extra steps, but it is quite simple.</p>
<p>2. Branching is implemented, as in Subversion, as a copy operation.  Subversion copies are copy-on-write, so they are cheap and fast.</p>
<p>3. SVK implements merge tracking using a simple push and pull model.  It also implements star-merge (based on tla&#8217;s algorithm, IIRC).</p>
<p>4. SVK allows you to cherry pick changesets, but it is not very well abstracted at the moment.</p>
<p>5. SVK retains full history on remote branches (i.e., those that happen on the server) and on local branches (i.e., those that happen in your local depot).</p>
<p>6. Merging from one branch to another preserves full history in SVK.  SVK calls this an &#8220;incremental&#8221; merge.</p>
<p>I don&#8217;t expect to convert anyone currently using Darcs to SVK, but any DVCS review should at least mention SVK.  :-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James</title>
		<link>http://changelog.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed/comment-page-1#comment-1093</link>
		<dc:creator>James</dc:creator>
		<pubDate>Fri, 11 Aug 2006 04:28:37 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/528-whose-distributed-vcs-is-the-most-distributed.html#comment-1093</guid>
		<description><![CDATA[Have you looked at monotone?]]></description>
		<content:encoded><![CDATA[<p>Have you looked at monotone?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
