<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Source Code Promotion Model</title>
	<atom:link href="http://thirdshelf.com/2008/09/24/source-code-promotion-model/feed/" rel="self" type="application/rss+xml" />
	<link>http://thirdshelf.com/2008/09/24/source-code-promotion-model/</link>
	<description></description>
	<lastBuildDate>Fri, 02 Dec 2011 20:32:57 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Sydney du Plooy</title>
		<link>http://thirdshelf.com/2008/09/24/source-code-promotion-model/comment-page-1/#comment-22</link>
		<dc:creator><![CDATA[Sydney du Plooy]]></dc:creator>
		<pubDate>Thu, 23 Apr 2009 18:17:18 +0000</pubDate>
		<guid isPermaLink="false">http://thirdshelf.wordpress.com/?p=150#comment-22</guid>
		<description><![CDATA[Thank you for pointing out the mistake. You are quite right and I have corrected the comment to now show /p:FromLabel=live /p:ToLabel=stage.]]></description>
		<content:encoded><![CDATA[<p>Thank you for pointing out the mistake. You are quite right and I have corrected the comment to now show /p:FromLabel=live /p:ToLabel=stage.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan</title>
		<link>http://thirdshelf.com/2008/09/24/source-code-promotion-model/comment-page-1/#comment-21</link>
		<dc:creator><![CDATA[Jan]]></dc:creator>
		<pubDate>Thu, 23 Apr 2009 16:15:08 +0000</pubDate>
		<guid isPermaLink="false">http://thirdshelf.wordpress.com/?p=150#comment-21</guid>
		<description><![CDATA[error Condition=&quot;&#039;$(FromLabel)&#039;==&#039;$(StageLabel)&#039; and &#039;$(ToLabel)&#039;!=&#039;$(PreStageLabel)&#039;&quot;  
    Text=&quot;$(StageLabel) can only be moved to $(PreStageLabel).&quot;  


is the condition I was referring to in my previous post...]]></description>
		<content:encoded><![CDATA[<p>error Condition=&#8221;&#8216;$(FromLabel)&#8217;==&#8217;$(StageLabel)&#8217; and &#8216;$(ToLabel)&#8217;!=&#8217;$(PreStageLabel)&#8217;&#8221;<br />
    Text=&#8221;$(StageLabel) can only be moved to $(PreStageLabel).&#8221;  </p>
<p>is the condition I was referring to in my previous post&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan</title>
		<link>http://thirdshelf.com/2008/09/24/source-code-promotion-model/comment-page-1/#comment-20</link>
		<dc:creator><![CDATA[Jan]]></dc:creator>
		<pubDate>Thu, 23 Apr 2009 15:48:51 +0000</pubDate>
		<guid isPermaLink="false">http://thirdshelf.wordpress.com/?p=150#comment-20</guid>
		<description><![CDATA[Hi there,

I assume it wasn&#039;t possible to move the label from stage to live.
In your post you have this condition:

&lt;!-- check sanity : stage label can only move to pre-stage --&gt;  

based on that I assumed it wasn&#039;t possible, and that confused me a bit because the logical approach is to move the label &#039;up&#039; from stage to live.]]></description>
		<content:encoded><![CDATA[<p>Hi there,</p>
<p>I assume it wasn&#8217;t possible to move the label from stage to live.<br />
In your post you have this condition:</p>
<p><!-- check sanity : stage label can only move to pre-stage -->  </p>
<p>based on that I assumed it wasn&#8217;t possible, and that confused me a bit because the logical approach is to move the label &#8216;up&#8217; from stage to live.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sydney du Plooy</title>
		<link>http://thirdshelf.com/2008/09/24/source-code-promotion-model/comment-page-1/#comment-19</link>
		<dc:creator><![CDATA[Sydney du Plooy]]></dc:creator>
		<pubDate>Thu, 23 Apr 2009 15:14:06 +0000</pubDate>
		<guid isPermaLink="false">http://thirdshelf.wordpress.com/?p=150#comment-19</guid>
		<description><![CDATA[The live label is automatically assigned when you promote the build from the stage label to the live label. Have a look at special case #1 in the post. What happens is that the current version of live is first marked with a new label. It looks something along the lines of live-23042009. We then execute the following command on the command line: c:\&gt;msbuild tfsbuild.proj @tfsbuild.rsp /p:SolutionRoot=”[project source code directory]” /target:promote /p:FromLabel=live /p:ToLabel=stage. This will move the live label to the same place in the version control system where the stage label is. This is how we promote the stage version to live. If the live label didn&#039;t exist, it will automatically be created when the above mentioned command line is executed.

A promotion can be done from your workstation by executing the command line c:\&gt;msbuild tfsbuild.proj @tfsbuild.rsp /p:SolutionRoot=”[project source code directory]” /target:promote /p:FromLabel=[pre-stage/stage/live...] /p:ToLabel=[pre-stage/stage/live]. It does not have to execute on the server as it is only moving labels in the version control system. Provided that it is executed in a folder where TFS can determine your workspace.

That&#039;s correct, a separate build must be configured and set to checkout the source code for a specific label. In our configuration I have separate builds configured to use a different response file (.rsp) that specifies the version of source code to use. This is done using the /version:L[pre-stage/stage/live...] parameter of the tf.exe utility.]]></description>
		<content:encoded><![CDATA[<p>The live label is automatically assigned when you promote the build from the stage label to the live label. Have a look at special case #1 in the post. What happens is that the current version of live is first marked with a new label. It looks something along the lines of live-23042009. We then execute the following command on the command line: c:\&gt;msbuild tfsbuild.proj @tfsbuild.rsp /p:SolutionRoot=”[project source code directory]” /target:promote /p:FromLabel=live /p:ToLabel=stage. This will move the live label to the same place in the version control system where the stage label is. This is how we promote the stage version to live. If the live label didn&#8217;t exist, it will automatically be created when the above mentioned command line is executed.</p>
<p>A promotion can be done from your workstation by executing the command line c:\&gt;msbuild tfsbuild.proj @tfsbuild.rsp /p:SolutionRoot=”[project source code directory]” /target:promote /p:FromLabel=[pre-stage/stage/live...] /p:ToLabel=[pre-stage/stage/live]. It does not have to execute on the server as it is only moving labels in the version control system. Provided that it is executed in a folder where TFS can determine your workspace.</p>
<p>That&#8217;s correct, a separate build must be configured and set to checkout the source code for a specific label. In our configuration I have separate builds configured to use a different response file (.rsp) that specifies the version of source code to use. This is done using the /version:L[pre-stage/stage/live...] parameter of the tf.exe utility.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan</title>
		<link>http://thirdshelf.com/2008/09/24/source-code-promotion-model/comment-page-1/#comment-18</link>
		<dc:creator><![CDATA[Jan]]></dc:creator>
		<pubDate>Thu, 23 Apr 2009 13:19:37 +0000</pubDate>
		<guid isPermaLink="false">http://thirdshelf.wordpress.com/?p=150#comment-18</guid>
		<description><![CDATA[Hi there,

thanks for the response, I think I almost get it.
If I understand it correct, you manually asign the live label?

Where do you execute the msbuild, has to be on the server?
If I want to kick off a build for a specific promotion group I probably have to configure the build to only use sources with a specific label?

Again thanks]]></description>
		<content:encoded><![CDATA[<p>Hi there,</p>
<p>thanks for the response, I think I almost get it.<br />
If I understand it correct, you manually asign the live label?</p>
<p>Where do you execute the msbuild, has to be on the server?<br />
If I want to kick off a build for a specific promotion group I probably have to configure the build to only use sources with a specific label?</p>
<p>Again thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sydney du Plooy</title>
		<link>http://thirdshelf.com/2008/09/24/source-code-promotion-model/comment-page-1/#comment-16</link>
		<dc:creator><![CDATA[Sydney du Plooy]]></dc:creator>
		<pubDate>Thu, 16 Apr 2009 18:22:51 +0000</pubDate>
		<guid isPermaLink="false">http://thirdshelf.wordpress.com/?p=150#comment-16</guid>
		<description><![CDATA[Thank you for your comments and questions. 

Labels are used to mark and group a set of files that belong together, for example, the set of source files that make up the internal test version. Now, assuming that there aren&#039;t any other labels in the version control system, you would want to apply this new &quot;internal-test&quot; label to current version of source code, which is known as &quot;T&quot;. T (Tip) is a well known version specification in Team Foundation Server. That will result in the &quot;internal-test&quot; label to be at the same level as T. As soon you start developing and follow that up with a check-in, the internal-test label will be at a level above or below (it&#039;s a perspective thing) the T version. The point of the matter is that we are continually moving the &quot;internal-test&quot; label to the latest version T, whether you see that below or above the latest version T.

After development is done, you would simply execute the target called &quot;Promote&quot; which is defined in the build file as:

&lt;Target Name=&quot;Promote&quot;&gt;
... all the code in the post ...
&lt;/Target&gt;

It will typically be executed from the command line as: 

c:\&gt;msbuild tfsbuild.proj @tfsbuild.rsp /p:SolutionRoot=&quot;[project source code directory]&quot; /target:promote /p:FromLabel=pre-stage /p:ToLabel=T

That will execute the Promote target and pass it two parameters, namely FromLabel and ToLabel with pre-stage and T as the respective parameter values. This will result in the pre-stage label being removed from the current set of files it marks and re-applied to the current version T. 

A build can be automatically kicked off by using the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/x8zx72cd.aspx&quot; rel=&quot;nofollow&quot;&gt;Exec task&lt;/a&gt; to execute the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/aa337631.aspx&quot; rel=&quot;nofollow&quot;&gt;tfsbuild.exe start&lt;/a&gt; command.]]></description>
		<content:encoded><![CDATA[<p>Thank you for your comments and questions. </p>
<p>Labels are used to mark and group a set of files that belong together, for example, the set of source files that make up the internal test version. Now, assuming that there aren&#8217;t any other labels in the version control system, you would want to apply this new &#8220;internal-test&#8221; label to current version of source code, which is known as &#8220;T&#8221;. T (Tip) is a well known version specification in Team Foundation Server. That will result in the &#8220;internal-test&#8221; label to be at the same level as T. As soon you start developing and follow that up with a check-in, the internal-test label will be at a level above or below (it&#8217;s a perspective thing) the T version. The point of the matter is that we are continually moving the &#8220;internal-test&#8221; label to the latest version T, whether you see that below or above the latest version T.</p>
<p>After development is done, you would simply execute the target called &#8220;Promote&#8221; which is defined in the build file as:</p>
<p>&lt;Target Name=&#8221;Promote&#8221;&gt;<br />
&#8230; all the code in the post &#8230;<br />
&lt;/Target&gt;</p>
<p>It will typically be executed from the command line as: </p>
<p>c:\&gt;msbuild tfsbuild.proj @tfsbuild.rsp /p:SolutionRoot=&#8221;[project source code directory]&#8221; /target:promote /p:FromLabel=pre-stage /p:ToLabel=T</p>
<p>That will execute the Promote target and pass it two parameters, namely FromLabel and ToLabel with pre-stage and T as the respective parameter values. This will result in the pre-stage label being removed from the current set of files it marks and re-applied to the current version T. </p>
<p>A build can be automatically kicked off by using the <a href="http://msdn.microsoft.com/en-us/library/x8zx72cd.aspx" rel="nofollow">Exec task</a> to execute the <a href="http://msdn.microsoft.com/en-us/library/aa337631.aspx" rel="nofollow">tfsbuild.exe start</a> command.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan</title>
		<link>http://thirdshelf.com/2008/09/24/source-code-promotion-model/comment-page-1/#comment-15</link>
		<dc:creator><![CDATA[Jan]]></dc:creator>
		<pubDate>Thu, 16 Apr 2009 11:52:23 +0000</pubDate>
		<guid isPermaLink="false">http://thirdshelf.wordpress.com/?p=150#comment-15</guid>
		<description><![CDATA[Hi there,

this is a very interesting post, but there are a few things I don&#039;t quite understand

 - why are the labels in the version control system being shifted downwards?
How do you work with the labels then? What do you do when development is done and you want to promote it for the internal test

 - i have no experience using MSBuild targets, so how does executing it work?

 - you say that &quot;for every source code promotion there is a corresponding build process that kicks-off&quot;.
How have you realised that?

A lot of questions I know, but we are investigating if we want to use Team System so we don&#039;t have a lot of experience with it and we havn&#039;t worked with MSBuild also...

T.i.a.]]></description>
		<content:encoded><![CDATA[<p>Hi there,</p>
<p>this is a very interesting post, but there are a few things I don&#8217;t quite understand</p>
<p> &#8211; why are the labels in the version control system being shifted downwards?<br />
How do you work with the labels then? What do you do when development is done and you want to promote it for the internal test</p>
<p> &#8211; i have no experience using MSBuild targets, so how does executing it work?</p>
<p> &#8211; you say that &#8220;for every source code promotion there is a corresponding build process that kicks-off&#8221;.<br />
How have you realised that?</p>
<p>A lot of questions I know, but we are investigating if we want to use Team System so we don&#8217;t have a lot of experience with it and we havn&#8217;t worked with MSBuild also&#8230;</p>
<p>T.i.a.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

