<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software Configuration Management and Agile Software Development &#187; Stream-based</title>
	<atom:link href="http://accurev.com/blog/tag/stream-based/feed/" rel="self" type="application/rss+xml" />
	<link>http://accurev.com/blog</link>
	<description>SCM and Agile Software Development Blog</description>
	<lastBuildDate>Fri, 03 Feb 2012 19:28:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>AccuRev TimeSafe makes retrieving code from &quot;anywhen&quot; easy</title>
		<link>http://accurev.com/blog/2007/10/24/accurev-timesafe-makes-retrieving-code-from-anywhen-easy/</link>
		<comments>http://accurev.com/blog/2007/10/24/accurev-timesafe-makes-retrieving-code-from-anywhen-easy/#comments</comments>
		<pubDate>Wed, 24 Oct 2007 18:00:05 +0000</pubDate>
		<dc:creator>jtalbott</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[change management]]></category>
		<category><![CDATA[configuration management]]></category>
		<category><![CDATA[development process]]></category>
		<category><![CDATA[labeling]]></category>
		<category><![CDATA[release candidate]]></category>
		<category><![CDATA[retrieving code]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[source control]]></category>
		<category><![CDATA[Stream-based]]></category>
		<category><![CDATA[tagging]]></category>
		<category><![CDATA[time-basis]]></category>
		<category><![CDATA[TimeSafe]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/2007/10/24/accurev-timesafe-makes-retrieving-code-from-anywhen-easy/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/10/24/accurev-timesafe-makes-retrieving-code-from-anywhen-easy/' addthis:title='AccuRev TimeSafe makes retrieving code from &#34;anywhen&#34; easy ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>One of the problems frequently faced in traditional branch-and-label version control systems is how to retrieve a particular configuration of code from the past if it wasn&#8217;t tagged or labeled at the time. You forgot to label the release-candidate-6 branch from last month before building it, and now you have no way to accurately pull [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/10/24/accurev-timesafe-makes-retrieving-code-from-anywhen-easy/' addthis:title='AccuRev TimeSafe makes retrieving code from &#34;anywhen&#34; easy '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/10/24/accurev-timesafe-makes-retrieving-code-from-anywhen-easy/' addthis:title='AccuRev TimeSafe makes retrieving code from &quot;anywhen&quot; easy ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p><span style="font-family: Arial;">One of the problems frequently faced in traditional branch-and-label <a href="http://www.accurev.com/scm_comparisons.html" target="_blank">version control </a>systems is how to retrieve a particular configuration of code from the past if it wasn&#8217;t tagged or labeled at the time. You forgot to label the release-candidate-6 branch from last month before building it, and now you have no way to accurately pull the correct files.</span></p>
<p><span style="font-family: Arial;">AccuRev, through a combination of its TimeSafe architecture and the power of its streams, makes this easy. Say you have a development process where code follows a promotion model from individual contributors to an Integration area, to a QA area, to Production. The release candidates are based on the QA stream. The QA team built and released RC5 on Friday, June 7th at 11:00 pm, but unfortunately neglected to snapshot it. In the following weeks, additional changes were promoted to the QA stream.</span></p>
<p><span style="font-family: Arial;">To get guaranteed access to the code configuration as it existed for RC5, you could do the following:<br />
* create a stream off of QA and assign it a time basis of June 7th, 11:00 pm<br />
* run &#8220;accurev pop&#8221; to retrieve the contents to disk</span></p>
<p><a href="http://www.accurev.com/blog/wp-content/uploads/2007/06/anywhen_stream.jpg" target="_blank"><img src="http://www.accurev.com/blog/wp-content/uploads/2007/06/anywhen_stream.jpg" alt="anywhen stream AccuRev TimeSafe makes retrieving code from &quot;anywhen&quot; easy" width="801" height="399" title="AccuRev TimeSafe makes retrieving code from &quot;anywhen&quot; easy" /></a></p>
<p><span style="font-family: Arial;">It&#8217;s as easy as that! Furthermore, if you want to automate this process, how about creating a stream for all your source pulls, call it something like &lt;depot&gt;_source_pull (or equivalent, doesn’t really matter). Then, whenever you need source files, use the &#8220;accurev chstream&#8221; command to first move it to whatever parent stream you want the files from and second to change the time-basis on it to the correct time or transaction. Lastly, you pop from that time-basis stream to place the files in whatever location you want:</span></p>
<p><span style="font-family: Arial;">&#8220;accurev chstream -s &lt;depot&gt;_source_pull -b &lt;depot&gt;_target_stream&#8221;<br />
&#8220;accurev chstream -s &lt;depot&gt;_source_pull -t 356&#8243;<br />
&#8220;accurev pop -R -O -v &lt;depot&gt;_source_pull -L c:\build_dir .&#8221;</span></p>
<p><span style="font-family: Arial;">There are other ways to skin this cat in AccuRev, as there usually are, but this is a quick way to get guaranteed results.</span></p>
<p class="MsoNormal"><span style="font-family: Arial; color: #000080; font-size: x-small;"><span style="font-size: 10pt; color: navy; font-family: Arial;"> </span></span></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/10/24/accurev-timesafe-makes-retrieving-code-from-anywhen-easy/' addthis:title='AccuRev TimeSafe makes retrieving code from &quot;anywhen&quot; easy '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2007/10/24/accurev-timesafe-makes-retrieving-code-from-anywhen-easy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Programmable Completion &#8211; AccuRev + GNU Bash</title>
		<link>http://accurev.com/blog/2007/10/18/agile-programmable-completion-accurev-gnu-bash/</link>
		<comments>http://accurev.com/blog/2007/10/18/agile-programmable-completion-accurev-gnu-bash/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 19:59:02 +0000</pubDate>
		<dc:creator>dave</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Agile SCM]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[GNU Bash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[programmable completion]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[SCM systems]]></category>
		<category><![CDATA[shell facility]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[Stream-based]]></category>
		<category><![CDATA[TAB Completion]]></category>
		<category><![CDATA[Windows users]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/2007/10/18/agile-programmable-completion-accurev-gnu-bash/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/10/18/agile-programmable-completion-accurev-gnu-bash/' addthis:title='Agile Programmable Completion &#8211; AccuRev + GNU Bash ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>When at the command line (CLI), productivity means keeping your hands on the keyboard. But once your fingers have memorized all the commands, flags, static arguments, and common usage patterns &#8212; can you still get faster? Yes. Programmable completion is a shell facility that allows for customizing the command line in real-time as it is [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/10/18/agile-programmable-completion-accurev-gnu-bash/' addthis:title='Agile Programmable Completion &#8211; AccuRev + GNU Bash '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/10/18/agile-programmable-completion-accurev-gnu-bash/' addthis:title='Agile Programmable Completion &#8211; AccuRev + GNU Bash ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>When at the <a href="http://en.wikipedia.org/wiki/Command_line_interface" target="_blank">command line</a> (CLI), productivity means keeping your hands on the keyboard. But once your fingers have memorized all the commands, flags, static arguments, and common usage patterns &#8212; can you still get faster?</p>
<p><span style="font-weight:bold">Yes</span>.</p>
<p>Programmable completion is a shell facility that allows for customizing the command line in real-time as it is typed. Also referred to as &#8220;TAB Completion&#8221;, many shells in both Linux and Windows have a default implementation that support completion on filenames and directories. If you&#8217;re lucky, you&#8217;ll even get environment variables and functions.</p>
<p>Let&#8217;s move to software configuration management (SCM). Various branch and label-based SCM systems like CVS have basic tab completion for commands and flags. Thats a good start. But an <span style="font-style:italic">agile </span>user needs a context-sensitive, custom-data completion facility. What you ~really~ want is completion on your own data &#8212; branch names, labels, usernames, etc.</p>
<p>Users of stream-based AccuRev are in luck.</p>
<p>Do you use AccuRev on Linux? If so, <a href="http://www.fepus.net/software/accurev-tools/accurev-bash-completion-3.0.tar.gz">download </a>the latest GNU Bash (2.05+) completion for AccuRev 4.5.x. Here is the <a href="http://www.fepus.net/software/accurev-tools/accurev-bash-completion-3_0/README" target="_blank">README</a>. You&#8217;ll never have to memorize flags or type stream names again.</p>
<p>Coming in Part 2 &#8212; Support for Windows users.</p>
<p>/happy tabbing/ &#8211; dave</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/10/18/agile-programmable-completion-accurev-gnu-bash/' addthis:title='Agile Programmable Completion &#8211; AccuRev + GNU Bash '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2007/10/18/agile-programmable-completion-accurev-gnu-bash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

