<?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: Your SCM may be decentralized, but your project isn&#8217;t</title>
	<atom:link href="http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/feed/" rel="self" type="application/rss+xml" />
	<link>http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/</link>
	<description>my word against yours, fight.</description>
	<lastBuildDate>Fri, 03 Sep 2010 23:35:10 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>By: Anonymouse</title>
		<link>http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/comment-page-1/#comment-72</link>
		<dc:creator>Anonymouse</dc:creator>
		<pubDate>Thu, 03 Apr 2008 04:09:27 +0000</pubDate>
		<guid isPermaLink="false">http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/#comment-72</guid>
		<description>&quot;More importantly, that you’re not really using git as a decentralized development platform (sorry).&quot;

No, you don&#039;t understand. It&#039;s only the &quot;official maintainer releases&quot; that are centralized. i.e. only the official maintainers can create them. This is a tautology.

On the other hand, the actual development of the code *was* decentralized because different developers were able to &#039;sync up&#039; without an &quot;official&quot; release. You could do this with a central server, but it creates bottlenecks and artificial class distinctions (see below.)

&quot;But really, this is nothing Subversion cannot do with almost as little effort.&quot;

You are proposing sweeping changes to SVN. You do a lot of hand-waving on exactly how it will work, so it&#039;s hard to comment.

First, you are creating a lot of central bandwidth and storage for trees that may or may not ever pan out.

But real distributed source control management systems have the feature that *ANYONE* can be a maintainer and make their own releases. (I&#039;ll admit that&#039;s not useful in a corporate setting, but we&#039;re talking Open Source.)

In the central SVN model, the core developers create &quot;2nd class developers&quot; who can never be maintainers in their own right. Nobody can collaborate except at the whim of the core developers. If the core developers get stingy with the commit bit (or &quot;branch bit&quot; in your scenario), then the project stagnates. (See the XFree86/Xorg fiasco.)

&quot;Official maintainer&quot; is a *social* designation, not a technical one. Therefore, you can declare yourself the &quot;official maintainer&quot; of Loren&#039;s repo. You shouldn&#039;t be at the mercy of someone else to host it.

Linus has a kernel tree, but he will be the first to tell you that his tree isn&#039;t special at all. (In fact, historically, almost no distros shipped his tree.) Linus only gets to decide what&#039;s in his tree. Others (Andrew Morton, Alan Cox, the PowerPC arch guy, the SCSI subsystem maintainer) get to decide what&#039;s in their trees. If the PowerPC guy wants to sync with my tree, he shouldn&#039;t need anyone&#039;s permission, and I shouldn&#039;t need an account on a central server.

It&#039;s ironic that the SVN maintainers may look at your suggestion and decide &quot;no, we&#039;re not going in that direction&quot;, and you&#039;ll probably wished you had a distributed SCM so you could work on your idea without their permission (and without a major fork like EMACS/EGCS/etc).</description>
		<content:encoded><![CDATA[<p>&#8220;More importantly, that you’re not really using git as a decentralized development platform (sorry).&#8221;</p>
<p>No, you don&#8217;t understand. It&#8217;s only the &#8220;official maintainer releases&#8221; that are centralized. i.e. only the official maintainers can create them. This is a tautology.</p>
<p>On the other hand, the actual development of the code *was* decentralized because different developers were able to &#8216;sync up&#8217; without an &#8220;official&#8221; release. You could do this with a central server, but it creates bottlenecks and artificial class distinctions (see below.)</p>
<p>&#8220;But really, this is nothing Subversion cannot do with almost as little effort.&#8221;</p>
<p>You are proposing sweeping changes to SVN. You do a lot of hand-waving on exactly how it will work, so it&#8217;s hard to comment.</p>
<p>First, you are creating a lot of central bandwidth and storage for trees that may or may not ever pan out.</p>
<p>But real distributed source control management systems have the feature that *ANYONE* can be a maintainer and make their own releases. (I&#8217;ll admit that&#8217;s not useful in a corporate setting, but we&#8217;re talking Open Source.)</p>
<p>In the central SVN model, the core developers create &#8220;2nd class developers&#8221; who can never be maintainers in their own right. Nobody can collaborate except at the whim of the core developers. If the core developers get stingy with the commit bit (or &#8220;branch bit&#8221; in your scenario), then the project stagnates. (See the XFree86/Xorg fiasco.)</p>
<p>&#8220;Official maintainer&#8221; is a *social* designation, not a technical one. Therefore, you can declare yourself the &#8220;official maintainer&#8221; of Loren&#8217;s repo. You shouldn&#8217;t be at the mercy of someone else to host it.</p>
<p>Linus has a kernel tree, but he will be the first to tell you that his tree isn&#8217;t special at all. (In fact, historically, almost no distros shipped his tree.) Linus only gets to decide what&#8217;s in his tree. Others (Andrew Morton, Alan Cox, the PowerPC arch guy, the SCSI subsystem maintainer) get to decide what&#8217;s in their trees. If the PowerPC guy wants to sync with my tree, he shouldn&#8217;t need anyone&#8217;s permission, and I shouldn&#8217;t need an account on a central server.</p>
<p>It&#8217;s ironic that the SVN maintainers may look at your suggestion and decide &#8220;no, we&#8217;re not going in that direction&#8221;, and you&#8217;ll probably wished you had a distributed SCM so you could work on your idea without their permission (and without a major fork like EMACS/EGCS/etc).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jakub Narebski</title>
		<link>http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/comment-page-1/#comment-42</link>
		<dc:creator>Jakub Narebski</dc:creator>
		<pubDate>Sun, 24 Feb 2008 10:18:12 +0000</pubDate>
		<guid isPermaLink="false">http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/#comment-42</guid>
		<description>@James:
&gt;&gt; Any SCM that does not let me check in code and switch branches while I am on an airplane is useless to me.”

&gt; Yeah, because, fuck man, I live half my life in an airplane.

It doesn&#039;t need to be airplane; it can be train, bus or tram. It is enough if you don&#039;t have network connection. Or your central server can be down, or the network is congested and it is responding slowly. 

Off-line commits is a nice feature to have.</description>
		<content:encoded><![CDATA[<p>@James:<br />
&gt;&gt; Any SCM that does not let me check in code and switch branches while I am on an airplane is useless to me.”</p>
<p>&gt; Yeah, because, fuck man, I live half my life in an airplane.</p>
<p>It doesn&#8217;t need to be airplane; it can be train, bus or tram. It is enough if you don&#8217;t have network connection. Or your central server can be down, or the network is congested and it is responding slowly. </p>
<p>Off-line commits is a nice feature to have.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jakub Narebski</title>
		<link>http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/comment-page-1/#comment-41</link>
		<dc:creator>Jakub Narebski</dc:creator>
		<pubDate>Sun, 24 Feb 2008 10:12:30 +0000</pubDate>
		<guid isPermaLink="false">http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/#comment-41</guid>
		<description>@Loren:

Rewriting (changing) *published* history is a big no-no. In centralized SCM commiting means publishing. In distributed SCM publishing (push) is separated from comitting changes. So IMHO rewriting history has sense *only* for distributed version control systems, regardless of technical issues / implementation details.

As to &quot;partial checkout&quot; (ability to checkout just 3 relevant files out of 5000): it plays merry hell with whole-tree (whole-project) commits, and encourages gigantic monolithic repositories. As to Git having no interest in this feature: from some time Git has submodules support, which is proper way of dividing project; it is something akin to svn:externals &quot;done right&quot; ;-). &quot;Partial checkouts&quot; is often requested feature, and from what I can see Nguyen Thai Ngoc Duy are planning to implement it.


Subversion has just too many issues; I wouldn&#039;t enumerate them here. And Git can be used also in centralized fashion, as centralized SCM.

One more thing: as Linus said in his Google Tech Talk, for projects with very large community you want to have &quot;network of trust&quot;, because maintainer does not scale. So IMHO DSCM is better for such projects. For single developer project DSCM are mich easier to set-up than centralized SCMs; it is just &quot; init&quot; in top dir of your project. So...</description>
		<content:encoded><![CDATA[<p>@Loren:</p>
<p>Rewriting (changing) *published* history is a big no-no. In centralized SCM commiting means publishing. In distributed SCM publishing (push) is separated from comitting changes. So IMHO rewriting history has sense *only* for distributed version control systems, regardless of technical issues / implementation details.</p>
<p>As to &#8220;partial checkout&#8221; (ability to checkout just 3 relevant files out of 5000): it plays merry hell with whole-tree (whole-project) commits, and encourages gigantic monolithic repositories. As to Git having no interest in this feature: from some time Git has submodules support, which is proper way of dividing project; it is something akin to svn:externals &#8220;done right&#8221; ;-). &#8220;Partial checkouts&#8221; is often requested feature, and from what I can see Nguyen Thai Ngoc Duy are planning to implement it.</p>
<p>Subversion has just too many issues; I wouldn&#8217;t enumerate them here. And Git can be used also in centralized fashion, as centralized SCM.</p>
<p>One more thing: as Linus said in his Google Tech Talk, for projects with very large community you want to have &#8220;network of trust&#8221;, because maintainer does not scale. So IMHO DSCM is better for such projects. For single developer project DSCM are mich easier to set-up than centralized SCMs; it is just &#8221; init&#8221; in top dir of your project. So&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Loren Segal</title>
		<link>http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/comment-page-1/#comment-40</link>
		<dc:creator>Loren Segal</dc:creator>
		<pubDate>Sun, 24 Feb 2008 00:38:26 +0000</pubDate>
		<guid isPermaLink="false">http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/#comment-40</guid>
		<description>@ Jakub:

Administrating your repository and editing previous changesets does not inherently require a distributed system. That&#039;s purely up to the implementation details of the SCM you&#039;re using. If anything, shame on Subversion for not adding these features- but they *can* exist without changing workflow.

Like I said before, I admit that Git has great *technical* advantages over Subversion. I can understand why that has cause people to start moving away from svn-- heck, I&#039;m doing it myself. However, most of what I heard up until now has not been anything that is completely out of the scope of Subversion&#039;s work model. I still won&#039;t completely abandon ship until the SVN community/devs make it clear that they will not attempt to improve the places where Git completely destroys them. 

Subversion has its own advantages, they just don&#039;t lie in the &quot;technical&quot; end, which everyone here is focusing on. It&#039;s not about the brilliance of uber-unique SHA1 hashes, amazing tree-like filesystems and seamless branching/merging, but rather about simplifying workflow from the non-technical end. For instance, being able to check out just 3 relevant files in a repository of 5000 has enormous advantages, and this is something Git has no interest in from what I know.</description>
		<content:encoded><![CDATA[<p>@ Jakub:</p>
<p>Administrating your repository and editing previous changesets does not inherently require a distributed system. That&#8217;s purely up to the implementation details of the SCM you&#8217;re using. If anything, shame on Subversion for not adding these features- but they *can* exist without changing workflow.</p>
<p>Like I said before, I admit that Git has great *technical* advantages over Subversion. I can understand why that has cause people to start moving away from svn&#8211; heck, I&#8217;m doing it myself. However, most of what I heard up until now has not been anything that is completely out of the scope of Subversion&#8217;s work model. I still won&#8217;t completely abandon ship until the SVN community/devs make it clear that they will not attempt to improve the places where Git completely destroys them. </p>
<p>Subversion has its own advantages, they just don&#8217;t lie in the &#8220;technical&#8221; end, which everyone here is focusing on. It&#8217;s not about the brilliance of uber-unique SHA1 hashes, amazing tree-like filesystems and seamless branching/merging, but rather about simplifying workflow from the non-technical end. For instance, being able to check out just 3 relevant files in a repository of 5000 has enormous advantages, and this is something Git has no interest in from what I know.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jakub Narebski</title>
		<link>http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/comment-page-1/#comment-38</link>
		<dc:creator>Jakub Narebski</dc:creator>
		<pubDate>Sat, 23 Feb 2008 21:56:09 +0000</pubDate>
		<guid isPermaLink="false">http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/#comment-38</guid>
		<description>Another wonderfull feature of Git (if used with some restraint) is ability to rewrite history. 

How many times you have patch ready to send in your email client / last review before sending in your editor to notice a bug in a commit, or a typo in a commit message? Or perhaps you decided that documentation update should go into the same commit? &quot;git commit --amend&quot; is your friend.

Or perhaps when creating a series of commit (clean history, better review, bisectability) introducing some new feature, and in the middle of series you have noticed that with some change to infrastructure introducing this feature would be mich easier; cahnge which should go at the beginning of series. Or noticed a bug in an earlier commit? Or decided that the change had grown too much and commit should be split? &quot;git rebase --interactive&quot;, or cherry-pick, or StGit / Guilt is your friend.

Of course this makes sense only if you can have private development, in short only for distributed version control system.

----
@Loren Segal: &quot;everybody knows where to find your changesets&quot;

With Git, or any other DSCM you can always have central publishing repo, like e.g. Linus tree on kernel.org is authoritative source to &quot;get changesets&quot;.</description>
		<content:encoded><![CDATA[<p>Another wonderfull feature of Git (if used with some restraint) is ability to rewrite history. </p>
<p>How many times you have patch ready to send in your email client / last review before sending in your editor to notice a bug in a commit, or a typo in a commit message? Or perhaps you decided that documentation update should go into the same commit? &#8220;git commit &#8211;amend&#8221; is your friend.</p>
<p>Or perhaps when creating a series of commit (clean history, better review, bisectability) introducing some new feature, and in the middle of series you have noticed that with some change to infrastructure introducing this feature would be mich easier; cahnge which should go at the beginning of series. Or noticed a bug in an earlier commit? Or decided that the change had grown too much and commit should be split? &#8220;git rebase &#8211;interactive&#8221;, or cherry-pick, or StGit / Guilt is your friend.</p>
<p>Of course this makes sense only if you can have private development, in short only for distributed version control system.</p>
<p>&#8212;-<br />
@Loren Segal: &#8220;everybody knows where to find your changesets&#8221;</p>
<p>With Git, or any other DSCM you can always have central publishing repo, like e.g. Linus tree on kernel.org is authoritative source to &#8220;get changesets&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Loren Segal</title>
		<link>http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/comment-page-1/#comment-37</link>
		<dc:creator>Loren Segal</dc:creator>
		<pubDate>Sat, 23 Feb 2008 19:11:14 +0000</pubDate>
		<guid isPermaLink="false">http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/#comment-37</guid>
		<description>@ Matt:

&quot;Permissions&quot; and &quot;convincing&quot; in Subversion repositories are merely a configuration issue, though; with proper write access already there this is a non-issue, and with little infrastructure you can automate branch creation / setting up write access to anonymous users. Yes, it&#039;s a little more awkward just because it&#039;s not natively supported, but the benefit is that everybody knows where to find your changesets.</description>
		<content:encoded><![CDATA[<p>@ Matt:</p>
<p>&#8220;Permissions&#8221; and &#8220;convincing&#8221; in Subversion repositories are merely a configuration issue, though; with proper write access already there this is a non-issue, and with little infrastructure you can automate branch creation / setting up write access to anonymous users. Yes, it&#8217;s a little more awkward just because it&#8217;s not natively supported, but the benefit is that everybody knows where to find your changesets.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt Todd</title>
		<link>http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/comment-page-1/#comment-36</link>
		<dc:creator>Matt Todd</dc:creator>
		<pubDate>Sat, 23 Feb 2008 19:01:33 +0000</pubDate>
		<guid isPermaLink="false">http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/#comment-36</guid>
		<description>One thing that would not be possible with SVN would be to make another branch on your own branch/copy unless you can convince the admins that you need two branches or move all the files around into subdirectories for each &quot;private branch&quot;.

But really, neither of those are acceptable solutions because, either way, you&#039;re taking away time and adding unneeded complexity for such a simple task.

The biggest problem with SVN is, when it comes to branching, having to have the admins create a branch for you and all the work on your end to convince them to do so for you and on their end actually evaluating your request and performing the necessary action. That&#039;s time wasted for two people, not just one...</description>
		<content:encoded><![CDATA[<p>One thing that would not be possible with SVN would be to make another branch on your own branch/copy unless you can convince the admins that you need two branches or move all the files around into subdirectories for each &#8220;private branch&#8221;.</p>
<p>But really, neither of those are acceptable solutions because, either way, you&#8217;re taking away time and adding unneeded complexity for such a simple task.</p>
<p>The biggest problem with SVN is, when it comes to branching, having to have the admins create a branch for you and all the work on your end to convince them to do so for you and on their end actually evaluating your request and performing the necessary action. That&#8217;s time wasted for two people, not just one&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James McKinney</title>
		<link>http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/comment-page-1/#comment-35</link>
		<dc:creator>James McKinney</dc:creator>
		<pubDate>Sat, 23 Feb 2008 01:52:20 +0000</pubDate>
		<guid isPermaLink="false">http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/#comment-35</guid>
		<description>&quot;Any SCM that does not let me check in code and switch branches while I am on an airplane is useless to me.&quot;

Yeah, because, fuck man, I live half my life in an airplane....</description>
		<content:encoded><![CDATA[<p>&#8220;Any SCM that does not let me check in code and switch branches while I am on an airplane is useless to me.&#8221;</p>
<p>Yeah, because, fuck man, I live half my life in an airplane&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mr eel</title>
		<link>http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/comment-page-1/#comment-34</link>
		<dc:creator>Mr eel</dc:creator>
		<pubDate>Fri, 22 Feb 2008 23:57:19 +0000</pubDate>
		<guid isPermaLink="false">http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/#comment-34</guid>
		<description>For small projects Git is ideal. Let&#039;s consider the smallest amount of coders on a project, like… just me.

With git I cd into a directory, init the repository do some coding. Check it in. Done. With SVN I have to have the repo in one place, them import into it, then check out, then code, then commit. I end up with two sets of files for the one project. I found that annoying.

Git makes it so easy that I tend to use it on even smaller projects.

Also, I really think the cheap branching shouldn&#039;t be underrated. It has really changed the way I develop. I tend to keep related changes in their own branches, which makes committing much easier and lets me switch between tasks easily, without getting confused over which files belong to which change.

Concerning merb-core as an example of distributed SCM; it is not analogous to submitting a patch. When you do a git pull you&#039;re merging the _history_ of two separate but related repositories. 

This gives an amazing amount of flexibility. It&#039;s possible for a contributor to make large breaking changes to code, while still checking them into their own repo. These changes can then later be merged into main repo, along with the associated history.

Finally, pulling from a remote repository is heaps better than applying patches and checking in changes IMO. A minor thing to be sure, but I&#039;ve always found patching annoying.</description>
		<content:encoded><![CDATA[<p>For small projects Git is ideal. Let&#8217;s consider the smallest amount of coders on a project, like… just me.</p>
<p>With git I cd into a directory, init the repository do some coding. Check it in. Done. With SVN I have to have the repo in one place, them import into it, then check out, then code, then commit. I end up with two sets of files for the one project. I found that annoying.</p>
<p>Git makes it so easy that I tend to use it on even smaller projects.</p>
<p>Also, I really think the cheap branching shouldn&#8217;t be underrated. It has really changed the way I develop. I tend to keep related changes in their own branches, which makes committing much easier and lets me switch between tasks easily, without getting confused over which files belong to which change.</p>
<p>Concerning merb-core as an example of distributed SCM; it is not analogous to submitting a patch. When you do a git pull you&#8217;re merging the _history_ of two separate but related repositories. </p>
<p>This gives an amazing amount of flexibility. It&#8217;s possible for a contributor to make large breaking changes to code, while still checking them into their own repo. These changes can then later be merged into main repo, along with the associated history.</p>
<p>Finally, pulling from a remote repository is heaps better than applying patches and checking in changes IMO. A minor thing to be sure, but I&#8217;ve always found patching annoying.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Wilson Bilkovich</title>
		<link>http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/comment-page-1/#comment-33</link>
		<dc:creator>Wilson Bilkovich</dc:creator>
		<pubDate>Fri, 22 Feb 2008 21:38:07 +0000</pubDate>
		<guid isPermaLink="false">http://gnuu.org/2008/02/22/your-scm-may-be-decentralized-but-your-project-isnt/#comment-33</guid>
		<description>I must not be a frog then.</description>
		<content:encoded><![CDATA[<p>I must not be a frog then.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
