<?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>internal fragmentation</title>
	<atom:link href="http://www.selenic.com/blog/index.rss20" rel="self" type="application/rss+xml" />
	<link>http://www.selenic.com/blog</link>
	<description>a personal journal of hacking, science, and technology</description>
	<lastBuildDate>Mon, 26 Dec 2011 23:20:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>November update and Mercurial release numbering</title>
		<link>http://www.selenic.com/blog/?p=751</link>
		<comments>http://www.selenic.com/blog/?p=751#comments</comments>
		<pubDate>Mon, 26 Dec 2011 23:18:39 +0000</pubDate>
		<dc:creator>mpm</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.selenic.com/blog/?p=751</guid>
		<description><![CDATA[As always, things have been busy here, and it&#8217;s taken a while to get all the paperwork for this year&#8217;s fellowship lined up so my updates have dropped off for a few months. But work has continued apace and here&#8217;s what happened in November: released Mercurial 2.0 and python-hglib 0.1 reviewed and merged 136 changesets [...]]]></description>
			<content:encoded><![CDATA[<p>As always, things have been busy here, and it&#8217;s taken a while to get all the paperwork for this year&#8217;s fellowship lined up so my updates have dropped off for a few months. But work has continued apace and here&#8217;s what happened in November:</p>
<ul>
<li>released Mercurial 2.0 and python-hglib 0.1</li>
<li>reviewed and merged 136 changesets</li>
<li>authored 43 csets</li>
<li>138 mailing list messages</li>
<li>worked on 80 bug tracker issues</li>
<li>work on case folding, revsets, test harness, error messages, phase support</li>
<li>daily IRC office hours</li>
</ul>
<p>The big item above, of course, is the release of Mercurial 2.0. So what are the big exciting new features in 2.0? You may be surprised to learn that 2.0 is actually a <a href="http://mercurial.selenic.com/wiki/WhatsNew#Mercurial_2.0_.282011-11-01.29">pretty boring release</a> and that&#8217;s the way we like it.</p>
<p>For many projects, an x.0 release often means a major rethink/rewrite/break with the past. And if you look at projects like Python 3.0, Gnome 3.0, KDE 4.0, and so on, you&#8217;ll see that that kind of approach is often extremely unpopular with existing users.</p>
<p>Mercurial has a different philosophy: we recognize that an SCM is something that people plan on using for years if not decades. People often build elaborate frameworks and build systems around them and breakage here can mean losing many developer-days of time. So we take care to avoid affecting people&#8217;s existing work flows and automation. Regressions get more attention than other bugs.</p>
<p>Further, Mercurial takes an evolutionary approach to development.: steady accumulation of reliable small improvements, with <a href="http://mercurial.selenic.com/wiki/TimeBasedReleasePlan">regular releases</a>. So almost all of the changes in the three and a half years since 1.0 have been in users&#8217; hands for a while now. Our 2.0 release is simply 1.9 + .1. So why not just call it 1.10? First, we already know we will <em>never</em> do a release of the traditional 2.0 style, so there&#8217;s no point sticking on 1.x forever. Second, the difference between 1.0 and 2.0 is actually huge, notwithstanding the fact that most of the intermediate development has already been released to the public.</p>
<p>Similarly, I can tell you today when Mercurial 3.0 will be released: May 1st, 2014. And it will contain a huge number of interesting new features. But you won&#8217;t have to wait for 2014 to use them: they&#8217;ll all be released as soon as they&#8217;re ready. And none of them will require you to &#8220;upgrade&#8221; your repositories or all your users&#8217; installs to keep working.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.selenic.com/blog/?feed=rss2&#038;p=751</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to find rename data in Mercurial</title>
		<link>http://www.selenic.com/blog/?p=744</link>
		<comments>http://www.selenic.com/blog/?p=744#comments</comments>
		<pubDate>Wed, 24 Aug 2011 16:27:09 +0000</pubDate>
		<dc:creator>mpm</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.selenic.com/blog/?p=744</guid>
		<description><![CDATA[A fairly common question from new Mercurial users is &#8220;how do I figure out where/when a file got renamed?&#8221; As an example, let&#8217;s look at the history of a file in the main Mercurial source that got renamed in the distant past. ﻿﻿﻿Start with something like this: $ hg status --rev 10 --copies mercurial/localrepo.py A [...]]]></description>
			<content:encoded><![CDATA[<p>A fairly common question from new Mercurial users is &#8220;how do I figure out where/when a file got renamed?&#8221;</p>
<p>As an example, let&#8217;s look at the history of a file in the main Mercurial source that got renamed in the distant past. ﻿﻿﻿Start with something like this:</p>
<pre style="padding-left: 30px;">$ hg status --rev 10 --copies mercurial/localrepo.py
A mercurial/localrepo.py
  mercurial/hg.py</pre>
<p>This says localrepo.py was copied from hg.py some time between the checkout and rev 10. We can even figure out where that happened:</p>
<pre style="padding-left: 30px;">$ hg log -v -r 'limit(follow("mercurial/localrepo.py") and file("mercurial/localrepo.py"), 1)'
changeset:   1089:142b5d5ec9cc
user:        mpm@selenic.com
date:        Sat Aug 27 14:21:25 2005 -0700
files:       mercurial/changelog.py mercurial/dirstate.py
mercurial/filelog.py mercurial/hg.py mercurial/httprepo.py
mercurial/localrepo.py mercurial/manifest.py mercurial/node.py
mercurial/remoterepo.py mercurial/repo.py mercurial/revlog.py
mercurial/sshrepo.py
description:
Break apart hg.py

- move the various parts of hg.py into their own files
- create node.py to store node manipulation functions</pre>
<p>The magical -r argument can be read as:</p>
<p>&#8220;Find all revisions in the history of localrepo.py where it still has that name and show just the first one&#8221;</p>
<p>See &#8216;<a href="http://www.selenic.com/hg/help/revsets">hg help revsets</a>&#8216; for more info.</p>
<p>But we usually don&#8217;t need anything nearly that complicated. This simple command works where this file hasn&#8217;t existed multiple times:</p>
<pre style="padding-left: 30px;">$ hg log -l 1 -r 0: mercurial/localrepo.py
changeset:   1089:142b5d5ec9cc
user:        mpm@selenic.com
date:        Sat Aug 27 14:21:25 2005 -0700
summary:     Break apart hg.py</pre>
<p>In other words &#8220;starting at rev 0, list one commit mentioning localrepo.py&#8221;</p>
<p>Here we can see exactly what happened in that crazy commit: lots of files copied from hg.py. These are all &#8216;copies&#8217; and not &#8216;renames&#8217; because hg.py continues to exist.</p>
<pre style="padding-left: 30px;">$ hg status --change 1089 -C
M mercurial/hg.py
M mercurial/revlog.py
A mercurial/changelog.py
  mercurial/hg.py
A mercurial/dirstate.py
  mercurial/hg.py
A mercurial/filelog.py
  mercurial/hg.py
A mercurial/httprepo.py
  mercurial/hg.py
A mercurial/localrepo.py
  mercurial/hg.py
A mercurial/manifest.py
  mercurial/hg.py
A mercurial/node.py
A mercurial/remoterepo.py
  mercurial/hg.py
A mercurial/repo.py
A mercurial/sshrepo.py
  mercurial/hg.py</pre>
<p>And lastly, we can do:</p>
<pre style="padding-left: 30px;">$ hg diff --git -r 10 mercurial/localrepo.py
diff --git a/mercurial/hg.py b/mercurial/localrepo.py
copy from mercurial/hg.py
copy to mercurial/localrepo.py
--- a/mercurial/hg.py
+++ b/mercurial/localrepo.py
@@ -1,575 +1,2058 @@
-# hg.py - repository classes for mercurial
+# localrepo.py - read/write repository class for mercurial
 #
-# Copyright 2005 Matt Mackall
...</pre>
<p>The  &#8216;&#8211;git&#8217; flag asks Mercurial to use git&#8217;s non-standard diff format to show copy/rename info, and Mercurial thus shows a diff against hg.py from revision 10 rather starting with an empty file.</p>
<p>We obviously can&#8217;t do all of this in the web interface, but we can still easily track down file origins:</p>
<ul>
<li>Start here: <a href="http://www.selenic.com/hg/">http://www.selenic.com/hg/</a></li>
<li>Click browse</li>
<li>Browse down to mercurial/localrepo.py</li>
<li>Click on file log</li>
<li>Click on &#8216;(0)&#8217; in the upper or lower right to go to the first revision</li>
<li>Now you&#8217;ll see: <a href="http://www.selenic.com/hg/log/142b5d5ec9cc/mercurial/localrepo.py">http://www.selenic.com/hg/log/142b5d5ec9cc/mercurial/localrepo.py</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.selenic.com/blog/?feed=rss2&#038;p=744</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>May and June maintainer updates</title>
		<link>http://www.selenic.com/blog/?p=742</link>
		<comments>http://www.selenic.com/blog/?p=742#comments</comments>
		<pubDate>Thu, 07 Jul 2011 21:13:10 +0000</pubDate>
		<dc:creator>mpm</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.selenic.com/blog/?p=742</guid>
		<description><![CDATA[Momentum from the 1.9 sprint carried on pretty well right through the 1.9 release. Now that things are a bit quieter, time to catch up on paperwork. May: 1.8.3 release reviewed and merged 303 changesets authored 42 csets wrote 304 mailing list messages weekly GSoC meetings daily IRC office hours June: 1.8.4 release reviewed and [...]]]></description>
			<content:encoded><![CDATA[<p>Momentum from the 1.9 sprint carried on pretty well right through the 1.9 release. Now that things are a bit quieter, time to catch up on paperwork.</p>
<p><strong>May:</strong></p>
<ul>
<li>1.8.3 release</li>
<li>reviewed and merged 303 changesets</li>
<li>authored 42 csets</li>
<li>wrote 304 mailing list messages</li>
<li>weekly GSoC meetings</li>
<li>daily IRC office hours</li>
</ul>
<p><strong>June</strong>:</p>
<ul>
<li>1.8.4 release</li>
<li>reviewed and merged 237 csets</li>
<li>authored 55 csets</li>
<li>wrote 222 mailing list messages</li>
<li>created the new <a href="http://selenic.com/hg/help/filesets">filesets</a> feature</li>
<li>weekly GSoC meetings</li>
<li>daily IRC office hours</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.selenic.com/blog/?feed=rss2&#038;p=742</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>April maintainer update</title>
		<link>http://www.selenic.com/blog/?p=736</link>
		<comments>http://www.selenic.com/blog/?p=736#comments</comments>
		<pubDate>Wed, 04 May 2011 19:42:09 +0000</pubDate>
		<dc:creator>mpm</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.selenic.com/blog/?p=736</guid>
		<description><![CDATA[Mercurial development in April was quite busy, ending with our 1.9 sprint. Released Mercurial 1.8.2 Reviewed and merged 214 changesets Authored 37 changesets 222 mailing list messages Worked on refactoring merge and rebase Worked on threading of our test harness Worked on encoding and revset features 1.9 sprint! GSoC application review Daily office hours]]></description>
			<content:encoded><![CDATA[<p>Mercurial development in April was quite busy, ending with our 1.9 sprint.</p>
<ul>
<li>Released Mercurial 1.8.2</li>
<li>Reviewed and merged 214 changesets</li>
<li>Authored 37 changesets</li>
<li>222 mailing list messages</li>
<li>Worked on refactoring merge and rebase</li>
<li>Worked on threading of our test harness</li>
<li>Worked on encoding and revset features</li>
<li>1.9 sprint!</li>
<li>GSoC application review</li>
<li>Daily office hours</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.selenic.com/blog/?feed=rss2&#038;p=736</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mercurial 1.9 sprint, day three</title>
		<link>http://www.selenic.com/blog/?p=732</link>
		<comments>http://www.selenic.com/blog/?p=732#comments</comments>
		<pubDate>Wed, 04 May 2011 04:33:46 +0000</pubDate>
		<dc:creator>mpm</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.selenic.com/blog/?p=732</guid>
		<description><![CDATA[The last day of the sprint was Sunday, but a day without net access, a transatlantic flight, and a full inbox have delayed this update a bit. But this sprint was probably our most productive yet! Sunday was again about 10 hours of solid hacking. We finally shut down at about 8pm after half the [...]]]></description>
			<content:encoded><![CDATA[<p>The last day of the sprint was Sunday, but a day without net access, a transatlantic flight, and a full inbox have delayed this update a bit. But this sprint was probably our most productive yet! Sunday was again about 10 hours of solid hacking. We finally shut down at about 8pm after half the team had left for the airport and others were on the verge of collapse from exhaustion.</p>
<p>As the project leader, I spent the bulk of my time in consultation on designs, debugging, code reviews, and merging patches.  This meant that in the whole course of the sprint, I managed to only write a total of 6 patches myself. And on Sunday I was extra-busy, because May 1st meant it was time for me to cut our monthly stable release (1.8.3).</p>
<p>Overall during the sprint, over 150 changesets were merged and a huge amount of exciting new work started at the sprint is still in the works. Highlights from Sunday include:</p>
<ul>
<li>New, much faster changeset discovery protocol</li>
<li>PyFlakes-based code tests</li>
<li>More progress on new bundle format and lightweight copies</li>
<li>Test-suite speedups</li>
<li>Big file handling cleanup for PyPy</li>
<li>tons of bug fixes</li>
</ul>
<p>But the real goal of the sprint is to build momentum for our biggest projects. Some of these got a lot of traction over the weekend. The most exciting is the stuff we&#8217;ve been discussing under the <a href="http://mercurial.selenic.com/wiki/LiquidHG">Liquid Hg</a> banner, which is actually a collection of different features that will allow for painless and safe &#8220;evolution&#8221; of changesets. Various pieces of this will probably be appearing over the course of the next year.</p>
<p>We&#8217;ve been alternating sprints between the US and Europe every two releases, so the next sprint should be somewhere in the US around January 2012 as we prepare for the 2.1 release.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.selenic.com/blog/?feed=rss2&#038;p=732</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mercurial 1.9 sprint, day two</title>
		<link>http://www.selenic.com/blog/?p=720</link>
		<comments>http://www.selenic.com/blog/?p=720#comments</comments>
		<pubDate>Sun, 01 May 2011 07:36:22 +0000</pubDate>
		<dc:creator>mpm</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.selenic.com/blog/?p=720</guid>
		<description><![CDATA[&#160; The second day of the sprint was spent in an intense flurry of coding. We started at 9AM and ailed right through to 9PM when we finally stopped for dinner. Edlund&#8217;s onsite catering staff had breakfast and lunch on-hand for us. During the day, I reviewed and merged over 50 changes from sprinters including: [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_722" class="wp-caption alignleft" style="width: 727px"><a rel="attachment wp-att-722" href="http://www.selenic.com/blog/?attachment_id=722"><img class="size-large wp-image-722 " title="sprint" src="http://www.selenic.com/blog/wp-content/uploads/2011/05/sprint-1024x482.jpg" alt="" width="717" height="337" /></a><p class="wp-caption-text">From left to right: Levi, Peter, Benoit, Natosha, Brodie, Patrick, Sune, Nicolas, Timeless, Matt, Dan, Augie, Pierre-Yves, Martin, Henrik, Mads, Alexander, and Kevin</p></div>
<p>&nbsp;</p>
<p>The second day of the sprint was spent in an intense flurry of coding. We started at 9AM and ailed right through to 9PM when we finally stopped for dinner. Edlund&#8217;s onsite catering staff had breakfast and lunch on-hand for us.</p>
<p>During the day, I reviewed and merged over 50 changes from sprinters including:</p>
<ul>
<li>improvements to graphlog</li>
<li>new ^ and ~ operators and last() function for revset</li>
<li>progress on lightweight copies</li>
<li>progress on new discovery protocol</li>
<li>work on improving case-collision smarts</li>
<li>work on PyPy support</li>
<li>fixes for Zeroconf support</li>
<li>progress on new bundle format</li>
<li>performance fix for the branch cache</li>
<li>numerous code clean-ups and assorted bug fixes</li>
</ul>
<p>We&#8217;ve got sprint participants from Minneapolis, Helsinki, San Francisco, Århus, Gronigen, New York, Chicago, Paris(2), Zurich (4), and Copenhagen (6!). And we&#8217;ve also gotten a steady stream of patches from contributors at home.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.selenic.com/blog/?feed=rss2&#038;p=720</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mercurial 1.9 sprint, day one</title>
		<link>http://www.selenic.com/blog/?p=712</link>
		<comments>http://www.selenic.com/blog/?p=712#comments</comments>
		<pubDate>Sat, 30 Apr 2011 07:31:58 +0000</pubDate>
		<dc:creator>mpm</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.selenic.com/blog/?p=712</guid>
		<description><![CDATA[I&#8217;m in Copenhagen this weekend for the Mercurial 1.9 sprint. We&#8217;ve got a team of 19 contributors meeting for three days at the beautiful offices of Edlund A/S. Yesterday, we ran through a rather lengthy agenda, covering: Google Summer of Code Improving the templating engine Filesets (a feature to complement revsets) PyPy support and the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m in Copenhagen this weekend for the <a href="http://mercurial.selenic.com/wiki/1.9sprint">Mercurial 1.9 sprint</a>. We&#8217;ve got a team of 19 contributors meeting for three days at the beautiful offices of Edlund A/S.</p>
<p>Yesterday, we ran through a rather lengthy agenda, covering:</p>
<ul>
<li>Google Summer of Code</li>
<li>Improving the templating engine</li>
<li>Filesets (a feature to complement revsets)</li>
<li>PyPy support and the difficulties of Python 3</li>
<li>Integrating various extension features into the core</li>
<li>Bundling some external extensions</li>
<li>Speeding up the test suite and testing on Windows</li>
<li>In-memory patching and interactive commit</li>
<li>Updating <em><a href="http://hgbook.red-bean.com/index.html">Mercurial: The Definitive Guide</a></em></li>
<li>Replacing our BTS</li>
<li>An extended discussion of frameworks for cleanly changing history (what we&#8217;ve been calling Liquid Hg)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.selenic.com/blog/?feed=rss2&#038;p=712</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>March maintainer update</title>
		<link>http://www.selenic.com/blog/?p=710</link>
		<comments>http://www.selenic.com/blog/?p=710#comments</comments>
		<pubDate>Fri, 01 Apr 2011 19:05:18 +0000</pubDate>
		<dc:creator>mpm</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.selenic.com/blog/?p=710</guid>
		<description><![CDATA[My experiment with maintaining &#8220;inbox zero&#8221; has been going quite well. I&#8217;ve improved my productivity and greatly reduced round-trip time for contributors. Released 1.8 and 1.8.1 Reviewed and merged 225 changesets Authored 53 changesets Wrote 240 mailing list messages Worked on 48 BTS issues Substantial progress on making the bundle format extensible Planning for the [...]]]></description>
			<content:encoded><![CDATA[<p>My experiment with maintaining &#8220;inbox zero&#8221; has been going quite well. I&#8217;ve improved my productivity and greatly reduced round-trip time for contributors.</p>
<ul>
<li>Released 1.8 and 1.8.1</li>
<li>Reviewed and merged 225 changesets</li>
<li>Authored 53 changesets</li>
<li>Wrote 240 mailing list messages</li>
<li>Worked on 48 BTS issues</li>
<li>Substantial progress on making the bundle format extensible</li>
<li>Planning for the <a href="http://mercurial.selenic.com/wiki/1.9sprint">1.9 sprint</a></li>
<li>Worked on Mercurial&#8217;s <a href="http://mercurial.selenic.com/wiki/SummerOfCode">GSoC program</a></li>
<li>Daily IRC office hours</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.selenic.com/blog/?feed=rss2&#038;p=710</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>February maintainer update</title>
		<link>http://www.selenic.com/blog/?p=706</link>
		<comments>http://www.selenic.com/blog/?p=706#comments</comments>
		<pubDate>Mon, 07 Mar 2011 23:40:14 +0000</pubDate>
		<dc:creator>mpm</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.selenic.com/blog/?p=706</guid>
		<description><![CDATA[February&#8217;s ramp up for the Mercurial 1.8 release went quite well, despite the rush to get bookmarks done. Released 1.7.4 and 1.7.5 Reviewed and merged 137 changesets Authored 29 changesets Wrote 121 mailing list messages Worked on 93 BTS issues Migrate bookmarks to core Daily IRC office hours I managed to work back down to [...]]]></description>
			<content:encoded><![CDATA[<p>February&#8217;s ramp up for the Mercurial 1.8 release went quite well, despite the rush to get bookmarks done.</p>
<ul>
<li>Released 1.7.4 and 1.7.5</li>
<li>Reviewed and merged 137 changesets</li>
<li>Authored 29 changesets</li>
<li>Wrote 121 mailing list messages</li>
<li>Worked on 93 BTS issues</li>
<li>Migrate bookmarks to core</li>
<li>Daily IRC office hours</li>
</ul>
<p>I managed to work back down to Inbox 0 sometime in the middle of the 1.8 code freeze for the first time in most of a year and I&#8217;ve managed to stay there for a couple weeks now. That&#8217;s probably the longest I&#8217;ve managed that in 15 years or so and it seems to be helping my productivity.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.selenic.com/blog/?feed=rss2&#038;p=706</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mercurial December and January updates</title>
		<link>http://www.selenic.com/blog/?p=703</link>
		<comments>http://www.selenic.com/blog/?p=703#comments</comments>
		<pubDate>Tue, 15 Feb 2011 22:59:08 +0000</pubDate>
		<dc:creator>mpm</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.selenic.com/blog/?p=703</guid>
		<description><![CDATA[Looks like I&#8217;ve gotten a bit behind on my status updates (and blogging in general). In December: Released 1.7.2 and 1.7.3 Reviewed and merged 124 changesets Authored 34 changesets Wrote 140 mailing list messages Daily IRC office hours The biggest things I worked on here was writing a whole new backwards compatible templating engine based [...]]]></description>
			<content:encoded><![CDATA[<p>Looks like I&#8217;ve gotten a bit behind on my status updates (and blogging in general). In December:</p>
<ul>
<li>Released 1.7.2 and 1.7.3</li>
<li>Reviewed and merged 124 changesets</li>
<li>Authored 34 changesets</li>
<li>Wrote 140 mailing list messages</li>
<li>Daily IRC office hours</li>
</ul>
<p>The biggest things I worked on here was writing a whole new backwards compatible templating engine based on the parser that I introduced for revsets. The new engine can handle complex expressions like conditionals, nested subtemplates, and function calls.</p>
<p>In January:</p>
<ul>
<li>The 1.7.3 released got released early, so no releases in January</li>
<li>Reviewed and merged 80 changesets</li>
<li>Authored 25 new changesets</li>
<li>94 mailing list messages</li>
<li>Daily IRC office hours</li>
</ul>
<p>For January, I spent a lot of time working on eliminating the so-called &#8220;lazy index&#8221; used for large revlogs. This used to speed up some operations (like hg tip) at the expense of others. My recent changes should speed up hg for many common operations on large repos. I&#8217;ve also spent some time researching moving much of the revlog parsing to C, as a huge amount of the parsing time is spent on allocating and building Python objects and not on I/O.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.selenic.com/blog/?feed=rss2&#038;p=703</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

