<?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"
	>
<channel>
	<title>Comments on: Tags with Mercurial and Forests</title>
	<atom:link href="http://kennke.org/blog/2008/06/06/tags-with-mercurial-and-forests/feed/" rel="self" type="application/rss+xml" />
	<link>http://kennke.org/blog/2008/06/06/tags-with-mercurial-and-forests/</link>
	<description>Roman Kennke's ramblings</description>
	<pubDate>Wed, 07 Jan 2009 03:55:02 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
		<item>
		<title>By: Glen W</title>
		<link>http://kennke.org/blog/2008/06/06/tags-with-mercurial-and-forests/#comment-64892</link>
		<dc:creator>Glen W</dc:creator>
		<pubDate>Sat, 18 Oct 2008 21:03:34 +0000</pubDate>
		<guid isPermaLink="false">http://kennke.org/blog/?p=183#comment-64892</guid>
		<description>Thanks for the nice fix, this is the same issue we faced in our project.

I found your site and read a few of your other posts. Keep up the good work. I just added your RSS feed to my Google News Reader. Looking forward to reading more from you down the road!</description>
		<content:encoded><![CDATA[<p>Thanks for the nice fix, this is the same issue we faced in our project.</p>
<p>I found your site and read a few of your other posts. Keep up the good work. I just added your RSS feed to my Google News Reader. Looking forward to reading more from you down the road!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: roman</title>
		<link>http://kennke.org/blog/2008/06/06/tags-with-mercurial-and-forests/#comment-64679</link>
		<dc:creator>roman</dc:creator>
		<pubDate>Fri, 06 Jun 2008 18:55:52 +0000</pubDate>
		<guid isPermaLink="false">http://kennke.org/blog/?p=183#comment-64679</guid>
		<description>This is taken from a discussion on the mercurial mailing list, I hope this adds a little more light to the specific problems of the different approaches:

Doug:
&gt;&gt;To make it short, my solution is to implement tags just like branches:
&gt; &gt;As simple (f)clones. To be honest, I think the hg tag command is not
&gt; &gt;very useful and seems like something that doesn't really fit. It should
&gt; &gt;probably be an extension, not a core command. At least, using clones
&gt; &gt;feels much more natural to HG and avoids many problems that I had with
&gt; &gt;hg tag. I think that this approach should be recommended over hg tag, or
&gt; &gt;do you generally disagree with that?
&gt; 
&gt; I'm a little bit curious about this, and in particular curious about the pitfalls of using snapshots.
&gt; It seems that you've come to a conclusion that in order to tag a forest you have a tag tree of fclone'd forests?
&gt; Doesn't that mean  you have a centralized single location for tags? I liked the snapshots idea because then the "tags" were as distributable as anything else. Perhaps I'm missing something? Could you explain the snapshots issues in more details?
&gt; 
Sure. A little background first. I have a central forest on a server, to which the developers push their changes. I also have an autobuild infrastructure of several machines, which pull from this central repository and build the thing and set a tag when it's ok (actually, it removes old ok tags and sets a new one). This is done for several target architectures and configuration of the software, so I end up with around 50 different ok tags (one for each possible combination).

The problem with hg tag is that this creates a changeset, which then needs to be pushed back to the central repository somehow (or could possibly be handled in a repository private to the autobuild machinery, but still, it would be a repository that is pushed to by all the autobuild processes). If anything is pushed to the repository in the meantime, this would require a merge, with a good chance to trigger a manual merge, which is not possible in an automated process. I tried to work around this using a special merge wrapper for .hgtags, but I don't trust it to work reliable enough to be honest.

﻿Using snapshots in their own repository, the situation is much better than using hg tag with respect to automatic handling of everything. The autobuild processes only have to push to this small repository that holds the snapshots. There's still a good chance that things need to be merged, but it is almost guaranteed that this can be done without manual intervention. However, still one thing leaves a bad feeling for me in this situation: 1. instead of pushing, I'd actually have to either pull the changeset that adds the snapshot from another repository into the master repo and merge, or add the snapshot directly to the master repository. Either way, I'd have to perform multiple commands on the master repository. Now imagine what happens when multiple autobuild processes try to do this concurrently. Yes, I could implement some kind of locking. Yes, I could implement a kind of service, that does all this from only one process, but both of these solutions add more complexity to the whole process, but I'd rather prefer to decrease complexity. And this is exactly what the tagging-by-cloning approach does for me.</description>
		<content:encoded><![CDATA[<p>This is taken from a discussion on the mercurial mailing list, I hope this adds a little more light to the specific problems of the different approaches:</p>
<p>Doug:<br />
>>To make it short, my solution is to implement tags just like branches:<br />
> >As simple (f)clones. To be honest, I think the hg tag command is not<br />
> >very useful and seems like something that doesn&#8217;t really fit. It should<br />
> >probably be an extension, not a core command. At least, using clones<br />
> >feels much more natural to HG and avoids many problems that I had with<br />
> >hg tag. I think that this approach should be recommended over hg tag, or<br />
> >do you generally disagree with that?<br />
><br />
> I&#8217;m a little bit curious about this, and in particular curious about the pitfalls of using snapshots.<br />
> It seems that you&#8217;ve come to a conclusion that in order to tag a forest you have a tag tree of fclone&#8217;d forests?<br />
> Doesn&#8217;t that mean  you have a centralized single location for tags? I liked the snapshots idea because then the &#8220;tags&#8221; were as distributable as anything else. Perhaps I&#8217;m missing something? Could you explain the snapshots issues in more details?<br />
><br />
Sure. A little background first. I have a central forest on a server, to which the developers push their changes. I also have an autobuild infrastructure of several machines, which pull from this central repository and build the thing and set a tag when it&#8217;s ok (actually, it removes old ok tags and sets a new one). This is done for several target architectures and configuration of the software, so I end up with around 50 different ok tags (one for each possible combination).</p>
<p>The problem with hg tag is that this creates a changeset, which then needs to be pushed back to the central repository somehow (or could possibly be handled in a repository private to the autobuild machinery, but still, it would be a repository that is pushed to by all the autobuild processes). If anything is pushed to the repository in the meantime, this would require a merge, with a good chance to trigger a manual merge, which is not possible in an automated process. I tried to work around this using a special merge wrapper for .hgtags, but I don&#8217;t trust it to work reliable enough to be honest.</p>
<p>﻿Using snapshots in their own repository, the situation is much better than using hg tag with respect to automatic handling of everything. The autobuild processes only have to push to this small repository that holds the snapshots. There&#8217;s still a good chance that things need to be merged, but it is almost guaranteed that this can be done without manual intervention. However, still one thing leaves a bad feeling for me in this situation: 1. instead of pushing, I&#8217;d actually have to either pull the changeset that adds the snapshot from another repository into the master repo and merge, or add the snapshot directly to the master repository. Either way, I&#8217;d have to perform multiple commands on the master repository. Now imagine what happens when multiple autobuild processes try to do this concurrently. Yes, I could implement some kind of locking. Yes, I could implement a kind of service, that does all this from only one process, but both of these solutions add more complexity to the whole process, but I&#8217;d rather prefer to decrease complexity. And this is exactly what the tagging-by-cloning approach does for me.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
