<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.0.11" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: AccuRev streams vs branches</title>
	<link>http://versioncontrolblog.com/2008/01/14/accurev-streams-vs-branches/</link>
	<description>Version control, software configuration management (SCM)</description>
	<pubDate>Thu, 21 Aug 2008 19:01:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.11</generator>

	<item>
		<title>by: DamonPoole</title>
		<link>http://versioncontrolblog.com/2008/01/14/accurev-streams-vs-branches/#comment-740</link>
		<pubDate>Wed, 23 Jan 2008 17:24:07 +0000</pubDate>
		<guid>http://versioncontrolblog.com/2008/01/14/accurev-streams-vs-branches/#comment-740</guid>
					<description>Thanks for your post! Regarding a few of the points you brought up:

In AccuRev, merging handles true renaming and true common ancestor determination. It also handles patching and reverting of individual versions. This capability has been there from the start and is an integral part of the SCM part of the architecture. So, yes, AccuRev does merging very well.

An important point about streams is that they are much more than a GUI convenience. It is not possible to bolt-on streams if you have a branch and label based architecture. I had originally intended to do it that way, but it turns out that the data models are too different. Sort of like building Ethernet out of Token Ring. ClearCase UCM takes the approach of building streams on top of branches and labels, I'll leave it to somebody else to comment on how well that works in practice.

While the paper is pretty good, nothing beats seeing streams in action: &lt;a href="http://accurev.com/demonstration.html" rel="nofollow"&gt;streams demo&lt;/a&gt;.

As for the paper on Timesafe, I wrote that years ago and haven't gotten around to updating it yet. SVN and Git are definitely better in this regard than CVS and ClearCase, but without having Timesafe as a design goal, it is difficult to achieve it in practice. For instance, like CVS, SVN doesn't keep information about which branches you've checked out into your working directories in the database so you can't easily compare two working areas and you find out definitively: "I am using this branch in this directory and that branch in that one." From the SCM's perspective, you checked out a bunch of versions. And since that information is just sitting around as individual file/version information on your local disk, it certainly doesn't pass the Timesafe test of being versioned. That is, this directory was using this branch last week and this other branch today.

Lately, I've been thinking about updating both papers, especially the Timesafe one since it is was written as a research paper and is a bit obtuse.</description>
		<content:encoded><![CDATA[<p>Thanks for your post! Regarding a few of the points you brought up:</p>
<p>In AccuRev, merging handles true renaming and true common ancestor determination. It also handles patching and reverting of individual versions. This capability has been there from the start and is an integral part of the SCM part of the architecture. So, yes, AccuRev does merging very well.</p>
<p>An important point about streams is that they are much more than a GUI convenience. It is not possible to bolt-on streams if you have a branch and label based architecture. I had originally intended to do it that way, but it turns out that the data models are too different. Sort of like building Ethernet out of Token Ring. ClearCase UCM takes the approach of building streams on top of branches and labels, I&#8217;ll leave it to somebody else to comment on how well that works in practice.</p>
<p>While the paper is pretty good, nothing beats seeing streams in action: <a href="http://accurev.com/demonstration.html" rel="nofollow">streams demo</a>.</p>
<p>As for the paper on Timesafe, I wrote that years ago and haven&#8217;t gotten around to updating it yet. SVN and Git are definitely better in this regard than CVS and ClearCase, but without having Timesafe as a design goal, it is difficult to achieve it in practice. For instance, like CVS, SVN doesn&#8217;t keep information about which branches you&#8217;ve checked out into your working directories in the database so you can&#8217;t easily compare two working areas and you find out definitively: &#8220;I am using this branch in this directory and that branch in that one.&#8221; From the SCM&#8217;s perspective, you checked out a bunch of versions. And since that information is just sitting around as individual file/version information on your local disk, it certainly doesn&#8217;t pass the Timesafe test of being versioned. That is, this directory was using this branch last week and this other branch today.</p>
<p>Lately, I&#8217;ve been thinking about updating both papers, especially the Timesafe one since it is was written as a research paper and is a bit obtuse.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: lvz</title>
		<link>http://versioncontrolblog.com/2008/01/14/accurev-streams-vs-branches/#comment-685</link>
		<pubDate>Mon, 14 Jan 2008 09:59:37 +0000</pubDate>
		<guid>http://versioncontrolblog.com/2008/01/14/accurev-streams-vs-branches/#comment-685</guid>
					<description>well, a picture worth a 1000 words:
http://www.fepus.net/component_dev_accurev.jpg
This is a screenshot of the "stream browser", here Dave from AccuRev explains how to achieve component-based development (full discussion here [http://www.cmcrossroads.com/option,com_smf/Itemid,180/topic,73272.0.html])
"Application" is the root stream, "Components" &#38; "Products" are virtual (pass-thru) streams here for categorization purpose only. then there's a bunch of streams for each component or product (Niko, WebForms, etc.) with a full (and possibly different!!) workflow illustrated by a stream hierarchy. the yellow streams are the sandboxes (workspaces) for each team member.
brilliant tool!  and that's just in a nutshell.</description>
		<content:encoded><![CDATA[<p>well, a picture worth a 1000 words:<br />
<a href="http://www.fepus.net/component_dev_accurev.jpg" rel="nofollow">http://www.fepus.net/component_dev_accurev.jpg</a><br />
This is a screenshot of the &#8220;stream browser&#8221;, here Dave from AccuRev explains how to achieve component-based development (full discussion here [http://www.cmcrossroads.com/option,com_smf/Itemid,180/topic,73272.0.html])<br />
&#8220;Application&#8221; is the root stream, &#8220;Components&#8221; &amp; &#8220;Products&#8221; are virtual (pass-thru) streams here for categorization purpose only. then there&#8217;s a bunch of streams for each component or product (Niko, WebForms, etc.) with a full (and possibly different!!) workflow illustrated by a stream hierarchy. the yellow streams are the sandboxes (workspaces) for each team member.<br />
brilliant tool!  and that&#8217;s just in a nutshell.
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
