changeset 753:1c13ed2130a7

Merge with http://hg.serpentine.com/mercurial/book
author Dongsheng Song <dongsheng.song@gmail.com>
date Mon, 30 Mar 2009 16:23:33 +0800
parents 6b1577ef5135 (current diff) 9e8e5292acaa (diff)
children 65e9a18d2c7e
files .hgignore Makefile en/00book.xml en/Makefile en/appA-cmdref.xml en/appB-mq-ref.xml en/appC-srcinstall.xml en/appD-license.xml en/ch00-preface.xml en/ch01-tour-basic.xml en/ch02-tour-merge.xml en/ch03-concepts.xml en/ch04-daily.xml en/ch05-collab.xml en/ch06-filenames.xml en/ch07-branch.xml en/ch08-undo.xml en/ch09-hook.xml en/ch10-template.xml en/ch11-mq.xml en/ch12-mq-collab.xml en/ch13-hgext.xml en/examples/auto-snippets.xml en/examples/results/backout.init.out en/examples/results/backout.manual.backout.out en/examples/results/backout.manual.cat.out en/examples/results/backout.manual.clone.out en/examples/results/backout.manual.heads.out en/examples/results/backout.manual.log.out en/examples/results/backout.manual.merge.out en/examples/results/backout.manual.parents.out en/examples/results/backout.non-tip.backout.out en/examples/results/backout.non-tip.cat.out en/examples/results/backout.non-tip.clone.out en/examples/results/backout.simple.log.out en/examples/results/backout.simple.out en/examples/results/bisect.commits.out en/examples/results/bisect.help.out en/examples/results/bisect.init.out en/examples/results/bisect.search.bad-init.out en/examples/results/bisect.search.good-init.out en/examples/results/bisect.search.init.out en/examples/results/bisect.search.mytest.out en/examples/results/bisect.search.reset.out en/examples/results/bisect.search.rest.out en/examples/results/bisect.search.step1.out en/examples/results/bisect.search.step2.out en/examples/results/branch-named.branch.out en/examples/results/branch-named.branches.out en/examples/results/branch-named.commit.out en/examples/results/branch-named.create.out en/examples/results/branch-named.foo-commit.out en/examples/results/branch-named.merge.out en/examples/results/branch-named.parents.out en/examples/results/branch-named.rebranch.out en/examples/results/branch-named.status.out en/examples/results/branch-named.update-bar.out en/examples/results/branch-named.update-foo.out en/examples/results/branch-named.update-nothing.out en/examples/results/branch-named.update-switchy.out en/examples/results/branch-named.update.out en/examples/results/branch-repo.bugfix.out en/examples/results/branch-repo.clone.out en/examples/results/branch-repo.merge.out en/examples/results/branch-repo.new.out en/examples/results/branch-repo.pull.out en/examples/results/branch-repo.tag.out en/examples/results/branching.clone.out en/examples/results/branching.init.out en/examples/results/branching.main.out en/examples/results/branching.merge.out en/examples/results/branching.stable.out en/examples/results/branching.tag.out en/examples/results/branching.update.out en/examples/results/cmdref.diff-p.out en/examples/results/daily.copy.after.out en/examples/results/daily.copy.cat.out en/examples/results/daily.copy.clone.out en/examples/results/daily.copy.copy.out en/examples/results/daily.copy.dir-dest.out en/examples/results/daily.copy.dir-src-dest.out en/examples/results/daily.copy.dir-src.out en/examples/results/daily.copy.init.out en/examples/results/daily.copy.merge.out en/examples/results/daily.copy.other.out en/examples/results/daily.copy.simple.out en/examples/results/daily.copy.status-copy.out en/examples/results/daily.copy.status.out en/examples/results/daily.files.add-dir.out en/examples/results/daily.files.add.out en/examples/results/daily.files.addremove.out en/examples/results/daily.files.commit-addremove.out en/examples/results/daily.files.hidden.out en/examples/results/daily.files.missing.out en/examples/results/daily.files.recover-missing.out en/examples/results/daily.files.remove-after.out en/examples/results/daily.files.remove.out en/examples/results/daily.rename.rename.out en/examples/results/daily.rename.status-copy.out en/examples/results/daily.rename.status.out en/examples/results/daily.revert.add.out en/examples/results/daily.revert.copy.out en/examples/results/daily.revert.missing.out en/examples/results/daily.revert.modify.out en/examples/results/daily.revert.remove.out en/examples/results/daily.revert.rename-orig.out en/examples/results/daily.revert.rename.out en/examples/results/daily.revert.status.out en/examples/results/daily.revert.unmodify.out en/examples/results/extdiff.diff.out en/examples/results/extdiff.extdiff-ctx.out en/examples/results/extdiff.extdiff.out en/examples/results/filenames.dirs.out en/examples/results/filenames.files.out en/examples/results/filenames.filter.exclude.out en/examples/results/filenames.filter.include.out en/examples/results/filenames.glob.group.out en/examples/results/filenames.glob.question.out en/examples/results/filenames.glob.range.out en/examples/results/filenames.glob.star-starstar.out en/examples/results/filenames.glob.star.out en/examples/results/filenames.glob.starstar.out en/examples/results/filenames.wdir-relname.out en/examples/results/filenames.wdir-subdir.out en/examples/results/hook.msglen.go.out en/examples/results/hook.msglen.run.out en/examples/results/hook.simple.ext.out en/examples/results/hook.simple.init.out en/examples/results/hook.simple.pretxncommit.out en/examples/results/hook.ws.better.out en/examples/results/hook.ws.simple.out en/examples/results/issue29.go.out en/examples/results/mq.dodiff.diff.out en/examples/results/mq.guards.init.out en/examples/results/mq.guards.qguard.neg.out en/examples/results/mq.guards.qguard.out en/examples/results/mq.guards.qguard.pos.out en/examples/results/mq.guards.qselect.cat.out en/examples/results/mq.guards.qselect.error.out en/examples/results/mq.guards.qselect.foo.out en/examples/results/mq.guards.qselect.foobar.out en/examples/results/mq.guards.qselect.qpush.out en/examples/results/mq.guards.qselect.quux.out en/examples/results/mq.guards.series.out en/examples/results/mq.id.out.out en/examples/results/mq.id.output.out en/examples/results/mq.qinit-help.help.out en/examples/results/mq.tarball.download.out en/examples/results/mq.tarball.newsource.out en/examples/results/mq.tarball.qinit.out en/examples/results/mq.tarball.repush.out en/examples/results/mq.tools.lsdiff.out en/examples/results/mq.tools.tools.out en/examples/results/mq.tutorial.add.out en/examples/results/mq.tutorial.qinit.out en/examples/results/mq.tutorial.qnew.out en/examples/results/mq.tutorial.qnew2.out en/examples/results/mq.tutorial.qpop.out en/examples/results/mq.tutorial.qpush-a.out en/examples/results/mq.tutorial.qrefresh.out en/examples/results/mq.tutorial.qrefresh2.out en/examples/results/mq.tutorial.qseries.out en/examples/results/rename.divergent.clone.out en/examples/results/rename.divergent.merge.out en/examples/results/rename.divergent.rename.anne.out en/examples/results/rename.divergent.rename.bob.out en/examples/results/rollback.add.out en/examples/results/rollback.commit.out en/examples/results/rollback.rollback.out en/examples/results/rollback.status.out en/examples/results/rollback.tip.out en/examples/results/rollback.twice.out en/examples/results/tag.init.out en/examples/results/tag.log.out en/examples/results/tag.log.v1.0.out en/examples/results/tag.remove.out en/examples/results/tag.replace.out en/examples/results/tag.tag.out en/examples/results/tag.tags.out en/examples/results/tag.tip.out en/examples/results/template.simple.changelog.out en/examples/results/template.simple.combine.out en/examples/results/template.simple.compact.out en/examples/results/template.simple.datekeyword.out en/examples/results/template.simple.keywords.out en/examples/results/template.simple.manyfilters.out en/examples/results/template.simple.normal.out en/examples/results/template.simple.rev.out en/examples/results/template.simple.simplest.out en/examples/results/template.simple.simplesub.out en/examples/results/template.svnstyle.id.out en/examples/results/template.svnstyle.result.out en/examples/results/template.svnstyle.short.out en/examples/results/template.svnstyle.simplest.out en/examples/results/template.svnstyle.style.out en/examples/results/template.svnstyle.syntax.error.out en/examples/results/template.svnstyle.syntax.input.out en/examples/results/template.svnstyle.template.out en/examples/results/tour-merge-conflict.commit.out en/examples/results/tour-merge-conflict.cousin.out en/examples/results/tour-merge-conflict.merge.out en/examples/results/tour-merge-conflict.pull.out en/examples/results/tour-merge-conflict.son.out en/examples/results/tour-merge-conflict.wife.out en/examples/results/tour.clone-pull.out en/examples/results/tour.clone-push.out en/examples/results/tour.clone.out en/examples/results/tour.commit.out en/examples/results/tour.diff.out en/examples/results/tour.help.out en/examples/results/tour.incoming.out en/examples/results/tour.log-r.out en/examples/results/tour.log-v.out en/examples/results/tour.log-vp.out en/examples/results/tour.log.out en/examples/results/tour.log.range.out en/examples/results/tour.ls-a.out en/examples/results/tour.ls.out en/examples/results/tour.merge.cat.out en/examples/results/tour.merge.clone.out en/examples/results/tour.merge.commit.out en/examples/results/tour.merge.heads.out en/examples/results/tour.merge.merge.out en/examples/results/tour.merge.parents.out en/examples/results/tour.merge.pull.out en/examples/results/tour.merge.tip.out en/examples/results/tour.merge.update.out en/examples/results/tour.older.out en/examples/results/tour.outgoing.net.out en/examples/results/tour.outgoing.out en/examples/results/tour.parents.out en/examples/results/tour.pull.out en/examples/results/tour.push.net.out en/examples/results/tour.push.nothing.out en/examples/results/tour.push.out en/examples/results/tour.reclone.out en/examples/results/tour.sed.out en/examples/results/tour.status.out en/examples/results/tour.tip.out en/examples/results/tour.update.out en/examples/results/tour.version.out en/images/feature-branches.dot en/images/filelog.svg en/images/kdiff3.png en/images/metadata.svg en/images/mq-stack.svg en/images/note.png en/images/revlog.svg en/images/snapshot.svg en/images/tour-history.svg en/images/tour-merge-conflict.svg en/images/tour-merge-merge.svg en/images/tour-merge-pull.svg en/images/tour-merge-sep-repos.svg en/images/undo-manual-merge.dot en/images/undo-manual.dot en/images/undo-non-tip.dot en/images/undo-simple.dot en/images/wdir-after-commit.svg en/images/wdir-branch.svg en/images/wdir-merge.svg en/images/wdir-pre-branch.svg en/images/wdir.svg stylesheets/base-html-stylesheet.xsl web/index.html
diffstat 294 files changed, 7988 insertions(+), 10098 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Fri Mar 20 17:17:55 2009 +0800
+++ b/.hgignore	Mon Mar 30 16:23:33 2009 +0800
@@ -1,7 +1,4 @@
-[^/]+/build/
-[^/]+/fop/
-[^/]+/hello/
-[^/]+/html/
+[^/]+/htdocs/
 
 syntax: glob
 
@@ -13,13 +10,17 @@
 *.pyc
 *.rej
 *.run
-*-tmp.svg
 *~
-.*.swp
+.*.sw[op]
 .\#*
 .run
 .validated-00book.xml
 en/all-ids.dat
 web/hgbook/.database.sqlite3
 web/hgbook/secrets.py
+web/index-read.html.in
 stylesheets/system-xsl
+build
+en/html
+en/examples/results
+tools
\ No newline at end of file
--- a/Makefile	Fri Mar 20 17:17:55 2009 +0800
+++ b/Makefile	Mon Mar 30 16:23:33 2009 +0800
@@ -20,26 +20,26 @@
 rev_id = $(shell hg parents --template '{node|short} ({date|shortdate})')
 
 images := \
-	en/images/feature-branches.png \
-	en/images/filelog.png \
-	en/images/metadata.png \
-	en/images/mq-stack.png \
-	en/images/revlog.png \
-	en/images/snapshot.png \
-	en/images/tour-history.png \
-	en/images/tour-merge-conflict.png \
-	en/images/tour-merge-merge.png \
-	en/images/tour-merge-pull.png \
-	en/images/tour-merge-sep-repos.png \
-	en/images/undo-manual-merge.png \
-	en/images/undo-manual.png \
-	en/images/undo-non-tip.png \
-	en/images/undo-simple.png \
-	en/images/wdir-after-commit.png \
-	en/images/wdir-branch.png \
-	en/images/wdir-merge.png \
-	en/images/wdir.png \
-	en/images/wdir-pre-branch.png
+	en/figs/feature-branches.png \
+	en/figs/filelog.png \
+	en/figs/metadata.png \
+	en/figs/mq-stack.png \
+	en/figs/revlog.png \
+	en/figs/snapshot.png \
+	en/figs/tour-history.png \
+	en/figs/tour-merge-conflict.png \
+	en/figs/tour-merge-merge.png \
+	en/figs/tour-merge-pull.png \
+	en/figs/tour-merge-sep-repos.png \
+	en/figs/undo-manual-merge.png \
+	en/figs/undo-manual.png \
+	en/figs/undo-non-tip.png \
+	en/figs/undo-simple.png \
+	en/figs/wdir-after-commit.png \
+	en/figs/wdir-branch.png \
+	en/figs/wdir-merge.png \
+	en/figs/wdir.png \
+	en/figs/wdir-pre-branch.png
 
 help:
 	@echo "  make html         [LINGUA=en|zh|...]"
@@ -53,30 +53,30 @@
 	@echo "  make clean        # Remove the build files."
 
 clean:
-	@rm -fr build po/*.mo hello en/hello en/html en/.validated-00book.xml \
-          stylesheets/system-xsl en/images/*-tmp.svg \
-          en/images/feature-branches.png \
-          en/images/filelog.png \
-          en/images/feature-branches.png \
-          en/images/filelog.png \
-          en/images/metadata.png \
-          en/images/mq-stack.png \
-          en/images/revlog.png \
-          en/images/snapshot.png \
-          en/images/tour-history.png \
-          en/images/tour-merge-conflict.png \
-          en/images/tour-merge-merge.png \
-          en/images/tour-merge-pull.png \
-          en/images/tour-merge-sep-repos.png \
-          en/images/undo-manual-merge.png \
-          en/images/undo-manual.png \
-          en/images/undo-non-tip.png \
-          en/images/undo-simple.png \
-          en/images/wdir-after-commit.png \
-          en/images/wdir-branch.png \
-          en/images/wdir-merge.png \
-          en/images/wdir-pre-branch.png \
-          en/images/wdir.png
+	@rm -fr build po/*.mo hello en/hello en/html en/.validated-00book.xml en/examples/.run en/examples/results \
+          stylesheets/system-xsl en/figs/*-tmp.svg \
+          en/figs/feature-branches.png \
+          en/figs/filelog.png \
+          en/figs/feature-branches.png \
+          en/figs/filelog.png \
+          en/figs/metadata.png \
+          en/figs/mq-stack.png \
+          en/figs/revlog.png \
+          en/figs/snapshot.png \
+          en/figs/tour-history.png \
+          en/figs/tour-merge-conflict.png \
+          en/figs/tour-merge-merge.png \
+          en/figs/tour-merge-pull.png \
+          en/figs/tour-merge-sep-repos.png \
+          en/figs/undo-manual-merge.png \
+          en/figs/undo-manual.png \
+          en/figs/undo-non-tip.png \
+          en/figs/undo-simple.png \
+          en/figs/wdir-after-commit.png \
+          en/figs/wdir-branch.png \
+          en/figs/wdir-merge.png \
+          en/figs/wdir-pre-branch.png \
+          en/figs/wdir.png
 
 all:
 ifdef LINGUA
@@ -133,23 +133,24 @@
 	xmllint --nonet --noout --postvalid --xinclude $<
 
 ifneq "$(findstring $(LINGUA),$(DBK_LANGUAGES))" ""
-build/$(LINGUA)/source/hgbook.xml: $(wildcard $(LINGUA)/*.xml) $(images)
-	mkdir -p build/$(LINGUA)/source
-	cp -r $(LINGUA)/* build/$(LINGUA)/source
-	xmllint --nonet --noent --xinclude --postvalid --output $@.tmp $(LINGUA)/00book.xml
+$(LINGUA)/examples/.run:
+	(cd $(LINGUA)/examples; ./run-example -v -a)
+
+build/$(LINGUA)/source/hgbook.xml: $(wildcard $(LINGUA)/*.xml) $(images) $(LINGUA)/examples/.run $(images)
+	mkdir -p build/$(LINGUA)/source/figs
+	cp $(LINGUA)/figs/*.png build/$(LINGUA)/source/figs
+	(cd $(LINGUA); xmllint --nonet --noent --xinclude --postvalid --output ../$@.tmp 00book.xml)
 	cat $@.tmp | sed 's/\$$rev_id\$$/${rev_id}/' > $@
 else
-build/$(LINGUA)/source/hgbook.xml: $(wildcard en/*.xml) po/$(LINGUA).po $(images)
-	mkdir -p build/$(LINGUA)/source
-	cp -r en/images build/$(LINGUA)/source
-	cp -r en/examples build/$(LINGUA)/source
-	cp en/book-shortcuts.xml build/$(LINGUA)/source
-	for f in en/*.xml; do \
-	  if [ $$f != "en/book-shortcuts.xml" ]; then \
-	    $(TRANSLATE) -m $$f -p po/$(LINGUA).po -l build/$(LINGUA)/source/`basename $$f`; \
-	  fi \
-	done
-	xmllint --nonet --noent --xinclude --postvalid --output $@.tmp build/$(LINGUA)/source/00book.xml
+en/examples/.run:
+	(cd en/examples; ./run-example -v -a)
+
+build/en/source/hgbook.xml:
+	${MAKE} LINGUA=en $@
+
+build/$(LINGUA)/source/hgbook.xml: build/en/source/hgbook.xml po/$(LINGUA).po $(images)
+	mkdir -p build/$(LINGUA)/source/figs
+	$(TRANSLATE) -m build/en/source/hgbook.xml -p po/$(LINGUA).po -l $@.tmp
 	cat $@.tmp | sed 's/\$$rev_id\$$/${rev_id}/' > $@
 endif
 
@@ -164,8 +165,8 @@
 html: build/$(LINGUA)/html/index.html
 
 build/$(LINGUA)/html/index.html: build/$(LINGUA)/source/hgbook.xml stylesheets/html.xsl stylesheets/$(LINGUA)/html.xsl
-	mkdir -p build/$(LINGUA)/html/images
-	cp en/images/*.png build/$(LINGUA)/html/images
+	mkdir -p build/$(LINGUA)/html/figs
+	cp en/figs/*.png build/$(LINGUA)/html/figs
 	cp stylesheets/hgbook.css build/$(LINGUA)/html
 	xsltproc --output build/$(LINGUA)/html/ \
 	    stylesheets/$(LINGUA)/html.xsl build/$(LINGUA)/source/hgbook.xml
@@ -180,8 +181,8 @@
 html-single: build/$(LINGUA)/html-single/hgbook.html
 
 build/$(LINGUA)/html-single/hgbook.html: build/$(LINGUA)/source/hgbook.xml stylesheets/html-single.xsl stylesheets/$(LINGUA)/html-single.xsl
-	mkdir -p build/$(LINGUA)/html-single/images
-	cp en/images/*.png build/$(LINGUA)/html-single/images
+	mkdir -p build/$(LINGUA)/html-single/figs
+	cp en/figs/*.png build/$(LINGUA)/html-single/figs
 	cp stylesheets/hgbook.css build/$(LINGUA)/html-single
 	xsltproc --output build/$(LINGUA)/html-single/hgbook.html \
 	    stylesheets/$(LINGUA)/html-single.xsl build/$(LINGUA)/source/hgbook.xml
@@ -210,9 +211,9 @@
 	(cd build/$(LINGUA)/source && ../../../tools/fop/fop.sh hgbook.fo ../pdf/hgbook.pdf)
 endif
 
-en/images/%.png: en/images/%.svg en/fixsvg
+en/figs/%.png: en/figs/%.svg en/fixsvg
 	en/fixsvg $<
 	inkscape -D -d 120 -e $@ $<-tmp.svg
 
-en/images/%.svg: en/images/%.dot
+en/figs/%.svg: en/figs/%.dot
 	dot -Tsvg -o $@ $<
--- a/en/00book.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/00book.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd"
 [
 <!-- Below are references to files in this directory. -->
 
--- a/en/Makefile	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/Makefile	Mon Mar 30 16:23:33 2009 +0800
@@ -1,28 +1,6 @@
 # This makefile requires GNU make.
 
-image-sources := \
-	feature-branches.dot \
-	filelog.svg \
-	kdiff3.png \
-	metadata.svg \
-	mq-stack.svg \
-	note.png \
-	revlog.svg \
-	snapshot.svg \
-	tour-history.svg \
-	tour-merge-conflict.svg \
-	tour-merge-merge.svg \
-	tour-merge-pull.svg \
-	tour-merge-sep-repos.svg \
-	undo-manual.dot \
-	undo-manual-merge.dot \
-	undo-non-tip.dot \
-	undo-simple.dot \
-	wdir.svg \
-	wdir-after-commit.svg \
-	wdir-branch.svg \
-	wdir-merge.svg \
-	wdir-pre-branch.svg
+image-sources := $(wildcard figs/*.dot figs/*.gif figs/*.png figs/*.svg)
 
 xml-src-files := \
 	00book.xml \
@@ -31,9 +9,16 @@
 
 image-dot := $(filter %.dot,$(image-sources))
 image-svg := $(filter %.svg,$(image-sources))
-image-png := $(filter %.png,$(image-sources))
+image-oth := $(filter %.gif %.png,$(image-sources))
 
-image-html := $(image-dot:%.dot=%.png) $(image-svg:%.svg=%.png) $(image-png)
+obj-web := html
+obj-websup := $(obj-web)/support
+obj-web-read := $(obj-web)/read
+
+image-web := \
+	$(image-dot:%.dot=$(obj-web-read)/%.png) \
+	$(image-svg:%.svg=$(obj-web-read)/%.png) \
+	$(image-oth:%=$(obj-web-read)/%)
 
 example-sources-by-name := \
 	backout \
@@ -71,9 +56,6 @@
 	$(example-sources-by-name:%=examples/%) \
 	$(wildcard examples/ch*/*)
 
-obj-web := html
-obj-websup := html/support
-
 extras-web-base := \
 	$(obj-web)/index.html \
 	$(obj-web)/robots.txt \
@@ -130,24 +112,30 @@
 
 all: web
 
-../xsl/system-xsl: $(system-xsl-dir)
+../stylesheets/system-xsl: $(system-xsl-dir)
 	ln -s $< $@
 
-web: ../xsl/system-xsl websup html
+web: ../stylesheets/system-xsl websup html
+
+html: $(obj-web-read)/index.html
 
-html: ../xsl/system-xsl $(xml-src-files) valid
-	xsltproc $(xsltproc-opts) -o html/read/x ../xsl/chunk-stylesheet.xsl 00book.xml
-	for i in html/read/*.html; do \
+../web/index-read.html.in: ../web/genindex.py $(xml-src-files)
+	$<
+
+$(obj-web-read)/index.html: ../stylesheets/system-xsl .validated-00book.xml ../web/index-read.html.in
+	xsltproc $(xsltproc-opts) -o $(obj-web-read)/x ../stylesheets/chunk-stylesheet.xsl 00book.xml
+	python ../web/texpand.py ../web/index-read.html.in html/read/index.html
+	for i in $(obj-web-read)/*.html; do \
 	  gzip -9 -c $$i > $$i.gz; \
 	done
 
-websup: $(extras-web)
-	mkdir -p $(obj-websup)/figs
-	cp ../xsl/system-xsl/images/*.png $(obj-websup)/figs
+websup: $(extras-web) $(image-web)
+	mkdir -p $(obj-websup)/figs $(obj-web-read)/figs
+	cp ../stylesheets/system-xsl/images/*.png $(obj-websup)/figs
 	cp -f ../web/icons/*.png $(obj-websup)/figs
 
-all-ids.dat: ../xsl/all-ids.xsl $(xml-src-files)
-	$(xsltproc) $(xsltproc-opts) -o $@ ../xsl/all-ids.xsl 00book.xml
+all-ids.dat: ../stylesheets/all-ids.xsl $(xml-src-files)
+	$(xsltproc) $(xsltproc-opts) -o $@ ../stylesheets/all-ids.xsl 00book.xml
 
 web: websup
 
@@ -159,12 +147,26 @@
 
 # Produce 90dpi PNGs for the web.
 
-%.png: %.svg fixsvg
+$(obj-web-read)/figs/%.png: $(obj-web-read)/figs/%.svg fixsvg
+	mkdir -p $(dir $@)
 	./fixsvg $<
 	inkscape -D -e $@ $<-tmp.svg
 	rm $<-tmp.svg
 
-%.svg: %.dot
+$(obj-web-read)/figs/%.png: figs/%.svg fixsvg
+	mkdir -p $(dir $@)
+	./fixsvg $<
+	inkscape -D -e $@ $<-tmp.svg
+	rm $<-tmp.svg
+
+$(obj-web-read)/figs/%.gif: figs/%.gif
+	cp $< $@
+
+$(obj-web-read)/figs/%.png: figs/%.png
+	cp $< $@
+
+$(obj-web-read)/figs/%.svg: figs/%.dot
+	mkdir -p $(dir $@)
 	dot -Tsvg -o $@ $<
 
 examples: $(example-prereqs) examples/.run
@@ -188,6 +190,7 @@
 	rsync -avz --delete dist sp.red-bean.com:public_html/hgbook
 
 vpath %.css ../web
+vpath %.html.in ../web
 vpath %.js ../web/javascript
 
 $(obj-websup)/%.css: %.css
--- a/en/appA-cmdref.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/appA-cmdref.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,6 +1,7 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
 <appendix id="cmdref">
+  <?dbhtml filename="command-reference.html"?>
 <title>Command reference</title>
 
 <para id="x_653">\cmdref{add}{add files at the next commit}
@@ -12,7 +13,7 @@
 
 <para id="x_655">Show differences between revisions for the specified files or
 directories, using the unified diff format.  For a description of the
-unified diff format, see section <xref linkend="sec.mq.patch"/>.</para>
+unified diff format, see <xref linkend="sec:mq:patch"/>.</para>
 
 <para id="x_656">By default, this command does not print diffs for files that Mercurial
 considers to contain binary data.  To control this behaviour, see the
@@ -20,7 +21,7 @@
 
 <sect2>
 <title>Options</title>
-
+x
 <para id="x_657">\loptref{diff}{nodates}</para>
 
 <para id="x_658">Omit date and time information when printing diff headers.</para>
@@ -158,7 +159,7 @@
 <sect2>
 <title>Tips and tricks</title>
 
-<sect3 id="cmdref.diff-vs-status">
+<sect3 id="cmdref:diff-vs-status">
 <title>Why do the results of <command role="hg-cmd">hg diff</command> and <command role="hg-cmd">hg status</command> differ?</title>
 
 <para id="x_676">When you run the <command role="hg-cmd">hg status</command> command, you'll see a list of files
--- a/en/appB-mq-ref.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/appB-mq-ref.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,10 +1,10 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<appendix id="chap.mqref">
+<appendix id="chap:mqref">
   <?dbhtml filename="mercurial-queues-reference.html"?>
   <title>Mercurial Queues reference</title>
 
-  <sect1 id="sec.mqref.cmdref">
+  <sect1 id="sec:mqref:cmdref">
     <title>MQ command reference</title>
 
     <para id="x_5e8">For an overview of the commands provided by MQ, use the
@@ -296,7 +296,7 @@
 	  role="hg-ext-mq">qpop</command>.</para>
 
     </sect2>
-    <sect2 id="sec.mqref.cmd.qpush">
+    <sect2 id="sec:mqref:cmd:qpush">
       <title><command role="hg-ext-mq">qpush</command>&emdash;push
 	patches onto the stack</title>
 
--- a/en/appC-srcinstall.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/appC-srcinstall.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,10 +1,10 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<appendix id="chap.srcinstall">
+<appendix id="chap:srcinstall">
   <?dbhtml filename="installing-mercurial-from-source.html"?>
   <title>Installing Mercurial from source</title>
 
-  <sect1 id="sec.srcinstall.unixlike">
+  <sect1 id="sec:srcinstall:unixlike">
     <title>On a Unix-like system</title>
 
     <para id="x_5e0">If you are using a Unix-like system that has a sufficiently
--- a/en/appD-license.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/appD-license.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,6 +1,6 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<appendix id="cha.opl">
+<appendix id="cha:opl">
   <?dbhtml filename="open-publication-license.html"?>
   <title>Open Publication License</title>
 
@@ -32,7 +32,7 @@
 
     <para id="x_63c">The reference must be immediately followed with any options
       elected by the author(s) and/or publisher of the document (see
-      section <xref linkend="sec.opl.options"/>).</para>
+      <xref linkend="sec:opl:options"/>).</para>
 
     <para id="x_63d">Commercial redistribution of Open Publication-licensed
       material is permitted.</para>
@@ -133,7 +133,7 @@
       </listitem></orderedlist>
 
   </sect1>
-  <sect1 id="sec.opl.options">
+  <sect1 id="sec:opl:options">
     <title>License options</title>
 
     <para id="x_64e">The author(s) and/or publisher of an Open
--- a/en/ch00-preface.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/ch00-preface.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,6 +1,6 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<preface id="chap.preface">
+<preface id="chap:preface">
   <?dbhtml filename="preface.html"?>
   <title>Preface</title>
 
@@ -61,8 +61,8 @@
 	    can revert to an earlier version of one or more files.  In
 	    fact, a <emphasis>really</emphasis> good revision control
 	    tool will even help you to efficiently figure out exactly
-	    when a problem was introduced (see section <xref
-	      linkend="sec.undo.bisect"/> for details).</para></listitem>
+	    when a problem was introduced (see <xref
+	      linkend="sec:undo:bisect"/> for details).</para></listitem>
 	<listitem><para id="x_75">It will help you to work simultaneously on,
 	    and manage the drift between, multiple versions of your
 	    project.</para></listitem>
@@ -167,8 +167,8 @@
     <para id="x_87">As an instance of this, several consecutive commits in an
       example can show up as having occurred during the same second.
       You can see this occur in the <literal
-	role="hg-ext">bisect</literal> example in section <xref
-	linkend="sec.undo.bisect"/>, for instance.</para>
+	role="hg-ext">bisect</literal> example in <xref
+	linkend="sec:undo:bisect"/>, for instance.</para>
 
     <para id="x_88">So when you're reading examples, don't place too much weight
       on the dates or times you see in the output of commands.  But
--- a/en/ch01-tour-basic.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/ch01-tour-basic.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,27 +1,27 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<chapter id="chap.tour-basic">
+<chapter id="chap:tour-basic">
   <?dbhtml filename="a-tour-of-mercurial-the-basics.html"?>
   <title>A tour of Mercurial: the basics</title>
 
-  <sect1 id="sec.tour.install">
+  <sect1 id="sec:tour:install">
     <title>Installing Mercurial on your system</title>
 
-    <para>Prebuilt binary packages of Mercurial are available for
+    <para id="x_1">Prebuilt binary packages of Mercurial are available for
       every popular operating system.  These make it easy to start
       using Mercurial on your computer immediately.</para>
 
     <sect2>
       <title>Linux</title>
 
-      <para>Because each Linux distribution has its own packaging
+      <para id="x_2">Because each Linux distribution has its own packaging
 	tools, policies, and rate of development, it's difficult to
 	give a comprehensive set of instructions on how to install
 	Mercurial binaries.  The version of Mercurial that you will
 	end up with can vary depending on how active the person is who
 	maintains the package for your distribution.</para>
 
-      <para>To keep things simple, I will focus on installing
+      <para id="x_3">To keep things simple, I will focus on installing
 	Mercurial from the command line under the most popular Linux
 	distributions.  Most of these distributions provide graphical
 	package managers that will let you install Mercurial with a
@@ -29,15 +29,15 @@
 	<literal>mercurial</literal>.</para>
 
       <itemizedlist>
-	<listitem><para>Debian:</para>
+	<listitem><para id="x_4">Debian:</para>
 	  <programlisting>apt-get install mercurial</programlisting></listitem>
-	<listitem><para>Fedora Core:</para>
+	<listitem><para id="x_5">Fedora Core:</para>
 	  <programlisting>yum install mercurial</programlisting></listitem>
-	<listitem><para>Gentoo:</para>
+	<listitem><para id="x_6">Gentoo:</para>
 	  <programlisting>emerge mercurial</programlisting></listitem>
-	<listitem><para>OpenSUSE:</para>
+	<listitem><para id="x_7">OpenSUSE:</para>
 	  <programlisting>yum install mercurial</programlisting></listitem>
-	<listitem><para>Ubuntu: Ubuntu's Mercurial package is based on
+	<listitem><para id="x_8">Ubuntu: Ubuntu's Mercurial package is based on
 	    Debian's.  To install it, run the following
 	    command.</para>
 	  <programlisting>apt-get install mercurial</programlisting></listitem>
@@ -47,7 +47,7 @@
     <sect2>
       <title>Solaris</title>
 
-      <para>SunFreeWare, at <ulink
+      <para id="x_9">SunFreeWare, at <ulink
 	  url="http://www.sunfreeware.com">http://www.sunfreeware.com</ulink>, 
 	is a good source for a large number of pre-built Solaris
 	packages for 32 and 64 bit Intel and Sparc architectures,
@@ -57,7 +57,7 @@
     <sect2>
       <title>Mac OS X</title>
 
-      <para>Lee Cantey publishes an installer of Mercurial for Mac OS
+      <para id="x_a">Lee Cantey publishes an installer of Mercurial for Mac OS
 	X at <ulink
 	  url="http://mercurial.berkwood.com">http://mercurial.berkwood.com</ulink>. 
 	This package works on both Intel- and Power-based Macs. Before
@@ -66,7 +66,7 @@
 	is easy to do; simply follow the instructions on Lee's
 	site.</para>
 
-      <para>It's also possible to install Mercurial using Fink or
+      <para id="x_b">It's also possible to install Mercurial using Fink or
 	MacPorts, two popular free package managers for Mac OS X.  If
 	you have Fink, use <command>sudo apt-get install
 	  mercurial-py25</command>.  If MacPorts, <command>sudo port
@@ -76,14 +76,14 @@
     <sect2>
       <title>Windows</title>
 
-      <para>Lee Cantey publishes an installer of Mercurial for Windows
+      <para id="x_c">Lee Cantey publishes an installer of Mercurial for Windows
 	at <ulink
 	  url="http://mercurial.berkwood.com">http://mercurial.berkwood.com</ulink>. 
 	This package has no external dependencies; it <quote>just
 	  works</quote>.</para>
 
       <note>
-	<para>  The Windows version of Mercurial does not
+	<para id="x_d">  The Windows version of Mercurial does not
 	  automatically convert line endings between Windows and Unix
 	  styles.  If you want to share work with Unix users, you must
 	  do a little additional configuration work. XXX Flesh this
@@ -95,7 +95,7 @@
   <sect1>
     <title>Getting started</title>
 
-    <para>To begin, we'll use the <command role="hg-cmd">hg
+    <para id="x_e">To begin, we'll use the <command role="hg-cmd">hg
 	version</command> command to find out whether Mercurial is
       actually installed properly.  The actual version information
       that it prints isn't so important; it's whether it prints
@@ -106,7 +106,7 @@
     <sect2>
       <title>Built-in help</title>
 
-      <para>Mercurial provides a built-in help system.  This is
+      <para id="x_f">Mercurial provides a built-in help system.  This is
 	  invaluable for those times when you find yourself stuck
 	  trying to remember how to run a command.  If you are
 	  completely stuck, simply run <command role="hg-cmd">hg
@@ -117,7 +117,7 @@
 
 	&interaction.tour.help;
 
-	<para>For a more impressive level of detail (which you won't
+	<para id="x_10">For a more impressive level of detail (which you won't
 	  usually need) run <command role="hg-cmd">hg help <option
 	      role="hg-opt-global">-v</option></command>.  The <option
 	    role="hg-opt-global">-v</option> option is short for
@@ -130,13 +130,13 @@
   <sect1>
     <title>Working with a repository</title>
 
-    <para>In Mercurial, everything happens inside a
+    <para id="x_11">In Mercurial, everything happens inside a
       <emphasis>repository</emphasis>.  The repository for a project
       contains all of the files that <quote>belong to</quote> that
       project, along with a historical record of the project's
       files.</para>
 
-    <para>There's nothing particularly magical about a repository; it
+    <para id="x_12">There's nothing particularly magical about a repository; it
       is simply a directory tree in your filesystem that Mercurial
       treats as special. You can rename or delete a repository any
       time you like, using either the command line or your file
@@ -145,7 +145,7 @@
     <sect2>
       <title>Making a local copy of a repository</title>
 
-      <para><emphasis>Copying</emphasis> a repository is just a little
+      <para id="x_13"><emphasis>Copying</emphasis> a repository is just a little
 	bit special.  While you could use a normal file copying
 	command to make a copy of a repository, it's best to use a
 	built-in command that Mercurial provides.  This command is
@@ -154,23 +154,23 @@
 
       &interaction.tour.clone;
 
-      <para>If our clone succeeded, we should now have a local
+      <para id="x_14">If our clone succeeded, we should now have a local
 	directory called <filename class="directory">hello</filename>.
 	This directory will contain some files.</para>
 
       &interaction.tour.ls;
 
-      <para>These files have the same contents and history in our
+      <para id="x_15">These files have the same contents and history in our
 	repository as they do in the repository we cloned.</para>
 
-      <para>Every Mercurial repository is complete, self-contained,
+      <para id="x_16">Every Mercurial repository is complete, self-contained,
 	and independent.  It contains its own private copy of a
 	project's files and history.  A cloned repository remembers
 	the location of the repository it was cloned from, but it does
 	not communicate with that repository, or any other, unless you
 	tell it to.</para>
 
-      <para>What this means for now is that we're free to experiment
+      <para id="x_17">What this means for now is that we're free to experiment
 	with our repository, safe in the knowledge that it's a private
 	<quote>sandbox</quote> that won't affect anyone else.</para>
 
@@ -178,20 +178,20 @@
     <sect2>
       <title>What's in a repository?</title>
 
-      <para>When we take a more detailed look inside a repository, we
+      <para id="x_18">When we take a more detailed look inside a repository, we
 	can see that it contains a directory named <filename
 	  class="directory">.hg</filename>.  This is where Mercurial
 	keeps all of its metadata for the repository.</para>
 
       &interaction.tour.ls-a;
 
-      <para>The contents of the <filename
+      <para id="x_19">The contents of the <filename
 	  class="directory">.hg</filename> directory and its
 	subdirectories are private to Mercurial.  Every other file and
 	directory in the repository is yours to do with as you
 	please.</para>
 
-      <para>To introduce a little terminology, the <filename
+      <para id="x_1a">To introduce a little terminology, the <filename
 	  class="directory">.hg</filename> directory is the
 	<quote>real</quote> repository, and all of the files and
 	directories that coexist with it are said to live in the
@@ -208,68 +208,66 @@
   <sect1>
     <title>A tour through history</title>
 
-    <para>One of the first things we might want to do with a new,
+    <para id="x_1b">One of the first things we might want to do with a new,
       unfamiliar repository is understand its history.  The <command
 	role="hg-cmd">hg log</command> command gives us a view of
       history.</para>
 
     &interaction.tour.log;
 
-    <para>By default, this command prints a brief paragraph of output
+    <para id="x_1c">By default, this command prints a brief paragraph of output
       for each change to the project that was recorded.  In Mercurial
       terminology, we call each of these recorded events a
       <emphasis>changeset</emphasis>, because it can contain a record
       of changes to several files.</para>
 
-    <para>The fields in a record of output from <command
+    <para id="x_1d">The fields in a record of output from <command
 	role="hg-cmd">hg log</command> are as follows.</para>
     <itemizedlist>
-      <listitem><para><literal>changeset</literal>: This field has the
+      <listitem><para id="x_1e"><literal>changeset</literal>: This field has the
 	  format of a number, followed by a colon, followed by a
 	  hexadecimal string.  These are
 	  <emphasis>identifiers</emphasis> for the changeset.  There
 	  are two identifiers because the number is shorter and easier
 	  to type than the hex string.</para></listitem>
-      <listitem><para><literal>user</literal>: The identity of the
+      <listitem><para id="x_1f"><literal>user</literal>: The identity of the
 	  person who created the changeset.  This is a free-form
 	  field, but it most often contains a person's name and email
 	  address.</para></listitem>
-      <listitem><para><literal>date</literal>: The date and time on
+      <listitem><para id="x_20"><literal>date</literal>: The date and time on
 	  which the changeset was created, and the timezone in which
 	  it was created.  (The date and time are local to that
 	  timezone; they display what time and date it was for the
 	  person who created the changeset.)</para></listitem>
-      <listitem><para><literal>summary</literal>: The first line of
+      <listitem><para id="x_21"><literal>summary</literal>: The first line of
 	  the text message that the creator of the changeset entered
 	  to describe the changeset.</para></listitem></itemizedlist>
-    <para>The default output printed by <command role="hg-cmd">hg
+    <para id="x_22">The default output printed by <command role="hg-cmd">hg
 	log</command> is purely a summary; it is missing a lot of
       detail.</para>
 
-    <para>Figure <xref endterm="fig.tour-basic.history.caption"
-        linkend="fig.tour-basic.history"/> provides a
-      graphical representation of the history of the <filename
+    <para id="x_23"><xref linkend="fig:tour-basic:history"/> provides
+      a graphical representation of the history of the <filename
 	class="directory">hello</filename> repository, to make it a
       little easier to see which direction history is
       <quote>flowing</quote> in.  We'll be returning to this figure
       several times in this chapter and the chapter that
       follows.</para>
 
-    <informalfigure id="fig.tour-basic.history">
+    <figure id="fig:tour-basic:history">
+      <title>Graphical history of the <filename
+	  class="directory">hello</filename> repository</title>
       <mediaobject>
-	<imageobject><imagedata fileref="images/tour-history.png"/></imageobject>
+	<imageobject><imagedata fileref="figs/tour-history.png"/></imageobject>
 	<textobject><phrase>XXX add text</phrase></textobject>
-	<caption><para id="fig.tour-basic.history.caption">Graphical history of
-	    the <filename class="directory">hello</filename> repository</para>
-	</caption>
       </mediaobject>
-    </informalfigure>
+    </figure>
 
     <sect2>
       <title>Changesets, revisions, and talking to other
 	people</title>
 
-      <para>As English is a notoriously sloppy language, and computer
+      <para id="x_25">As English is a notoriously sloppy language, and computer
 	science has a hallowed history of terminological confusion
 	(why use one term when four will do?), revision control has a
 	variety of words and phrases that mean the same thing.  If you
@@ -279,7 +277,7 @@
 	<quote>cset</quote>, and sometimes a changeset is referred to
 	as a <quote>revision</quote> or a <quote>rev</quote>.</para>
 
-      <para>While it doesn't matter what <emphasis>word</emphasis> you
+      <para id="x_26">While it doesn't matter what <emphasis>word</emphasis> you
 	use to refer to the concept of <quote>a changeset</quote>, the
 	<emphasis>identifier</emphasis> that you use to refer to
 	<quote>a <emphasis>specific</emphasis> changeset</quote> is of
@@ -288,14 +286,14 @@
 	  log</command> identifies a changeset using both a number and
 	a hexadecimal string.</para>
       <itemizedlist>
-	<listitem><para>The revision number is <emphasis>only valid in
+	<listitem><para id="x_27">The revision number is <emphasis>only valid in
 	      that repository</emphasis>,</para></listitem>
-	<listitem><para>while the hex string is the
+	<listitem><para id="x_28">while the hex string is the
 	    <emphasis>permanent, unchanging identifier</emphasis> that
 	    will always identify that exact changeset in
 	    <emphasis>every</emphasis> copy of the
 	    repository.</para></listitem></itemizedlist>
-      <para>This distinction is important.  If you send someone an
+      <para id="x_29">This distinction is important.  If you send someone an
 	email talking about <quote>revision 33</quote>, there's a high
 	likelihood that their revision 33 will <emphasis>not be the
 	  same</emphasis> as yours.  The reason for this is that a
@@ -305,7 +303,7 @@
 	repositories. Three changes $a,b,c$ can easily appear in one
 	repository as $0,1,2$, while in another as $1,0,2$.</para>
 
-      <para>Mercurial uses revision numbers purely as a convenient
+      <para id="x_2a">Mercurial uses revision numbers purely as a convenient
 	shorthand.  If you need to discuss a changeset with someone,
 	or make a record of a changeset for some other reason (for
 	example, in a bug report), use the hexadecimal
@@ -315,7 +313,7 @@
     <sect2>
       <title>Viewing specific revisions</title>
 
-      <para>To narrow the output of <command role="hg-cmd">hg
+      <para id="x_2b">To narrow the output of <command role="hg-cmd">hg
 	  log</command> down to a single revision, use the <option
 	  role="hg-opt-log">-r</option> (or <option
 	  role="hg-opt-log">--rev</option>) option.  You can use
@@ -324,7 +322,7 @@
 
       &interaction.tour.log-r;
 
-      <para>If you want to see the history of several revisions
+      <para id="x_2c">If you want to see the history of several revisions
 	without having to list each one, you can use <emphasis>range
 	  notation</emphasis>; this lets you express the idea <quote>I
 	  want all revisions between <literal>abc</literal> and
@@ -332,7 +330,7 @@
       
 	&interaction.tour.log.range;
 
-      <para>Mercurial also honours the order in which you specify
+      <para id="x_2d">Mercurial also honours the order in which you specify
 	revisions, so <command role="hg-cmd">hg log -r 2:4</command>
 	prints 2, 3, and 4. while <command role="hg-cmd">hg log -r
 	  4:2</command> prints 4, 3, and 2.</para>
@@ -341,7 +339,7 @@
     <sect2>
       <title>More detailed information</title>
 
-      <para>While the summary information printed by <command
+      <para id="x_2e">While the summary information printed by <command
 	  role="hg-cmd">hg log</command> is useful if you already know
 	what you're looking for, you may need to see a complete
 	description of the change, or a list of the files changed, if
@@ -353,13 +351,13 @@
 
       &interaction.tour.log-v;
 
-      <para>If you want to see both the description and content of a
-	change, add the <option role="hg-opt-log">-p</option> (or
-	<option role="hg-opt-log">--patch</option>) option.  This
-	displays the content of a change as a <emphasis>unified
-	  diff</emphasis> (if you've never seen a unified diff before,
-	see section <xref linkend="sec.mq.patch"/> for an
-	overview).</para>
+      <para id="x_2f">If you want to see both the description and
+	content of a change, add the <option
+	  role="hg-opt-log">-p</option> (or <option
+	  role="hg-opt-log">--patch</option>) option.  This displays
+	the content of a change as a <emphasis>unified diff</emphasis>
+	(if you've never seen a unified diff before, see <xref
+	  linkend="sec:mq:patch"/> for an overview).</para>
 
       &interaction.tour.log-vp;
 
@@ -368,39 +366,39 @@
   <sect1>
     <title>All about command options</title>
 
-    <para>Let's take a brief break from exploring Mercurial commands
+    <para id="x_30">Let's take a brief break from exploring Mercurial commands
       to discuss a pattern in the way that they work; you may find
       this useful to keep in mind as we continue our tour.</para>
 
-    <para>Mercurial has a consistent and straightforward approach to
+    <para id="x_31">Mercurial has a consistent and straightforward approach to
       dealing with the options that you can pass to commands.  It
       follows the conventions for options that are common to modern
       Linux and Unix systems.</para>
     <itemizedlist>
-      <listitem><para>Every option has a long name.  For example, as
+      <listitem><para id="x_32">Every option has a long name.  For example, as
 	  we've already seen, the <command role="hg-cmd">hg
 	    log</command> command accepts a <option
 	    role="hg-opt-log">--rev</option> option.</para></listitem>
-      <listitem><para>Most options have short names, too.  Instead of
+      <listitem><para id="x_33">Most options have short names, too.  Instead of
 	  <option role="hg-opt-log">--rev</option>, we can use <option
 	    role="hg-opt-log">-r</option>.  (The reason that some
 	  options don't have short names is that the options in
 	  question are rarely used.)</para></listitem>
-      <listitem><para>Long options start with two dashes (e.g. <option
+      <listitem><para id="x_34">Long options start with two dashes (e.g. <option
 	    role="hg-opt-log">--rev</option>), while short options
 	  start with one (e.g. <option
 	    role="hg-opt-log">-r</option>).</para></listitem>
-      <listitem><para>Option naming and usage is consistent across
+      <listitem><para id="x_35">Option naming and usage is consistent across
 	  commands.  For example, every command that lets you specify
 	  a changeset ID or revision number accepts both <option
 	    role="hg-opt-log">-r</option> and <option
 	    role="hg-opt-log">--rev</option>
 	  arguments.</para></listitem></itemizedlist>
-    <para>In the examples throughout this book, I use short options
+    <para id="x_36">In the examples throughout this book, I use short options
       instead of long.  This just reflects my own preference, so don't
       read anything significant into it.</para>
 
-    <para>Most commands that print output of some kind will print more
+    <para id="x_37">Most commands that print output of some kind will print more
       output when passed a <option role="hg-opt-global">-v</option>
       (or <option role="hg-opt-global">--verbose</option>) option, and
       less when passed <option role="hg-opt-global">-q</option> (or
@@ -410,11 +408,11 @@
   <sect1>
     <title>Making and reviewing changes</title>
 
-    <para>Now that we have a grasp of viewing history in Mercurial,
+    <para id="x_38">Now that we have a grasp of viewing history in Mercurial,
       let's take a look at making some changes and examining
       them.</para>
 
-    <para>The first thing we'll do is isolate our experiment in a
+    <para id="x_39">The first thing we'll do is isolate our experiment in a
       repository of its own.  We use the <command role="hg-cmd">hg
 	clone</command> command, but we don't need to clone a copy of
       the remote repository.  Since we already have a copy of it
@@ -424,7 +422,7 @@
 
     &interaction.tour.reclone;
 
-    <para>As an aside, it's often good practice to keep a
+    <para id="x_3a">As an aside, it's often good practice to keep a
       <quote>pristine</quote> copy of a remote repository around,
       which you can then make temporary clones of to create sandboxes
       for each task you want to work on.  This lets you work on
@@ -433,7 +431,7 @@
       local clones are so cheap, there's almost no overhead to cloning
       and destroying repositories whenever you want.</para>
 
-    <para>In our <filename class="directory">my-hello</filename>
+    <para id="x_3b">In our <filename class="directory">my-hello</filename>
       repository, we have a file <filename>hello.c</filename> that
       contains the classic <quote>hello, world</quote> program. Let's
       use the ancient and venerable <command>sed</command> command to
@@ -446,20 +444,20 @@
 
     &interaction.tour.sed;
 
-    <para>Mercurial's <command role="hg-cmd">hg status</command>
+    <para id="x_3c">Mercurial's <command role="hg-cmd">hg status</command>
       command will tell us what Mercurial knows about the files in the
       repository.</para>
 
     &interaction.tour.status;
 
-    <para>The <command role="hg-cmd">hg status</command> command
+    <para id="x_3d">The <command role="hg-cmd">hg status</command> command
       prints no output for some files, but a line starting with
       <quote><literal>M</literal></quote> for
       <filename>hello.c</filename>.  Unless you tell it to, <command
 	role="hg-cmd">hg status</command> will not print any output
       for files that have not been modified.</para>
 
-    <para>The <quote><literal>M</literal></quote> indicates that
+    <para id="x_3e">The <quote><literal>M</literal></quote> indicates that
       Mercurial has noticed that we modified
       <filename>hello.c</filename>.  We didn't need to
       <emphasis>inform</emphasis> Mercurial that we were going to
@@ -467,7 +465,7 @@
       file after we were done; it was able to figure this out
       itself.</para>
 
-    <para>It's a little bit helpful to know that we've modified
+    <para id="x_3f">It's a little bit helpful to know that we've modified
       <filename>hello.c</filename>, but we might prefer to know
       exactly <emphasis>what</emphasis> changes we've made to it.  To
       do this, we use the <command role="hg-cmd">hg diff</command>
@@ -479,14 +477,14 @@
   <sect1>
     <title>Recording changes in a new changeset</title>
 
-    <para>We can modify files, build and test our changes, and use
+    <para id="x_40">We can modify files, build and test our changes, and use
       <command role="hg-cmd">hg status</command> and <command
 	role="hg-cmd">hg diff</command> to review our changes, until
       we're satisfied with what we've done and arrive at a natural
       stopping point where we want to record our work in a new
       changeset.</para>
 
-    <para>The <command role="hg-cmd">hg commit</command> command lets
+    <para id="x_41">The <command role="hg-cmd">hg commit</command> command lets
       us create a new changeset; we'll usually refer to this as
       <quote>making a commit</quote> or
       <quote>committing</quote>.</para>
@@ -494,7 +492,7 @@
     <sect2>
       <title>Setting up a username</title>
 
-      <para>When you try to run <command role="hg-cmd">hg
+      <para id="x_42">When you try to run <command role="hg-cmd">hg
 	  commit</command> for the first time, it is not guaranteed to
 	succeed.  Mercurial records your name and address with each
 	change that you commit, so that you and others will later be
@@ -503,36 +501,37 @@
 	change with.  It will attempt each of the following methods,
 	in order:</para>
       <orderedlist>
-	<listitem><para>If you specify a <option
+	<listitem><para id="x_43">If you specify a <option
 	      role="hg-opt-commit">-u</option> option to the <command
 	      role="hg-cmd">hg commit</command> command on the command
 	    line, followed by a username, this is always given the
 	    highest precedence.</para></listitem>
-	<listitem><para>If you have set the <envar>HGUSER</envar>
+	<listitem><para id="x_44">If you have set the <envar>HGUSER</envar>
 	    environment variable, this is checked
 	    next.</para></listitem>
-	<listitem><para>If you create a file in your home directory
-	    called <filename role="special">.hgrc</filename>, with a
-	    <envar role="rc-item-ui">username</envar> entry, that will
-	    be used next.  To see what the contents of this file
-	    should look like, refer to section <xref
-	      linkend="sec.tour-basic.username"/>
+	<listitem><para id="x_45">If you create a file in your home
+	    directory called <filename
+	      role="special">.hgrc</filename>, with a <envar
+	      role="rc-item-ui">username</envar> entry, that will be
+	    used next.  To see what the contents of this file should
+	    look like, refer to <xref
+	      linkend="sec:tour-basic:username"/>
 	    below.</para></listitem>
-	<listitem><para>If you have set the <envar>EMAIL</envar>
+	<listitem><para id="x_46">If you have set the <envar>EMAIL</envar>
 	    environment variable, this will be used
 	    next.</para></listitem>
-	<listitem><para>Mercurial will query your system to find out
+	<listitem><para id="x_47">Mercurial will query your system to find out
 	    your local user name and host name, and construct a
 	    username from these components. Since this often results
 	    in a username that is not very useful, it will print a
 	    warning if it has to do
 	    this.</para></listitem>
       </orderedlist>
-      <para>If all of these mechanisms fail, Mercurial will
+      <para id="x_48">If all of these mechanisms fail, Mercurial will
 	  fail, printing an error message.  In this case, it will not
 	  let you commit until you set up a
 	  username.</para>
-      <para>You should think of the <envar>HGUSER</envar> environment
+      <para id="x_49">You should think of the <envar>HGUSER</envar> environment
 	variable and the <option role="hg-opt-commit">-u</option>
 	option to the <command role="hg-cmd">hg commit</command>
 	command as ways to <emphasis>override</emphasis> Mercurial's
@@ -540,10 +539,10 @@
 	and most robust way to set a username for yourself is by
 	creating a <filename role="special">.hgrc</filename> file; see
 	below for details.</para>
-      <sect3 id="sec.tour-basic.username">
+      <sect3 id="sec:tour-basic:username">
 	<title>Creating a Mercurial configuration file</title>
 
-	<para>To set a user name, use your favourite editor
+	<para id="x_4a">To set a user name, use your favourite editor
 	    to create a file called <filename
 	      role="special">.hgrc</filename> in your home directory.
 	    Mercurial will use this file to look up your personalised
@@ -555,7 +554,7 @@
 username = Firstname Lastname
 &lt;email.address@domain.net&gt;</programlisting>
 
-	<para>The <quote><literal>[ui]</literal></quote> line begins a
+	<para id="x_4b">The <quote><literal>[ui]</literal></quote> line begins a
 	  <emphasis>section</emphasis> of the config file, so you can
 	  read the <quote><literal>username = ...</literal></quote>
 	  line as meaning <quote>set the value of the
@@ -570,14 +569,14 @@
       <sect3>
 	<title>Choosing a user name</title>
 
-	<para>You can use any text you like as the value of
+	<para id="x_4c">You can use any text you like as the value of
 	    the <literal>username</literal> config item, since this
 	    information is for reading by other people, but for
 	    interpreting by Mercurial.  The convention that most
 	    people follow is to use their name and email address, as
 	    in the example above.</para>
 	<note>
-	  <para>Mercurial's built-in web server obfuscates
+	  <para id="x_4d">Mercurial's built-in web server obfuscates
 	      email addresses, to make it more difficult for the email
 	      harvesting tools that spammers use. This reduces the
 	      likelihood that you'll start receiving more junk email
@@ -589,7 +588,7 @@
     <sect2>
       <title>Writing a commit message</title>
 
-      <para>When we commit a change, Mercurial drops us into
+      <para id="x_4e">When we commit a change, Mercurial drops us into
 	  a text editor, to enter a message that will describe the
 	  modifications we've made in this changeset.  This is called
 	  the <emphasis>commit message</emphasis>.  It will be a
@@ -599,14 +598,14 @@
 
        &interaction.tour.commit;
 
-      <para>The editor that the <command role="hg-cmd">hg
+      <para id="x_4f">The editor that the <command role="hg-cmd">hg
 	    commit</command> command drops us into will contain an
 	  empty line, followed by a number of lines starting with
 	  <quote><literal>HG:</literal></quote>.</para>
 
     <programlisting>XXX fix this XXX</programlisting>
 
-      <para>Mercurial ignores the lines that start with
+      <para id="x_50">Mercurial ignores the lines that start with
 	  <quote><literal>HG:</literal></quote>; it uses them only to
 	  tell us which files it's recording changes to.  Modifying or
 	  deleting these lines has no effect.</para>
@@ -614,7 +613,7 @@
     <sect2>
       <title>Writing a good commit message</title>
 
-      <para>Since <command role="hg-cmd">hg log</command>
+      <para id="x_51">Since <command role="hg-cmd">hg log</command>
 	  only prints the first line of a commit message by default,
 	  it's best to write a commit message whose first line stands
 	  alone.  Here's a real example of a commit message that
@@ -628,13 +627,13 @@
 date:        Tue Sep 26 21:37:07 2006 -0700
 summary:     include buildmeister/commondefs. Add exports.</programlisting>
 
-      <para>As far as the remainder of the contents of the
+      <para id="x_52">As far as the remainder of the contents of the
 	  commit message are concerned, there are no hard-and-fast
 	  rules.  Mercurial itself doesn't interpret or care about the
 	  contents of the commit message, though your project may have
 	  policies that dictate a certain kind of
 	  formatting.</para>
-      <para>My personal preference is for short, but
+      <para id="x_53">My personal preference is for short, but
 	  informative, commit messages that tell me something that I
 	  can't figure out with a quick glance at the output of
 	  <command role="hg-cmd">hg log
@@ -643,12 +642,12 @@
     <sect2>
       <title>Aborting a commit</title>
 
-      <para>If you decide that you don't want to commit
+      <para id="x_54">If you decide that you don't want to commit
 	  while in the middle of editing a commit message, simply exit
 	  from your editor without saving the file that it's editing.
 	  This will cause nothing to happen to either the repository
 	  or the working directory.</para>
-      <para>If we run the <command role="hg-cmd">hg
+      <para id="x_55">If we run the <command role="hg-cmd">hg
 	    commit</command> command without any arguments, it records
 	  all of the changes we've made, as reported by <command
 	    role="hg-cmd">hg status</command> and <command
@@ -657,7 +656,7 @@
     <sect2>
       <title>Admiring our new handiwork</title>
 
-      <para>Once we've finished the commit, we can use the
+      <para id="x_56">Once we've finished the commit, we can use the
 	  <command role="hg-cmd">hg tip</command> command to display
 	  the changeset we just created.  This command produces output
 	  that is identical to <command role="hg-cmd">hg
@@ -666,7 +665,7 @@
 
       &interaction.tour.tip;
 
-      <para>We refer to
+      <para id="x_57">We refer to
 	  the newest revision in the repository as the tip revision,
 	  or simply the tip.</para>
     </sect2>
@@ -675,16 +674,16 @@
   <sect1>
     <title>Sharing changes</title>
 
-    <para>We mentioned earlier that repositories in
+    <para id="x_58">We mentioned earlier that repositories in
 	Mercurial are self-contained.  This means that the changeset
 	we just created exists only in our <filename
 	  class="directory">my-hello</filename> repository.  Let's
 	look at a few ways that we can propagate this change into
 	other repositories.</para>
 
-    <sect2 id="sec.tour.pull">
+    <sect2 id="sec:tour:pull">
       <title>Pulling changes from another repository</title>
-      <para>To get started, let's clone our original
+      <para id="x_59">To get started, let's clone our original
 	  <filename class="directory">hello</filename> repository,
 	  which does not contain the change we just committed.  We'll
 	  call our temporary repository <filename
@@ -692,7 +691,7 @@
 
       &interaction.tour.clone-pull;
 
-      <para>We'll use the <command role="hg-cmd">hg
+      <para id="x_5a">We'll use the <command role="hg-cmd">hg
 	    pull</command> command to bring changes from <filename
 	    class="directory">my-hello</filename> into <filename
 	    class="directory">hello-pull</filename>.  However, blindly
@@ -705,21 +704,21 @@
 
       &interaction.tour.incoming;
 
-      <para>(Of course, someone could
+      <para id="x_5b">(Of course, someone could
 	  cause more changesets to appear in the repository that we
 	  ran <command role="hg-cmd">hg incoming</command> in, before
 	  we get a chance to <command role="hg-cmd">hg pull</command>
 	  the changes, so that we could end up pulling changes that we
 	  didn't expect.)</para>
 
-      <para>Bringing changes into a repository is a simple
+      <para id="x_5c">Bringing changes into a repository is a simple
 	  matter of running the <command role="hg-cmd">hg
 	    pull</command> command, and telling it which repository to
 	  pull from.</para>
 
       &interaction.tour.pull;
 
-      <para>As you can see
+      <para id="x_5d">As you can see
 	  from the before-and-after output of <command
 	    role="hg-cmd">hg tip</command>, we have successfully
 	  pulled changes into our repository.  There remains one step
@@ -729,19 +728,19 @@
     <sect2>
       <title>Updating the working directory</title>
 
-      <para>We have so far glossed over the relationship between a
-	repository and its working directory.  The <command
+      <para id="x_5e">We have so far glossed over the relationship
+	between a repository and its working directory.  The <command
 	  role="hg-cmd">hg pull</command> command that we ran in
-	section <xref linkend="sec.tour.pull"/> brought changes
-	into the repository, but if we check, there's no sign of those
-	changes in the working directory.  This is because <command
+	<xref linkend="sec:tour:pull"/> brought changes into the
+	repository, but if we check, there's no sign of those changes
+	in the working directory.  This is because <command
 	  role="hg-cmd">hg pull</command> does not (by default) touch
 	the working directory.  Instead, we use the <command
 	  role="hg-cmd">hg update</command> command to do this.</para>
 
       &interaction.tour.update;
 
-      <para>It might seem a bit strange that <command role="hg-cmd">hg
+      <para id="x_5f">It might seem a bit strange that <command role="hg-cmd">hg
 	  pull</command> doesn't update the working directory
 	automatically.  There's actually a good reason for this: you
 	can use <command role="hg-cmd">hg update</command> to update
@@ -752,29 +751,28 @@
 	  role="hg-cmd">hg pull</command> which automatically updated
 	the working directory to a new revision, you might not be
 	terribly happy.</para>
-      <para>However, since pull-then-update is such a common thing to
+      <para id="x_60">However, since pull-then-update is such a common thing to
 	do, Mercurial lets you combine the two by passing the <option
 	  role="hg-opt-pull">-u</option> option to <command
 	  role="hg-cmd">hg pull</command>.</para>
 
-      <para>If you look back at the output of <command
-	  role="hg-cmd">hg pull</command> in section <xref
-	    linkend="sec.tour.pull"/> when we ran it without <option
+      <para id="x_61">If you look back at the output of <command
+	  role="hg-cmd">hg pull</command> in <xref
+	    linkend="sec:tour:pull"/> when we ran it without <option
 	  role="hg-opt-pull">-u</option>, you can see that it printed
 	a helpful reminder that we'd have to take an explicit step to
 	update the working directory:</para>
 
       <!-- &interaction.xxx.fixme; -->
 
-      <para>To find out what revision the working directory is at, use
+      <para id="x_62">To find out what revision the working directory is at, use
 	the <command role="hg-cmd">hg parents</command>
 	command.</para>
 
       &interaction.tour.parents;
 
-      <para>If you look back at figure <xref
-	   endterm="fig.tour-basic.history.caption" 
-	   linkend="fig.tour-basic.history"/>,
+      <para id="x_63">If you look back at <xref
+	  linkend="fig:tour-basic:history"/>,
 	you'll see arrows connecting each changeset.  The node that
 	the arrow leads <emphasis>from</emphasis> in each case is a
 	parent, and the node that the arrow leads
@@ -782,14 +780,14 @@
 	has a parent in just the same way; this is the changeset that
 	the working directory currently contains.</para>
 
-      <para>To update the working directory to a particular revision,
+      <para id="x_64">To update the working directory to a particular revision,
 
 	give a revision number or changeset ID to the <command
 	  role="hg-cmd">hg update</command> command.</para>
 
       &interaction.tour.older;
 
-      <para>If you omit an explicit revision, <command
+      <para id="x_65">If you omit an explicit revision, <command
 	  role="hg-cmd">hg update</command> will update to the tip
 	revision, as shown by the second call to <command
 	  role="hg-cmd">hg update</command> in the example
@@ -799,7 +797,7 @@
     <sect2>
       <title>Pushing changes to another repository</title>
 
-      <para>Mercurial lets us push changes to another
+      <para id="x_66">Mercurial lets us push changes to another
 	  repository, from the repository we're currently visiting.
 	  As with the example of <command role="hg-cmd">hg
 	    pull</command> above, we'll create a temporary repository
@@ -807,19 +805,19 @@
 
       &interaction.tour.clone-push;
 
-      <para>The <command role="hg-cmd">hg outgoing</command> command
+      <para id="x_67">The <command role="hg-cmd">hg outgoing</command> command
 	  tells us what changes would be pushed into another
 	  repository.</para>
 
       &interaction.tour.outgoing;
 
-      <para>And the
+      <para id="x_68">And the
 	  <command role="hg-cmd">hg push</command> command does the
 	  actual push.</para>
 
       &interaction.tour.push;
 
-      <para>As with
+      <para id="x_69">As with
 	  <command role="hg-cmd">hg pull</command>, the <command
 	    role="hg-cmd">hg push</command> command does not update
 	  the working directory in the repository that it's pushing
@@ -828,7 +826,7 @@
 	  does not provide a <literal>-u</literal> option that updates
 	  the other repository's working directory.)</para>
 
-      <para>What happens if we try to pull or push changes
+      <para id="x_6a">What happens if we try to pull or push changes
 	  and the receiving repository already has those changes?
 	  Nothing too exciting.</para>
 
@@ -837,7 +835,7 @@
     <sect2>
       <title>Sharing changes over a network</title>
 
-      <para>The commands we have covered in the previous few
+      <para id="x_6b">The commands we have covered in the previous few
 	  sections are not limited to working with local repositories.
 	  Each works in exactly the same fashion over a network
 	  connection; simply pass in a URL instead of a local
@@ -845,7 +843,7 @@
 	
       &interaction.tour.outgoing.net;
 
-      <para>In this example, we
+      <para id="x_6c">In this example, we
 	  can see what changes we could push to the remote repository,
 	  but the repository is understandably not set up to let
 	  anonymous users push to it.</para>
--- a/en/ch02-tour-merge.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/ch02-tour-merge.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,10 +1,10 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<chapter id="chap.tour-merge">
+<chapter id="chap:tour-merge">
   <?dbhtml filename="a-tour-of-mercurial-merging-work.html"?>
   <title>A tour of Mercurial: merging work</title>
 
-  <para>We've now covered cloning a repository, making changes in a
+  <para id="x_338">We've now covered cloning a repository, making changes in a
     repository, and pulling or pushing changes from one repository
     into another.  Our next step is <emphasis>merging</emphasis>
     changes from separate repositories.</para>
@@ -12,86 +12,85 @@
   <sect1>
     <title>Merging streams of work</title>
 
-    <para>Merging is a fundamental part of working with a distributed
+    <para id="x_339">Merging is a fundamental part of working with a distributed
       revision control tool.</para>
     <itemizedlist>
-      <listitem><para>Alice and Bob each have a personal copy of a
+      <listitem><para id="x_33a">Alice and Bob each have a personal copy of a
 	  repository for a project they're collaborating on.  Alice
 	  fixes a bug in her repository; Bob adds a new feature in
 	  his.  They want the shared repository to contain both the
 	  bug fix and the new feature.</para>
       </listitem>
-      <listitem><para>I frequently work on several different tasks for
+      <listitem><para id="x_33b">I frequently work on several different tasks for
 	  a single project at once, each safely isolated in its own
 	  repository. Working this way means that I often need to
 	  merge one piece of my own work with another.</para>
       </listitem></itemizedlist>
 
-    <para>Because merging is such a common thing to need to do,
+    <para id="x_33c">Because merging is such a common thing to need to do,
       Mercurial makes it easy.  Let's walk through the process.  We'll
       begin by cloning yet another repository (see how often they
       spring up?) and making a change in it.</para>
 
     &interaction.tour.merge.clone;
 
-    <para>We should now have two copies of
+    <para id="x_33d">We should now have two copies of
       <filename>hello.c</filename> with different contents.  The
       histories of the two repositories have also diverged, as
-      illustrated in figure <xref endterm="fig.tour-merge.sep-repos.caption"
-	linkend="fig.tour-merge.sep-repos"/>.</para>
+      illustrated in <xref
+	linkend="fig:tour-merge:sep-repos"/>.</para>
 
     &interaction.tour.merge.cat;
 
-    <informalfigure id="fig.tour-merge.sep-repos">
+    <figure id="fig:tour-merge:sep-repos">
+      <title>Divergent recent histories of the <filename
+	  class="directory">my-hello</filename> and <filename
+	  class="directory">my-new-hello</filename>
+	repositories</title>
       <mediaobject>
-	<imageobject><imagedata fileref="images/tour-merge-sep-repos.png"/></imageobject>
+	<imageobject><imagedata fileref="figs/tour-merge-sep-repos.png"/></imageobject>
 	<textobject><phrase>XXX add text</phrase></textobject>
-	<caption><para id="fig.tour-merge.sep-repos.caption">Divergent recent
-	  histories of the <filename
-	      class="directory">my-hello</filename> and <filename
-	      class="directory">my-new-hello</filename>
-	    repositories</para></caption>
       </mediaobject>
-    </informalfigure>
+    </figure>
 
-    <para>We already know that pulling changes from our <filename
+    <para id="x_33f">We already know that pulling changes from our <filename
 	class="directory">my-hello</filename> repository will have no
       effect on the working directory.</para>
 
     &interaction.tour.merge.pull;
 
-    <para>However, the <command role="hg-cmd">hg pull</command>
+    <para id="x_340">However, the <command role="hg-cmd">hg pull</command>
       command says something about <quote>heads</quote>.</para>
 
     <sect2>
       <title>Head changesets</title>
 
-      <para>A head is a change that has no descendants, or children,
+      <para id="x_341">A head is a change that has no descendants, or children,
 	as they're also known.  The tip revision is thus a head,
 	because the newest revision in a repository doesn't have any
 	children, but a repository can contain more than one
 	head.</para>
 
-      <informalfigure id="fig.tour-merge.pull">
+      <figure id="fig:tour-merge:pull">
+	<title>Repository contents after pulling from <filename
+	    class="directory">my-hello</filename> into <filename
+	    class="directory">my-new-hello</filename></title>
 	<mediaobject>
-	  <imageobject><imagedata fileref="images/tour-merge-pull.png"/></imageobject>
+	  <imageobject>
+	    <imagedata fileref="figs/tour-merge-pull.png"/>
+	  </imageobject>
 	  <textobject><phrase>XXX add text</phrase></textobject>
-	  <caption><para id="fig.tour-merge.pull.caption">Repository contents after
-	    pulling from <filename class="directory">my-hello</filename> into
-	    <filename class="directory">my-new-hello</filename></para></caption>
 	</mediaobject>
-      </informalfigure>
+      </figure>
 
-      <para>In figure <xref endterm="fig.tour-merge.pull.caption"
-        linkend="fig.tour-merge.pull"/>, you can
+      <para id="x_343">In <xref linkend="fig:tour-merge:pull"/>, you can
 	see the effect of the pull from <filename
 	  class="directory">my-hello</filename> into <filename
 	  class="directory">my-new-hello</filename>.  The history that
 	was already present in <filename
 	  class="directory">my-new-hello</filename> is untouched, but
-	a new revision has been added.  By referring to figure <xref
-	  endterm="fig.tour-merge.sep-repos.caption" 
-	  linkend="fig.tour-merge.sep-repos"/>, we can see that the
+	a new revision has been added.  By referring to <xref
+	  linkend="fig:tour-merge:sep-repos"/>, we can see that the
 	<emphasis>changeset ID</emphasis> remains the same in the new
 	repository, but the <emphasis>revision number</emphasis> has
 	changed.  (This, incidentally, is a fine example of why it's
@@ -105,13 +104,13 @@
     <sect2>
       <title>Performing the merge</title>
 
-      <para>What happens if we try to use the normal <command
+      <para id="x_344">What happens if we try to use the normal <command
 	  role="hg-cmd">hg update</command> command to update to the
 	new tip?</para>
 
       &interaction.tour.merge.update;
 
-      <para>Mercurial is telling us that the <command role="hg-cmd">hg
+      <para id="x_345">Mercurial is telling us that the <command role="hg-cmd">hg
 	  update</command> command won't do a merge; it won't update
 	the working directory when it thinks we might be wanting to do
 	a merge, unless we force it to do so.  Instead, we use the
@@ -120,16 +119,18 @@
 
       &interaction.tour.merge.merge;
 
-      <informalfigure id="fig.tour-merge.merge">
+      <figure id="fig:tour-merge:merge">
+	<title>Working directory and repository during merge, and
+	  following commit</title>
 	<mediaobject>
-	  <imageobject><imagedata fileref="images/tour-merge-merge.png"/></imageobject>
+	  <imageobject>
+	    <imagedata fileref="figs/tour-merge-merge.png"/>
+	  </imageobject>
 	  <textobject><phrase>XXX add text</phrase></textobject>
-	  <caption><para id="fig.tour-merge.merge.caption">Working directory and
-	      repository during merge, and following commit</para></caption>
 	</mediaobject>
-      </informalfigure>
+      </figure>
 
-      <para>This updates the working directory so that it contains
+      <para id="x_347">This updates the working directory so that it contains
 	changes from <emphasis>both</emphasis> heads, which is
 	reflected in both the output of <command role="hg-cmd">hg
 	  parents</command> and the contents of
@@ -141,22 +142,22 @@
     <sect2>
       <title>Committing the results of the merge</title>
 
-      <para>Whenever we've done a merge, <command role="hg-cmd">hg
+      <para id="x_348">Whenever we've done a merge, <command role="hg-cmd">hg
 	  parents</command> will display two parents until we <command
 	  role="hg-cmd">hg commit</command> the results of the
 	  merge.</para>
 
 	&interaction.tour.merge.commit;
 
-      <para>We now have a new tip revision; notice that it has
+      <para id="x_349">We now have a new tip revision; notice that it has
 	<emphasis>both</emphasis> of our former heads as its parents.
 	These are the same revisions that were previously displayed by
 	<command role="hg-cmd">hg parents</command>.</para>
 
       &interaction.tour.merge.tip;
 
-      <para>In figure <xref endterm="fig.tour-merge.merge.caption"
-	  linkend="fig.tour-merge.merge"/>, you can see a
+      <para id="x_34a">In <xref
+	  linkend="fig:tour-merge:merge"/>, you can see a
 	representation of what happens to the working directory during
 	the merge, and how this affects the repository when the commit
 	happens.  During the merge, the working directory has two
@@ -168,32 +169,29 @@
   <sect1>
     <title>Merging conflicting changes</title>
 
-    <para>Most merges are simple affairs, but sometimes you'll find
+    <para id="x_34b">Most merges are simple affairs, but sometimes you'll find
       yourself merging changes where each modifies the same portions
       of the same files.  Unless both modifications are identical,
       this results in a <emphasis>conflict</emphasis>, where you have
       to decide how to reconcile the different changes into something
       coherent.</para>
 
-    <informalfigure id="fig.tour-merge.conflict">
+    <figure id="fig:tour-merge:conflict">
+      <title>Conflicting changes to a document</title>
       <mediaobject>
-        <imageobject><imagedata fileref="images/tour-merge-conflict.png"/>
-        </imageobject>
-        <textobject><phrase>XXX add text</phrase></textobject>
-        <caption><para id="fig.tour-merge.conflict.caption">Conflicting
-          changes to a document</para></caption>
+	<imageobject><imagedata fileref="figs/tour-merge-conflict.png"/></imageobject>
+	<textobject><phrase>XXX add text</phrase></textobject>
       </mediaobject>
-    </informalfigure>
+    </figure>
 
-    <para>Figure <xref endterm="fig.tour-merge.conflict.caption"
-      linkend="fig.tour-merge.conflict"/> illustrates
+    <para id="x_34d"><xref linkend="fig:tour-merge:conflict"/> illustrates
       an instance of two conflicting changes to a document.  We
       started with a single version of the file; then we made some
       changes; while someone else made different changes to the same
       text.  Our task in resolving the conflicting changes is to
       decide what the file should look like.</para>
 
-    <para>Mercurial doesn't have a built-in facility for handling
+    <para id="x_34e">Mercurial doesn't have a built-in facility for handling
       conflicts. Instead, it runs an external program called
       <command>hgmerge</command>.  This is a shell script that is
       bundled with Mercurial; you can change it to behave however you
@@ -204,7 +202,7 @@
       human guidance) or aren't present, the script tries a few
       different graphical merging tools.</para>
 
-    <para>It's also possible to get Mercurial to run another program
+    <para id="x_34f">It's also possible to get Mercurial to run another program
       or script instead of <command>hgmerge</command>, by setting the
       <envar>HGMERGE</envar> environment variable to the name of your
       preferred program.</para>
@@ -212,59 +210,59 @@
     <sect2>
       <title>Using a graphical merge tool</title>
 
-      <para>My preferred graphical merge tool is
+      <para id="x_350">My preferred graphical merge tool is
 	<command>kdiff3</command>, which I'll use to describe the
 	features that are common to graphical file merging tools.  You
 	can see a screenshot of <command>kdiff3</command> in action in
-	figure <xref endterm="fig.tour-merge.kdiff3.caption"
-	linkend="fig.tour-merge.kdiff3"/>.  The kind of
+	<xref linkend="fig:tour-merge:kdiff3"/>.  The kind of
 	merge it is performing is called a <emphasis>three-way
 	  merge</emphasis>, because there are three different versions
 	of the file of interest to us.  The tool thus splits the upper
 	portion of the window into three panes:</para>
       <itemizedlist>
-	<listitem><para>At the left is the <emphasis>base</emphasis>
+	<listitem><para id="x_351">At the left is the <emphasis>base</emphasis>
 	    version of the file, i.e. the most recent version from
 	    which the two versions we're trying to merge are
 	    descended.</para>
 	</listitem>
-	<listitem><para>In the middle is <quote>our</quote> version of
+	<listitem><para id="x_352">In the middle is <quote>our</quote> version of
 	    the file, with the contents that we modified.</para>
 	</listitem>
-	<listitem><para>On the right is <quote>their</quote> version
+	<listitem><para id="x_353">On the right is <quote>their</quote> version
 	    of the file, the one that from the changeset that we're
 	    trying to merge with.</para>
 	</listitem></itemizedlist>
-      <para>In the pane below these is the current
+      <para id="x_354">In the pane below these is the current
 	<emphasis>result</emphasis> of the merge. Our task is to
 	replace all of the red text, which indicates unresolved
 	conflicts, with some sensible merger of the
 	<quote>ours</quote> and <quote>theirs</quote> versions of the
 	file.</para>
 
-      <para>All four of these panes are <emphasis>locked
+      <para id="x_355">All four of these panes are <emphasis>locked
 	  together</emphasis>; if we scroll vertically or horizontally
 	in any of them, the others are updated to display the
 	corresponding sections of their respective files.</para>
 
-      <informalfigure id="fig.tour-merge.kdiff3">
-        <mediaobject>
-          <imageobject><imagedata width="100%" fileref="images/kdiff3.png"/>
-          </imageobject>
-          <textobject><phrase>XXX add text</phrase></textobject>
-          <caption><para id="fig.tour-merge.kdiff3.caption">Using
-            <command>kdiff3</command> to merge versions of a file</para>
-          </caption>
-        </mediaobject>
-      </informalfigure>
+      <figure id="fig:tour-merge:kdiff3">
+	<title>Using <command>kdiff3</command> to merge versions of a
+	  file</title>
+	<mediaobject>
+	  <imageobject>
+	    <imagedata imagedata width="100%" fileref="figs/kdiff3.png"/></imageobject>
+	  <textobject>
+	    <phrase>XXX add text</phrase>
+	  </textobject>
+	</mediaobject>
+      </figure>
 
-      <para>For each conflicting portion of the file, we can choose to
+      <para id="x_357">For each conflicting portion of the file, we can choose to
 	resolve the conflict using some combination of text from the
 	base version, ours, or theirs.  We can also manually edit the
 	merged file at any time, in case we need to make further
 	modifications.</para>
 
-      <para>There are <emphasis>many</emphasis> file merging tools
+      <para id="x_358">There are <emphasis>many</emphasis> file merging tools
 	available, too many to cover here.  They vary in which
 	platforms they are available for, and in their particular
 	strengths and weaknesses.  Most are tuned for merging files
@@ -275,20 +273,19 @@
     <sect2>
       <title>A worked example</title>
 
-      <para>In this example, we will reproduce the file modification
-	history of figure <xref endterm="fig.tour-merge.conflict.caption"
-	linkend="fig.tour-merge.conflict"/>
+      <para id="x_359">In this example, we will reproduce the file modification
+	history of <xref linkend="fig:tour-merge:conflict"/>
 	above.  Let's begin by creating a repository with a base
 	version of our document.</para>
 
       &interaction.tour-merge-conflict.wife;
 
-      <para>We'll clone the repository and make a change to the
+      <para id="x_35a">We'll clone the repository and make a change to the
 	file.</para>
 
       &interaction.tour-merge-conflict.cousin;
 
-      <para>And another clone, to simulate someone else making a
+      <para id="x_35b">And another clone, to simulate someone else making a
 	change to the file. (This hints at the idea that it's not all
 	that unusual to merge with yourself when you isolate tasks in
 	separate repositories, and indeed to find and resolve
@@ -296,13 +293,13 @@
 
       &interaction.tour-merge-conflict.son;
 
-      <para>Having created two
+      <para id="x_35c">Having created two
 	different versions of the file, we'll set up an environment
 	suitable for running our merge.</para>
 
       &interaction.tour-merge-conflict.pull;
 
-      <para>In this example, I won't use Mercurial's normal
+      <para id="x_35d">In this example, I won't use Mercurial's normal
 	<command>hgmerge</command> program to do the merge, because it
 	would drop my nice automated example-running tool into a
 	graphical user interface.  Instead, I'll set
@@ -312,25 +309,25 @@
 	example on your computer, don't bother setting
 	<envar>HGMERGE</envar>.</para>
 
-      <para><emphasis role="bold">XXX FIX THIS
+      <para id="x_35e"><emphasis role="bold">XXX FIX THIS
 	  EXAMPLE.</emphasis></para>
 
       &interaction.tour-merge-conflict.merge;
 
-      <para>Because <command>merge</command> can't resolve the
+      <para id="x_35f">Because <command>merge</command> can't resolve the
 	conflicting changes, it leaves <emphasis>merge
 	  markers</emphasis> inside the file that has conflicts,
 	indicating which lines have conflicts, and whether they came
 	from our version of the file or theirs.</para>
 
-      <para>Mercurial can tell from the way <command>merge</command>
+      <para id="x_360">Mercurial can tell from the way <command>merge</command>
 	exits that it wasn't able to merge successfully, so it tells
 	us what commands we'll need to run if we want to redo the
 	merging operation.  This could be useful if, for example, we
 	were running a graphical merge tool and quit because we were
 	confused or realised we had made a mistake.</para>
 
-      <para>If automatic or manual merges fail, there's nothing to
+      <para id="x_361">If automatic or manual merges fail, there's nothing to
 	prevent us from <quote>fixing up</quote> the affected files
 	ourselves, and committing the results of our merge:</para>
 
@@ -338,32 +335,32 @@
 
     </sect2>
   </sect1>
-  <sect1 id="sec.tour-merge.fetch">
+  <sect1 id="sec:tour-merge:fetch">
     <title>Simplifying the pull-merge-commit sequence</title>
 
-    <para>The process of merging changes as outlined above is
+    <para id="x_362">The process of merging changes as outlined above is
       straightforward, but requires running three commands in
       sequence.</para>
     <programlisting>hg pull
 hg merge
 hg commit -m 'Merged remote changes'</programlisting>
-    <para>In the case of the final commit, you also need to enter a
+    <para id="x_363">In the case of the final commit, you also need to enter a
       commit message, which is almost always going to be a piece of
       uninteresting <quote>boilerplate</quote> text.</para>
 
-    <para>It would be nice to reduce the number of steps needed, if
+    <para id="x_364">It would be nice to reduce the number of steps needed, if
       this were possible.  Indeed, Mercurial is distributed with an
       extension called <literal role="hg-ext">fetch</literal> that
       does just this.</para>
 
-    <para>Mercurial provides a flexible extension mechanism that lets
+    <para id="x_365">Mercurial provides a flexible extension mechanism that lets
       people extend its functionality, while keeping the core of
       Mercurial small and easy to deal with.  Some extensions add new
       commands that you can use from the command line, while others
       work <quote>behind the scenes,</quote> for example adding
       capabilities to the server.</para>
 
-    <para>The <literal role="hg-ext">fetch</literal> extension adds a
+    <para id="x_366">The <literal role="hg-ext">fetch</literal> extension adds a
       new command called, not surprisingly, <command role="hg-cmd">hg
 	fetch</command>.  This extension acts as a combination of
       <command role="hg-cmd">hg pull</command>, <command
@@ -376,7 +373,7 @@
       added, it updates the working directory to the new tip
       changeset.</para>
 
-    <para>Enabling the <literal role="hg-ext">fetch</literal>
+    <para id="x_367">Enabling the <literal role="hg-ext">fetch</literal>
       extension is easy.  Edit your <filename
 	role="special">.hgrc</filename>, and either go to the <literal
 	role="rc-extensions">extensions</literal> section or create an
@@ -385,7 +382,7 @@
 	</literal></quote>.</para>
     <programlisting>[extensions]
 fetch =</programlisting>
-    <para>(Normally, on the right-hand side of the
+    <para id="x_368">(Normally, on the right-hand side of the
       <quote><literal>=</literal></quote> would appear the location of
       the extension, but since the <literal
 	role="hg-ext">fetch</literal> extension is in the standard
--- a/en/ch03-concepts.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/ch03-concepts.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,23 +1,23 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<chapter id="chap.concepts">
+<chapter id="chap:concepts">
   <?dbhtml filename="behind-the-scenes.html"?>
   <title>Behind the scenes</title>
 
-  <para>Unlike many revision control systems, the concepts upon which
+  <para id="x_2e8">Unlike many revision control systems, the concepts upon which
     Mercurial is built are simple enough that it's easy to understand
     how the software really works.  Knowing this certainly isn't
     necessary, but I find it useful to have a <quote>mental
       model</quote> of what's going on.</para>
 
-  <para>This understanding gives me confidence that Mercurial has been
+  <para id="x_2e9">This understanding gives me confidence that Mercurial has been
     carefully designed to be both <emphasis>safe</emphasis> and
     <emphasis>efficient</emphasis>.  And just as importantly, if it's
     easy for me to retain a good idea of what the software is doing
     when I perform a revision control task, I'm less likely to be
     surprised by its behaviour.</para>
 
-  <para>In this chapter, we'll initially cover the core concepts
+  <para id="x_2ea">In this chapter, we'll initially cover the core concepts
     behind Mercurial's design, then continue to discuss some of the
     interesting details of its implementation.</para>
 
@@ -27,7 +27,7 @@
     <sect2>
       <title>Tracking the history of a single file</title>
 
-      <para>When Mercurial tracks modifications to a file, it stores
+      <para id="x_2eb">When Mercurial tracks modifications to a file, it stores
 	the history of that file in a metadata object called a
 	<emphasis>filelog</emphasis>.  Each entry in the filelog
 	contains enough information to reconstruct one revision of the
@@ -38,7 +38,7 @@
 	an index to help Mercurial to find a revision
 	efficiently.</para>
 
-      <para>A file that is large, or has a lot of history, has its
+      <para id="x_2ec">A file that is large, or has a lot of history, has its
 	filelog stored in separate data
 	(<quote><literal>.d</literal></quote> suffix) and index
 	(<quote><literal>.i</literal></quote> suffix) files.  For
@@ -46,25 +46,23 @@
 	are combined in a single <quote><literal>.i</literal></quote>
 	file.  The correspondence between a file in the working
 	directory and the filelog that tracks its history in the
-	repository is illustrated in figure <xref
-	  endterm="fig.concepts.filelog.caption"
-	  linkend="fig.concepts.filelog"/>.</para>
+	repository is illustrated in <xref
+	  linkend="fig:concepts:filelog"/>.</para>
 
-      <informalfigure id="fig.concepts.filelog">
-        <mediaobject>
-          <imageobject><imagedata fileref="images/filelog.png"/></imageobject>
-          <textobject><phrase>XXX add text</phrase></textobject>
-          <caption><para id="fig.concepts.filelog.caption">Relationships between
-            files in working directory and filelogs in repository</para>
-          </caption>
-        </mediaobject>
-      </informalfigure>
+      <figure id="fig:concepts:filelog">
+	<title>Relationships between files in working directory and
+	  filelogs in repository</title>
+	<mediaobject>
+	  <imageobject><imagedata fileref="figs/filelog.png"/></imageobject>
+	  <textobject><phrase>XXX add text</phrase></textobject>
+	</mediaobject>
+      </figure>
 
     </sect2>
     <sect2>
       <title>Managing tracked files</title>
 
-      <para>Mercurial uses a structure called a
+      <para id="x_2ee">Mercurial uses a structure called a
 	<emphasis>manifest</emphasis> to collect together information
 	about the files that it tracks.  Each entry in the manifest
 	contains information about the files present in a single
@@ -76,7 +74,7 @@
     <sect2>
       <title>Recording changeset information</title>
 
-      <para>The <emphasis>changelog</emphasis> contains information
+      <para id="x_2ef">The <emphasis>changelog</emphasis> contains information
 	about each changeset.  Each revision records who committed a
 	change, the changeset comment, other pieces of
 	changeset-related information, and the revision of the
@@ -86,32 +84,30 @@
     <sect2>
       <title>Relationships between revisions</title>
 
-      <para>Within a changelog, a manifest, or a filelog, each
+      <para id="x_2f0">Within a changelog, a manifest, or a filelog, each
 	revision stores a pointer to its immediate parent (or to its
 	two parents, if it's a merge revision).  As I mentioned above,
 	there are also relationships between revisions
 	<emphasis>across</emphasis> these structures, and they are
 	hierarchical in nature.</para>
 
-      <para>For every changeset in a repository, there is exactly one
+      <para id="x_2f1">For every changeset in a repository, there is exactly one
 	revision stored in the changelog.  Each revision of the
 	changelog contains a pointer to a single revision of the
 	manifest.  A revision of the manifest stores a pointer to a
 	single revision of each filelog tracked when that changeset
-	was created.  These relationships are illustrated in figure
-	<xref endterm="fig.concepts.metadata.caption"
-	  linkend="fig.concepts.metadata"/>.</para>
+	was created.  These relationships are illustrated in
+	<xref linkend="fig:concepts:metadata"/>.</para>
 
-      <informalfigure id="fig.concepts.metadata">
-        <mediaobject>
-          <imageobject><imagedata fileref="images/metadata.png"/></imageobject>
-          <textobject><phrase>XXX add text</phrase></textobject>
-          <caption><para id="fig.concepts.metadata.caption">Metadata
-            relationships</para></caption>
-        </mediaobject>
-      </informalfigure>
+      <figure id="fig:concepts:metadata">
+	<title>Metadata relationships</title>
+	<mediaobject>
+	  <imageobject><imagedata fileref="figs/metadata.png"/></imageobject>
+	  <textobject><phrase>XXX add text</phrase></textobject>
+	</mediaobject>
+      </figure>
 
-      <para>As the illustration shows, there is
+      <para id="x_2f3">As the illustration shows, there is
 	<emphasis>not</emphasis> a <quote>one to one</quote>
 	relationship between revisions in the changelog, manifest, or
 	filelog. If the manifest hasn't changed between two
@@ -126,14 +122,14 @@
   <sect1>
     <title>Safe, efficient storage</title>
 
-    <para>The underpinnings of changelogs, manifests, and filelogs are
+    <para id="x_2f4">The underpinnings of changelogs, manifests, and filelogs are
       provided by a single structure called the
       <emphasis>revlog</emphasis>.</para>
 
     <sect2>
       <title>Efficient storage</title>
 
-      <para>The revlog provides efficient storage of revisions using a
+      <para id="x_2f5">The revlog provides efficient storage of revisions using a
 	<emphasis>delta</emphasis> mechanism.  Instead of storing a
 	complete copy of a file for each revision, it stores the
 	changes needed to transform an older revision into the new
@@ -141,7 +137,7 @@
 	typically a fraction of a percent of the size of a full copy
 	of a file.</para>
 
-      <para>Some obsolete revision control systems can only work with
+      <para id="x_2f6">Some obsolete revision control systems can only work with
 	deltas of text files.  They must either store binary files as
 	complete snapshots or encoded into a text representation, both
 	of which are wasteful approaches.  Mercurial can efficiently
@@ -149,16 +145,16 @@
 	doesn't need to treat text as special.</para>
 
     </sect2>
-    <sect2 id="sec.concepts.txn">
+    <sect2 id="sec:concepts:txn">
       <title>Safe operation</title>
 
-      <para>Mercurial only ever <emphasis>appends</emphasis> data to
+      <para id="x_2f7">Mercurial only ever <emphasis>appends</emphasis> data to
 	the end of a revlog file. It never modifies a section of a
 	file after it has written it.  This is both more robust and
 	efficient than schemes that need to modify or rewrite
 	data.</para>
 
-      <para>In addition, Mercurial treats every write as part of a
+      <para id="x_2f8">In addition, Mercurial treats every write as part of a
 	<emphasis>transaction</emphasis> that can span a number of
 	files.  A transaction is <emphasis>atomic</emphasis>: either
 	the entire transaction succeeds and its effects are all
@@ -168,7 +164,7 @@
 	writing it, the reader will never see a partially written
 	result that might confuse it.</para>
 
-      <para>The fact that Mercurial only appends to files makes it
+      <para id="x_2f9">The fact that Mercurial only appends to files makes it
 	easier to provide this transactional guarantee.  The easier it
 	is to do stuff like this, the more confident you should be
 	that it's done correctly.</para>
@@ -177,7 +173,7 @@
     <sect2>
       <title>Fast retrieval</title>
 
-      <para>Mercurial cleverly avoids a pitfall common to all earlier
+      <para id="x_2fa">Mercurial cleverly avoids a pitfall common to all earlier
 	revision control systems: the problem of <emphasis>inefficient
 	  retrieval</emphasis>. Most revision control systems store
 	the contents of a revision as an incremental series of
@@ -188,16 +184,15 @@
 	file accumulates, the more revisions you must read, hence the
 	longer it takes to reconstruct a particular revision.</para>
 
-      <informalfigure id="fig.concepts.snapshot">
-        <mediaobject>
-          <imageobject><imagedata fileref="images/snapshot.png"/></imageobject>
-          <textobject><phrase>XXX add text</phrase></textobject>
-          <caption><para id="fig.concepts.snapshot.caption">Snapshot of
-            a revlog, with incremental deltas</para></caption>
-        </mediaobject>
-      </informalfigure>
+      <figure id="fig:concepts:snapshot">
+	<title>Snapshot of a revlog, with incremental deltas</title>
+	<mediaobject>
+	  <imageobject><imagedata fileref="figs/snapshot.png"/></imageobject>
+	  <textobject><phrase>XXX add text</phrase></textobject>
+	</mediaobject>
+      </figure>
 
-      <para>The innovation that Mercurial applies to this problem is
+      <para id="x_2fc">The innovation that Mercurial applies to this problem is
 	simple but effective.  Once the cumulative amount of delta
 	information stored since the last snapshot exceeds a fixed
 	threshold, it stores a new snapshot (compressed, of course),
@@ -206,8 +201,7 @@
 	quickly.  This approach works so well that it has since been
 	copied by several other revision control systems.</para>
 
-      <para>Figure <xref endterm="fig.concepts.snapshot.caption"
-          linkend="fig.concepts.snapshot"/> illustrates
+      <para id="x_2fd"><xref linkend="fig:concepts:snapshot"/> illustrates
 	the idea.  In an entry in a revlog's index file, Mercurial
 	stores the range of entries from the data file that it must
 	read to reconstruct a particular revision.</para>
@@ -215,7 +209,7 @@
       <sect3>
 	<title>Aside: the influence of video compression</title>
 
-	<para>If you're familiar with video compression or have ever
+	<para id="x_2fe">If you're familiar with video compression or have ever
 	  watched a TV feed through a digital cable or satellite
 	  service, you may know that most video compression schemes
 	  store each frame of video as a delta against its predecessor
@@ -224,7 +218,7 @@
 	  visual errors accumulate over the course of a number of
 	  inter-frame deltas.</para>
 
-	<para>Because it's possible for a video stream to <quote>drop
+	<para id="x_2ff">Because it's possible for a video stream to <quote>drop
 	    out</quote> occasionally due to signal glitches, and to
 	  limit the accumulation of artefacts introduced by the lossy
 	  compression process, video encoders periodically insert a
@@ -240,24 +234,24 @@
     <sect2>
       <title>Identification and strong integrity</title>
 
-      <para>Along with delta or snapshot information, a revlog entry
+      <para id="x_300">Along with delta or snapshot information, a revlog entry
 	contains a cryptographic hash of the data that it represents.
 	This makes it difficult to forge the contents of a revision,
 	and easy to detect accidental corruption.</para>
 
-      <para>Hashes provide more than a mere check against corruption;
+      <para id="x_301">Hashes provide more than a mere check against corruption;
 	they are used as the identifiers for revisions.  The changeset
 	identification hashes that you see as an end user are from
 	revisions of the changelog.  Although filelogs and the
 	manifest also use hashes, Mercurial only uses these behind the
 	scenes.</para>
 
-      <para>Mercurial verifies that hashes are correct when it
+      <para id="x_302">Mercurial verifies that hashes are correct when it
 	retrieves file revisions and when it pulls changes from
 	another repository.  If it encounters an integrity problem, it
 	will complain and stop whatever it's doing.</para>
 
-      <para>In addition to the effect it has on retrieval efficiency,
+      <para id="x_303">In addition to the effect it has on retrieval efficiency,
 	Mercurial's use of periodic snapshots makes it more robust
 	against partial data corruption.  If a revlog becomes partly
 	corrupted due to a hardware error or system bug, it's often
@@ -271,7 +265,7 @@
   <sect1>
     <title>Revision history, branching, and merging</title>
 
-    <para>Every entry in a Mercurial revlog knows the identity of its
+    <para id="x_304">Every entry in a Mercurial revlog knows the identity of its
       immediate ancestor revision, usually referred to as its
       <emphasis>parent</emphasis>.  In fact, a revision contains room
       for not one parent, but two.  Mercurial uses a special hash,
@@ -279,14 +273,13 @@
       <quote>there is no parent here</quote>.  This hash is simply a
       string of zeroes.</para>
 
-    <para>In figure <xref endterm="fig.concepts.revlog.caption"
-        linkend="fig.concepts.revlog"/>, you can see
+    <para id="x_305">In <xref linkend="fig:concepts:revlog"/>, you can see
       an example of the conceptual structure of a revlog.  Filelogs,
       manifests, and changelogs all have this same structure; they
       differ only in the kind of data stored in each delta or
       snapshot.</para>
 
-    <para>The first revision in a revlog (at the bottom of the image)
+    <para id="x_306">The first revision in a revlog (at the bottom of the image)
       has the null ID in both of its parent slots.  For a
       <quote>normal</quote> revision, its first parent slot contains
       the ID of its parent revision, and its second contains the null
@@ -295,23 +288,22 @@
       revision that represents a merge between branches has two normal
       revision IDs in its parent slots.</para>
 
-    <informalfigure id="fig.concepts.revlog">
+    <figure id="fig:concepts:revlog">
+      <title>The conceptual structure of a revlog</title>
       <mediaobject>
-        <imageobject><imagedata fileref="images/revlog.png"/></imageobject>
-        <textobject><phrase>XXX add text</phrase></textobject>        
-	<caption><para id="fig.concepts.revlog.caption">Revision in revlog</para>
-	</caption>
+	<imageobject><imagedata fileref="figs/revlog.png"/></imageobject>
+	<textobject><phrase>XXX add text</phrase></textobject>
       </mediaobject>
-    </informalfigure>
+    </figure>
 
   </sect1>
   <sect1>
     <title>The working directory</title>
 
-    <para>In the working directory, Mercurial stores a snapshot of the
+    <para id="x_307">In the working directory, Mercurial stores a snapshot of the
       files from the repository as of a particular changeset.</para>
 
-    <para>The working directory <quote>knows</quote> which changeset
+    <para id="x_308">The working directory <quote>knows</quote> which changeset
       it contains.  When you update the working directory to contain a
       particular changeset, Mercurial looks up the appropriate
       revision of the manifest to find out which files it was tracking
@@ -320,13 +312,13 @@
       those files, with the same contents it had when the changeset
       was committed.</para>
 
-    <para>The <emphasis>dirstate</emphasis> contains Mercurial's
+    <para id="x_309">The <emphasis>dirstate</emphasis> contains Mercurial's
       knowledge of the working directory.  This details which
       changeset the working directory is updated to, and all of the
       files that Mercurial is tracking in the working
       directory.</para>
 
-    <para>Just as a revision of a revlog has room for two parents, so
+    <para id="x_30a">Just as a revision of a revlog has room for two parents, so
       that it can represent either a normal revision (with one parent)
       or a merge of two earlier revisions, the dirstate has slots for
       two parents.  When you use the <command role="hg-cmd">hg
@@ -342,38 +334,35 @@
     <sect2>
       <title>What happens when you commit</title>
 
-      <para>The dirstate stores parent information for more than just
+      <para id="x_30b">The dirstate stores parent information for more than just
 	book-keeping purposes.  Mercurial uses the parents of the
 	dirstate as <emphasis>the parents of a new
 	  changeset</emphasis> when you perform a commit.</para>
 
-      <informalfigure id="fig.concepts.wdir">
-        <mediaobject>
-          <imageobject><imagedata fileref="images/wdir.png"/></imageobject>
-          <textobject><phrase>XXX add text</phrase></textobject>
-          <caption><para id="fig.concepts.wdir.caption">The working
-            directory can have two parents</para></caption>
-        </mediaobject>
-      </informalfigure>
+      <figure id="fig:concepts:wdir">
+	<title>The working directory can have two parents</title>
+	<mediaobject>
+	  <imageobject><imagedata fileref="figs/wdir.png"/></imageobject>
+	  <textobject><phrase>XXX add text</phrase></textobject>
+	</mediaobject>
+      </figure>
 
-      <para>Figure <xref endterm="fig.concepts.wdir.caption"
-          linkend="fig.concepts.wdir"/> shows the
+      <para id="x_30d"><xref linkend="fig:concepts:wdir"/> shows the
 	normal state of the working directory, where it has a single
 	changeset as parent.  That changeset is the
 	<emphasis>tip</emphasis>, the newest changeset in the
 	repository that has no children.</para>
 
-      <informalfigure id="fig.concepts.wdir-after-commit">
-        <mediaobject>
-          <imageobject><imagedata fileref="images/wdir-after-commit.png"/>
-          </imageobject>
-          <textobject><phrase>XXX add text</phrase></textobject>
-          <caption><para id="fig.concepts.wdir-after-commit.caption">The working
-            directory gains new parents after a commit</para></caption>
-        </mediaobject>
-      </informalfigure>
+      <figure id="fig:concepts:wdir-after-commit">
+	<title>The working directory gains new parents after a
+	  commit</title>
+	<mediaobject>
+	  <imageobject><imagedata fileref="figs/wdir-after-commit.png"/></imageobject>
+	  <textobject><phrase>XXX add text</phrase></textobject>
+	</mediaobject>
+      </figure>
 
-      <para>It's useful to think of the working directory as
+      <para id="x_30f">It's useful to think of the working directory as
 	<quote>the changeset I'm about to commit</quote>.  Any files
 	that you tell Mercurial that you've added, removed, renamed,
 	or copied will be reflected in that changeset, as will
@@ -381,12 +370,11 @@
 	the new changeset will have the parents of the working
 	directory as its parents.</para>
 
-      <para>After a commit, Mercurial will update the parents of the
-	working directory, so that the first parent is the ID of the
-	new changeset, and the second is the null ID.  This is shown
-	in figure <xref endterm="fig.concepts.wdir-after-commit.caption"
-	  linkend="fig.concepts.wdir-after-commit"/>.
-	Mercurial
+      <para id="x_310">After a commit, Mercurial will update the
+	parents of the working directory, so that the first parent is
+	the ID of the new changeset, and the second is the null ID.
+	This is shown in <xref
+	  linkend="fig:concepts:wdir-after-commit"/>. Mercurial
 	doesn't touch any of the files in the working directory when
 	you commit; it just modifies the dirstate to note its new
 	parents.</para>
@@ -395,7 +383,7 @@
     <sect2>
       <title>Creating a new head</title>
 
-      <para>It's perfectly normal to update the working directory to a
+      <para id="x_311">It's perfectly normal to update the working directory to a
 	changeset other than the current tip.  For example, you might
 	want to know what your project looked like last Tuesday, or
 	you could be looking through changesets to see which one
@@ -404,43 +392,39 @@
 	interested in, and then examine the files in the working
 	directory directly to see their contents as they were when you
 	committed that changeset.  The effect of this is shown in
-	figure <xref endterm="fig.concepts.wdir-pre-branch.caption"
-	  linkend="fig.concepts.wdir-pre-branch"/>.</para>
+	<xref linkend="fig:concepts:wdir-pre-branch"/>.</para>
 
-      <informalfigure id="fig.concepts.wdir-pre-branch">
-        <mediaobject>
-          <imageobject><imagedata fileref="images/wdir-pre-branch.png"/>
-          </imageobject>
-          <textobject><phrase>XXX add text</phrase></textobject>
-          <caption><para id="fig.concepts.wdir-pre-branch.caption">The working
-            directory, updated to an older changeset</para></caption>
-        </mediaobject>
-      </informalfigure>
+      <figure id="fig:concepts:wdir-pre-branch">
+	<title>The working directory, updated to an older
+	  changeset</title>
+	<mediaobject>
+	  <imageobject><imagedata fileref="figs/wdir-pre-branch.png"/></imageobject>
+	  <textobject><phrase>XXX add text</phrase></textobject>
+	</mediaobject>
+      </figure>
 
-      <para>Having updated the working directory to an older
-	changeset, what happens if you make some changes, and then
-	commit?  Mercurial behaves in the same way as I outlined
+      <para id="x_313">Having updated the working directory to an
+	older changeset, what happens if you make some changes, and
+	then commit?  Mercurial behaves in the same way as I outlined
 	above.  The parents of the working directory become the
 	parents of the new changeset.  This new changeset has no
 	children, so it becomes the new tip.  And the repository now
 	contains two changesets that have no children; we call these
 	<emphasis>heads</emphasis>.  You can see the structure that
-	this creates in figure <xref
-	  endterm="fig.concepts.wdir-branch.caption"
-	  linkend="fig.concepts.wdir-branch"/>.</para>
+	this creates in <xref
+	  linkend="fig:concepts:wdir-branch"/>.</para>
 
-      <informalfigure id="fig.concepts.wdir-branch">
-        <mediaobject>
-          <imageobject><imagedata fileref="images/wdir-branch.png"/>
-          </imageobject>
-          <textobject><phrase>XXX add text</phrase></textobject>
-          <caption><para id="fig.concepts.wdir-branch.caption">After a
-            commit made while synced to an older changeset</para></caption>
-        </mediaobject>
-      </informalfigure>
+      <figure id="fig:concepts:wdir-branch">
+	<title>After a commit made while synced to an older
+	  changeset</title>
+	<mediaobject>
+	  <imageobject><imagedata fileref="figs/wdir-branch.png"/></imageobject>
+	  <textobject><phrase>XXX add text</phrase></textobject>
+	</mediaobject>
+      </figure>
 
       <note>
-	<para>  If you're new to Mercurial, you should keep in mind a
+	<para id="x_315">  If you're new to Mercurial, you should keep in mind a
 	  common <quote>error</quote>, which is to use the <command
 	    role="hg-cmd">hg pull</command> command without any
 	  options.  By default, the <command role="hg-cmd">hg
@@ -452,7 +436,7 @@
 	  a new head, because your working directory isn't synced to
 	  whatever the current tip is.</para>
 
-	<para>  I put the word <quote>error</quote> in quotes because
+	<para id="x_316">  I put the word <quote>error</quote> in quotes because
 	  all that you need to do to rectify this situation is
 	  <command role="hg-cmd">hg merge</command>, then <command
 	    role="hg-cmd">hg commit</command>.  In other words, this
@@ -466,67 +450,66 @@
     <sect2>
       <title>Merging heads</title>
 
-      <para>When you run the <command role="hg-cmd">hg merge</command>
-	command, Mercurial leaves the first parent of the working
-	directory unchanged, and sets the second parent to the
-	changeset you're merging with, as shown in figure <xref
-	  endterm="fig.concepts.wdir-merge.caption" 
-	  linkend="fig.concepts.wdir-merge"/>.</para>
+      <para id="x_317">When you run the <command role="hg-cmd">hg
+	  merge</command> command, Mercurial leaves the first parent
+	of the working directory unchanged, and sets the second parent
+	to the changeset you're merging with, as shown in <xref
+	  linkend="fig:concepts:wdir-merge"/>.</para>
 
-      <informalfigure id="fig.concepts.wdir-merge">
-        <mediaobject>
-          <imageobject><imagedata fileref="images/wdir-merge.png"/>
-          </imageobject>
-          <textobject><phrase>XXX add text</phrase></textobject>
-          <caption><para id="fig.concepts.wdir-merge.caption">Merging two
-            heads</para></caption>
-        </mediaobject>
-      </informalfigure>
+      <figure id="fig:concepts:wdir-merge">
+	<title>Merging two heads</title>
+	<mediaobject>
+	  <imageobject>
+	    <imagedata fileref="figs/wdir-merge.png"/>
+	  </imageobject>
+	  <textobject><phrase>XXX add text</phrase></textobject>
+	</mediaobject>
+      </figure>
 
-      <para>Mercurial also has to modify the working directory, to
+      <para id="x_319">Mercurial also has to modify the working directory, to
 	merge the files managed in the two changesets.  Simplified a
 	little, the merging process goes like this, for every file in
 	the manifests of both changesets.</para>
       <itemizedlist>
-	<listitem><para>If neither changeset has modified a file, do
+	<listitem><para id="x_31a">If neither changeset has modified a file, do
 	    nothing with that file.</para>
 	</listitem>
-	<listitem><para>If one changeset has modified a file, and the
+	<listitem><para id="x_31b">If one changeset has modified a file, and the
 	    other hasn't, create the modified copy of the file in the
 	    working directory.</para>
 	</listitem>
-	<listitem><para>If one changeset has removed a file, and the
+	<listitem><para id="x_31c">If one changeset has removed a file, and the
 	    other hasn't (or has also deleted it), delete the file
 	    from the working directory.</para>
 	</listitem>
-	<listitem><para>If one changeset has removed a file, but the
+	<listitem><para id="x_31d">If one changeset has removed a file, but the
 	    other has modified the file, ask the user what to do: keep
 	    the modified file, or remove it?</para>
 	</listitem>
-	<listitem><para>If both changesets have modified a file,
+	<listitem><para id="x_31e">If both changesets have modified a file,
 	    invoke an external merge program to choose the new
 	    contents for the merged file.  This may require input from
 	    the user.</para>
 	</listitem>
-	<listitem><para>If one changeset has modified a file, and the
+	<listitem><para id="x_31f">If one changeset has modified a file, and the
 	    other has renamed or copied the file, make sure that the
 	    changes follow the new name of the file.</para>
 	</listitem></itemizedlist>
-      <para>There are more details&emdash;merging has plenty of corner
+      <para id="x_320">There are more details&emdash;merging has plenty of corner
 	cases&emdash;but these are the most common choices that are
 	involved in a merge.  As you can see, most cases are
 	completely automatic, and indeed most merges finish
 	automatically, without requiring your input to resolve any
 	conflicts.</para>
 
-      <para>When you're thinking about what happens when you commit
+      <para id="x_321">When you're thinking about what happens when you commit
 	after a merge, once again the working directory is <quote>the
 	  changeset I'm about to commit</quote>.  After the <command
 	  role="hg-cmd">hg merge</command> command completes, the
 	working directory has two parents; these will become the
 	parents of the new changeset.</para>
 
-      <para>Mercurial lets you perform multiple merges, but you must
+      <para id="x_322">Mercurial lets you perform multiple merges, but you must
 	commit the results of each individual merge as you go.  This
 	is necessary because Mercurial only tracks two parents for
 	both revisions and the working directory.  While it would be
@@ -539,7 +522,7 @@
   <sect1>
     <title>Other interesting design features</title>
 
-    <para>In the sections above, I've tried to highlight some of the
+    <para id="x_323">In the sections above, I've tried to highlight some of the
       most important aspects of Mercurial's design, to illustrate that
       it pays careful attention to reliability and performance.
       However, the attention to detail doesn't stop there.  There are
@@ -552,13 +535,13 @@
     <sect2>
       <title>Clever compression</title>
 
-      <para>When appropriate, Mercurial will store both snapshots and
+      <para id="x_324">When appropriate, Mercurial will store both snapshots and
 	deltas in compressed form.  It does this by always
 	<emphasis>trying to</emphasis> compress a snapshot or delta,
 	but only storing the compressed version if it's smaller than
 	the uncompressed version.</para>
 
-      <para>This means that Mercurial does <quote>the right
+      <para id="x_325">This means that Mercurial does <quote>the right
 	  thing</quote> when storing a file whose native form is
 	compressed, such as a <literal>zip</literal> archive or a JPEG
 	image.  When these types of files are compressed a second
@@ -566,7 +549,7 @@
 	once-compressed form, and so Mercurial will store the plain
 	<literal>zip</literal> or JPEG.</para>
 
-      <para>Deltas between revisions of a compressed file are usually
+      <para id="x_326">Deltas between revisions of a compressed file are usually
 	larger than snapshots of the file, and Mercurial again does
 	<quote>the right thing</quote> in these cases.  It finds that
 	such a delta exceeds the threshold at which it should store a
@@ -577,7 +560,7 @@
       <sect3>
 	<title>Network recompression</title>
 
-	<para>When storing revisions on disk, Mercurial uses the
+	<para id="x_327">When storing revisions on disk, Mercurial uses the
 	  <quote>deflate</quote> compression algorithm (the same one
 	  used by the popular <literal>zip</literal> archive format),
 	  which balances good speed with a respectable compression
@@ -585,7 +568,7 @@
 	  network connection, Mercurial uncompresses the compressed
 	  revision data.</para>
 
-	<para>If the connection is over HTTP, Mercurial recompresses
+	<para id="x_328">If the connection is over HTTP, Mercurial recompresses
 	  the entire stream of data using a compression algorithm that
 	  gives a better compression ratio (the Burrows-Wheeler
 	  algorithm from the widely used <literal>bzip2</literal>
@@ -595,7 +578,7 @@
 	  transferred, yielding better network performance over almost
 	  all kinds of network.</para>
 
-	<para>(If the connection is over <command>ssh</command>,
+	<para id="x_329">(If the connection is over <command>ssh</command>,
 	  Mercurial <emphasis>doesn't</emphasis> recompress the
 	  stream, because <command>ssh</command> can already do this
 	  itself.)</para>
@@ -605,20 +588,20 @@
     <sect2>
       <title>Read/write ordering and atomicity</title>
 
-      <para>Appending to files isn't the whole story when it comes to
-	guaranteeing that a reader won't see a partial write.  If you
-	recall figure <xref endterm="fig.concepts.metadata.caption"
-	linkend="fig.concepts.metadata"/>, revisions in the
-	changelog point to revisions in the manifest, and revisions in
-	the manifest point to revisions in filelogs.  This hierarchy
-	is deliberate.</para>
+      <para id="x_32a">Appending to files isn't the whole story when
+	it comes to guaranteeing that a reader won't see a partial
+	write.  If you recall <xref linkend="fig:concepts:metadata"/>,
+	revisions in
+	the changelog point to revisions in the manifest, and
+	revisions in the manifest point to revisions in filelogs.
+	This hierarchy is deliberate.</para>
 
-      <para>A writer starts a transaction by writing filelog and
+      <para id="x_32b">A writer starts a transaction by writing filelog and
 	manifest data, and doesn't write any changelog data until
 	those are finished.  A reader starts by reading changelog
 	data, then manifest data, followed by filelog data.</para>
 
-      <para>Since the writer has always finished writing filelog and
+      <para id="x_32c">Since the writer has always finished writing filelog and
 	manifest data before it writes to the changelog, a reader will
 	never read a pointer to a partially written manifest revision
 	from the changelog, and it will never read a pointer to a
@@ -628,7 +611,7 @@
     <sect2>
       <title>Concurrent access</title>
 
-      <para>The read/write ordering and atomicity guarantees mean that
+      <para id="x_32d">The read/write ordering and atomicity guarantees mean that
 	Mercurial never needs to <emphasis>lock</emphasis> a
 	repository when it's reading data, even if the repository is
 	being written to while the read is occurring. This has a big
@@ -637,7 +620,7 @@
 	safely all at once, no matter whether it's being written to or
 	not.</para>
 
-      <para>The lockless nature of reading means that if you're
+      <para id="x_32e">The lockless nature of reading means that if you're
 	sharing a repository on a multi-user system, you don't need to
 	grant other local users permission to
 	<emphasis>write</emphasis> to your repository in order for
@@ -650,7 +633,7 @@
 	which of course makes for all kinds of nasty and annoying
 	security and administrative problems.)</para>
 
-      <para>Mercurial uses locks to ensure that only one process can
+      <para id="x_32f">Mercurial uses locks to ensure that only one process can
 	write to a repository at a time (the locking mechanism is safe
 	even over filesystems that are notoriously hostile to locking,
 	such as NFS).  If a repository is locked, a writer will wait
@@ -664,7 +647,7 @@
       <sect3>
 	<title>Safe dirstate access</title>
 
-	<para>As with revision data, Mercurial doesn't take a lock to
+	<para id="x_330">As with revision data, Mercurial doesn't take a lock to
 	  read the dirstate file; it does acquire a lock to write it.
 	  To avoid the possibility of reading a partially written copy
 	  of the dirstate file, Mercurial writes to a file with a
@@ -679,17 +662,17 @@
     <sect2>
       <title>Avoiding seeks</title>
 
-      <para>Critical to Mercurial's performance is the avoidance of
+      <para id="x_331">Critical to Mercurial's performance is the avoidance of
 	seeks of the disk head, since any seek is far more expensive
 	than even a comparatively large read operation.</para>
 
-      <para>This is why, for example, the dirstate is stored in a
+      <para id="x_332">This is why, for example, the dirstate is stored in a
 	single file.  If there were a dirstate file per directory that
 	Mercurial tracked, the disk would seek once per directory.
 	Instead, Mercurial reads the entire single dirstate file in
 	one step.</para>
 
-      <para>Mercurial also uses a <quote>copy on write</quote> scheme
+      <para id="x_333">Mercurial also uses a <quote>copy on write</quote> scheme
 	when cloning a repository on local storage.  Instead of
 	copying every revlog file from the old repository into the new
 	repository, it makes a <quote>hard link</quote>, which is a
@@ -700,7 +683,7 @@
 	one repository is using the file, so Mercurial makes a new
 	copy of the file that is private to this repository.</para>
 
-      <para>A few revision control developers have pointed out that
+      <para id="x_334">A few revision control developers have pointed out that
 	this idea of making a complete private copy of a file is not
 	very efficient in its use of storage.  While this is true,
 	storage is cheap, and this method gives the highest
@@ -714,21 +697,21 @@
     <sect2>
       <title>Other contents of the dirstate</title>
 
-      <para>Because Mercurial doesn't force you to tell it when you're
+      <para id="x_335">Because Mercurial doesn't force you to tell it when you're
 	modifying a file, it uses the dirstate to store some extra
 	information so it can determine efficiently whether you have
 	modified a file.  For each file in the working directory, it
 	stores the time that it last modified the file itself, and the
 	size of the file at that time.</para>
 
-      <para>When you explicitly <command role="hg-cmd">hg
+      <para id="x_336">When you explicitly <command role="hg-cmd">hg
 	  add</command>, <command role="hg-cmd">hg remove</command>,
 	<command role="hg-cmd">hg rename</command> or <command
 	  role="hg-cmd">hg copy</command> files, Mercurial updates the
 	dirstate so that it knows what to do with those files when you
 	commit.</para>
 
-      <para>When Mercurial is checking the states of files in the
+      <para id="x_337">When Mercurial is checking the states of files in the
 	working directory, it first checks a file's modification time.
 	If that has not changed, the file must not have been modified.
 	If the file's size has changed, the file must have been
--- a/en/ch04-daily.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/ch04-daily.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,6 +1,6 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<chapter id="chap.daily">
+<chapter id="chap:daily">
   <?dbhtml filename="mercurial-in-daily-use.html"?>
   <title>Mercurial in daily use</title>
 
@@ -274,7 +274,7 @@
       &interaction.daily.copy.merge;
 
     </sect2>
-    <sect2 id="sec.daily.why-copy">
+    <sect2 id="sec:daily:why-copy">
       <title>Why should changes follow copies?</title>
 
       <para id="x_1c4">This behaviour, of changes to a file propagating out to
@@ -328,7 +328,7 @@
 	Unix-like systems, that's <command>cp</command>) to make a
 	copy of a file, then <command role="hg-cmd">hg add</command>
 	the new copy by hand.  Before you do so, though, please do
-	reread section <xref linkend="sec.daily.why-copy"/>, and make
+	reread <xref linkend="sec:daily:why-copy"/>, and make
 	an informed
 	decision that this behaviour is not appropriate to your
 	specific case.</para>
@@ -529,10 +529,10 @@
       decide it was a mistake, you can still do something about it,
       though your options may be more limited.</para>
 
-    <para id="x_1e5">For more information about the <command role="hg-cmd">hg
-	revert</command> command, and details about how to deal with
-      changes you have already committed, see chapter <xref
-	linkend="chap.undo"/>.</para>
+    <para id="x_1e5">For more information about the <command
+	role="hg-cmd">hg revert</command> command, and details about
+      how to deal with changes you have already committed, see <xref
+	linkend="chap:undo"/>.</para>
 
   </sect1>
 </chapter>
--- a/en/ch05-collab.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/ch05-collab.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,10 +1,10 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<chapter id="cha.collab">
+<chapter id="cha:collab">
   <?dbhtml filename="collaborating-with-other-people.html"?>
   <title>Collaborating with other people</title>
 
-  <para>As a completely decentralised tool, Mercurial doesn't impose
+  <para id="x_44a">As a completely decentralised tool, Mercurial doesn't impose
     any policy on how people ought to work with each other.  However,
     if you're new to distributed revision control, it helps to have
     some tools and examples in mind when you're thinking about
@@ -13,15 +13,15 @@
   <sect1>
     <title>Mercurial's web interface</title>
 
-    <para>Mercurial has a powerful web interface that provides several
+    <para id="x_44b">Mercurial has a powerful web interface that provides several
       useful capabilities.</para>
 
-    <para>For interactive use, the web interface lets you browse a
+    <para id="x_44c">For interactive use, the web interface lets you browse a
       single repository or a collection of repositories.  You can view
       the history of a repository, examine each change (comments and
       diffs), and view the contents of each directory and file.</para>
 
-    <para>Also for human consumption, the web interface provides an
+    <para id="x_44d">Also for human consumption, the web interface provides an
       RSS feed of the changes in a repository.  This lets you
       <quote>subscribe</quote> to a repository using your favourite
       feed reader, and be automatically notified of activity in that
@@ -31,35 +31,35 @@
       configuration on the part of whoever is serving the
       repository.</para>
 
-    <para>The web interface also lets remote users clone a repository,
+    <para id="x_44e">The web interface also lets remote users clone a repository,
       pull changes from it, and (when the server is configured to
       permit it) push changes back to it.  Mercurial's HTTP tunneling
       protocol aggressively compresses data, so that it works
       efficiently even over low-bandwidth network connections.</para>
 
-    <para>The easiest way to get started with the web interface is to
+    <para id="x_44f">The easiest way to get started with the web interface is to
       use your web browser to visit an existing repository, such as
       the master Mercurial repository at <ulink
 	url="http://www.selenic.com/repo/hg?style=gitweb">http://www.selenic.com/repo/hg?style=gitweb</ulink>.</para>
 
-    <para>If you're interested in providing a web interface to your
-      own repositories, Mercurial provides two ways to do this.  The
-      first is using the <command role="hg-cmd">hg serve</command>
-      command, which is best suited to short-term
-      <quote>lightweight</quote> serving.  See section <xref
-	linkend="sec.collab.serve"/> below for details of how to use
+    <para id="x_450">If you're interested in providing a web interface
+      to your own repositories, Mercurial provides two ways to do
+      this.  The first is using the <command role="hg-cmd">hg
+	serve</command> command, which is best suited to short-term
+      <quote>lightweight</quote> serving.  See <xref
+	linkend="sec:collab:serve"/> below for details of how to use
       this command.  If you have a long-lived repository that you'd
       like to make permanently available, Mercurial has built-in
       support for the CGI (Common Gateway Interface) standard, which
-      all common web servers support.  See section <xref
-	linkend="sec.collab.cgi"/> for details of CGI
+      all common web servers support.  See <xref
+	linkend="sec:collab:cgi"/> for details of CGI
       configuration.</para>
 
   </sect1>
   <sect1>
     <title>Collaboration models</title>
 
-    <para>With a suitably flexible tool, making decisions about
+    <para id="x_451">With a suitably flexible tool, making decisions about
       workflow is much more of a social engineering challenge than a
       technical one. Mercurial imposes few limitations on how you can
       structure the flow of work in a project, so it's up to you and
@@ -69,13 +69,13 @@
     <sect2>
       <title>Factors to keep in mind</title>
 
-      <para>The most important aspect of any model that you must keep
+      <para id="x_452">The most important aspect of any model that you must keep
 	in mind is how well it matches the needs and capabilities of
 	the people who will be using it.  This might seem
 	self-evident; even so, you still can't afford to forget it for
 	a moment.</para>
 
-      <para>I once put together a workflow model that seemed to make
+      <para id="x_453">I once put together a workflow model that seemed to make
 	perfect sense to me, but that caused a considerable amount of
 	consternation and strife within my development team.  In spite
 	of my attempts to explain why we needed a complex set of
@@ -85,7 +85,7 @@
 	operating under, or face the consequences of those constraints
 	in the details of the model that I was advocating.</para>
 
-      <para>Don't sweep foreseeable social or technical problems under
+      <para id="x_454">Don't sweep foreseeable social or technical problems under
 	the rug. Whatever scheme you put into effect, you should plan
 	for mistakes and problem scenarios.  Consider adding automated
 	machinery to prevent, or quickly recover from, trouble that
@@ -101,12 +101,12 @@
     <sect2>
       <title>Informal anarchy</title>
 
-      <para>I wouldn't suggest an <quote>anything goes</quote>
+      <para id="x_455">I wouldn't suggest an <quote>anything goes</quote>
 	approach as something sustainable, but it's a model that's
 	easy to grasp, and it works perfectly well in a few unusual
 	situations.</para>
 
-      <para>As one example, many projects have a loose-knit group of
+      <para id="x_456">As one example, many projects have a loose-knit group of
 	collaborators who rarely physically meet each other.  Some
 	groups like to overcome the isolation of working at a distance
 	by organising occasional <quote>sprints</quote>.  In a sprint,
@@ -115,21 +115,21 @@
 	place) and spend several days more or less locked in there,
 	hacking intensely on a handful of projects.</para>
 
-      <para>A sprint is the perfect place to use the <command
-	  role="hg-cmd">hg serve</command> command, since <command
-	  role="hg-cmd">hg serve</command> does not require any fancy
-	server infrastructure.  You can get started with <command
-	  role="hg-cmd">hg serve</command> in moments, by reading
-	section <xref linkend="sec.collab.serve"/> below.  Then simply
-	tell
-	the person next to you that you're running a server, send the
-	URL to them in an instant message, and you immediately have a
-	quick-turnaround way to work together.  They can type your URL
-	into their web browser and quickly review your changes; or
-	they can pull a bugfix from you and verify it; or they can
-	clone a branch containing a new feature and try it out.</para>
+      <para id="x_457">A sprint is the perfect place to use the
+	<command role="hg-cmd">hg serve</command> command, since
+	<command role="hg-cmd">hg serve</command> does not require any
+	fancy server infrastructure.  You can get started with
+	<command role="hg-cmd">hg serve</command> in moments, by
+	reading <xref linkend="sec:collab:serve"/> below.  Then simply
+	tell the person next to you that you're running a server, send
+	the URL to them in an instant message, and you immediately
+	have a quick-turnaround way to work together.  They can type
+	your URL into their web browser and quickly review your
+	changes; or they can pull a bugfix from you and verify it; or
+	they can clone a branch containing a new feature and try it
+	out.</para>
 
-      <para>The charm, and the problem, with doing things in an ad hoc
+      <para id="x_458">The charm, and the problem, with doing things in an ad hoc
 	fashion like this is that only people who know about your
 	changes, and where they are, can see them.  Such an informal
 	approach simply doesn't scale beyond a handful people, because
@@ -140,18 +140,18 @@
     <sect2>
       <title>A single central repository</title>
 
-      <para>For smaller projects migrating from a centralised revision
+      <para id="x_459">For smaller projects migrating from a centralised revision
 	control tool, perhaps the easiest way to get started is to
 	have changes flow through a single shared central repository.
 	This is also the most common <quote>building block</quote> for
 	more ambitious workflow schemes.</para>
 
-      <para>Contributors start by cloning a copy of this repository.
+      <para id="x_45a">Contributors start by cloning a copy of this repository.
 	They can pull changes from it whenever they need to, and some
 	(perhaps all) developers have permission to push a change back
 	when they're ready for other people to see it.</para>
 
-      <para>Under this model, it can still often make sense for people
+      <para id="x_45b">Under this model, it can still often make sense for people
 	to pull changes directly from each other, without going
 	through the central repository.  Consider a case in which I
 	have a tentative bug fix, but I am worried that if I were to
@@ -162,22 +162,21 @@
 	lets us put off publishing the potentially unsafe change until
 	it has had a little testing.</para>
 
-      <para>In this kind of scenario, people usually use the
-	<command>ssh</command> protocol to securely push changes to
-	the central repository, as documented in section <xref
-	  linkend="sec.collab.ssh"/>.  It's also
-	usual to publish a read-only copy of the repository over HTTP
-	using CGI, as in section <xref linkend="sec.collab.cgi"/>.
-	Publishing over HTTP
-	satisfies the needs of people who don't have push access, and
-	those who want to use web browsers to browse the repository's
-	history.</para>
+      <para id="x_45c">In this kind of scenario, people usually use
+	the <command>ssh</command> protocol to securely push changes
+	to the central repository, as documented in <xref
+	  linkend="sec:collab:ssh"/>.  It's also usual to publish a
+	read-only copy of the repository over HTTP using CGI, as in
+	<xref linkend="sec:collab:cgi"/>. Publishing
+	over HTTP satisfies the needs of people who don't have push
+	access, and those who want to use web browsers to browse the
+	repository's history.</para>
 
     </sect2>
     <sect2>
       <title>Working with multiple branches</title>
 
-      <para>Projects of any significant size naturally tend to make
+      <para id="x_45d">Projects of any significant size naturally tend to make
 	progress on several fronts simultaneously.  In the case of
 	software, it's common for a project to go through periodic
 	official releases.  A release might then go into
@@ -190,7 +189,7 @@
 	different directions in which development is
 	proceeding.</para>
 
-      <para>Mercurial is particularly well suited to managing a number
+      <para id="x_45e">Mercurial is particularly well suited to managing a number
 	of simultaneous, but not identical, branches.  Each
 	<quote>development direction</quote> can live in its own
 	central repository, and you can merge changes from one to
@@ -199,27 +198,27 @@
 	branch will never affect a stable branch unless someone
 	explicitly merges those changes in.</para>
 
-      <para>Here's an example of how this can work in practice.  Let's
+      <para id="x_45f">Here's an example of how this can work in practice.  Let's
 	say you have one <quote>main branch</quote> on a central
 	server.</para>
 
       &interaction.branching.init;
 
-      <para>People clone it, make changes locally, test them, and push
+      <para id="x_460">People clone it, make changes locally, test them, and push
 	them back.</para>
 
-      <para>Once the main branch reaches a release milestone, you can
+      <para id="x_461">Once the main branch reaches a release milestone, you can
 	use the <command role="hg-cmd">hg tag</command> command to
 	give a permanent name to the milestone revision.</para>
 
 	&interaction.branching.tag;
 
-      <para>Let's say some ongoing
+      <para id="x_462">Let's say some ongoing
 	development occurs on the main branch.</para>
 
       &interaction.branching.main;
 
-      <para>Using the tag that was recorded at the milestone, people
+      <para id="x_463">Using the tag that was recorded at the milestone, people
 	who clone that repository at any time in the future can use
 	<command role="hg-cmd">hg update</command> to get a copy of
 	the working directory exactly as it was when that tagged
@@ -227,26 +226,26 @@
 
       &interaction.branching.update;
 
-      <para>In addition, immediately after the main branch is tagged,
+      <para id="x_464">In addition, immediately after the main branch is tagged,
 	someone can then clone the main branch on the server to a new
 	<quote>stable</quote> branch, also on the server.</para>
 
       &interaction.branching.clone;
 
-      <para>Someone who needs to make a change to the stable branch
+      <para id="x_465">Someone who needs to make a change to the stable branch
 	can then clone <emphasis>that</emphasis> repository, make
 	their changes, commit, and push their changes back there.</para>
 
       &interaction.branching.stable;
 
-      <para>Because Mercurial repositories are independent, and
+      <para id="x_466">Because Mercurial repositories are independent, and
 	Mercurial doesn't move changes around automatically, the
 	stable and main branches are <emphasis>isolated</emphasis>
 	from each other.  The changes that you made on the main branch
 	don't <quote>leak</quote> to the stable branch, and vice
 	versa.</para>
 
-      <para>You'll often want all of your bugfixes on the stable
+      <para id="x_467">You'll often want all of your bugfixes on the stable
 	branch to show up on the main branch, too.  Rather than
 	rewrite a bugfix on the main branch, you can simply pull and
 	merge changes from the stable to the main branch, and
@@ -254,7 +253,7 @@
 
 	&interaction.branching.merge;
 
-      <para>The main branch will still contain changes that are not on
+      <para id="x_468">The main branch will still contain changes that are not on
 	the stable branch, but it will also contain all of the
 	bugfixes from the stable branch.  The stable branch remains
 	unaffected by these changes.</para>
@@ -263,24 +262,22 @@
     <sect2>
       <title>Feature branches</title>
 
-      <para>For larger projects, an effective way to manage change is
+      <para id="x_469">For larger projects, an effective way to manage change is
 	to break up a team into smaller groups.  Each group has a
 	shared branch of its own, cloned from a single
 	<quote>master</quote> branch used by the entire project.
 	People working on an individual branch are typically quite
 	isolated from developments on other branches.</para>
 
-      <informalfigure id="fig.collab.feature-branches">
-        <mediaobject>
-          <imageobject><imagedata fileref="images/feature-branches.png"/>
-          </imageobject>
-          <textobject><phrase>XXX add text</phrase></textobject>
-          <caption><para id="fig.collab.feature-branches.caption">Feature
-            branches</para></caption>
-        </mediaobject>
-      </informalfigure>
+      <figure id="fig:collab:feature-branches">
+	<title>Feature branches</title>
+	<mediaobject>
+	  <imageobject><imagedata imagedata width="100%" fileref="figs/feature-branches.png"/></imageobject>
+	  <textobject><phrase>XXX add text</phrase></textobject>
+	</mediaobject>
+      </figure>
 
-      <para>When a particular feature is deemed to be in suitable
+      <para id="x_46b">When a particular feature is deemed to be in suitable
 	shape, someone on that feature team pulls and merges from the
 	master branch into the feature branch, then pushes back up to
 	the master branch.</para>
@@ -289,12 +286,12 @@
     <sect2>
       <title>The release train</title>
 
-      <para>Some projects are organised on a <quote>train</quote>
+      <para id="x_46c">Some projects are organised on a <quote>train</quote>
 	basis: a release is scheduled to happen every few months, and
 	whatever features are ready when the <quote>train</quote> is
 	ready to leave are allowed in.</para>
 
-      <para>This model resembles working with feature branches.  The
+      <para id="x_46d">This model resembles working with feature branches.  The
 	difference is that when a feature branch misses a train,
 	someone on the feature team pulls and merges the changes that
 	went out on that train release into the feature branch, and
@@ -305,7 +302,7 @@
     <sect2>
       <title>The Linux kernel model</title>
 
-      <para>The development of the Linux kernel has a shallow
+      <para id="x_46e">The development of the Linux kernel has a shallow
 	hierarchical structure, surrounded by a cloud of apparent
 	chaos.  Because most Linux developers use
 	<command>git</command>, a distributed revision control tool
@@ -313,14 +310,14 @@
 	describe the way work flows in that environment; if you like
 	the ideas, the approach translates well across tools.</para>
 
-      <para>At the center of the community sits Linus Torvalds, the
+      <para id="x_46f">At the center of the community sits Linus Torvalds, the
 	creator of Linux.  He publishes a single source repository
 	that is considered the <quote>authoritative</quote> current
 	tree by the entire developer community. Anyone can clone
 	Linus's tree, but he is very choosy about whose trees he pulls
 	from.</para>
 
-      <para>Linus has a number of <quote>trusted lieutenants</quote>.
+      <para id="x_470">Linus has a number of <quote>trusted lieutenants</quote>.
 	As a general rule, he pulls whatever changes they publish, in
 	most cases without even reviewing those changes.  Some of
 	those lieutenants are generally agreed to be
@@ -332,7 +329,7 @@
 	If the maintainer reviews their changes and agrees to take
 	them, they'll pass them along to Linus in due course.</para>
 
-      <para>Individual lieutenants have their own approaches to
+      <para id="x_471">Individual lieutenants have their own approaches to
 	reviewing, accepting, and publishing changes; and for deciding
 	when to feed them to Linus.  In addition, there are several
 	well known branches that people use for different purposes.
@@ -343,14 +340,14 @@
 	that they are about to feed upstream; and so on.  Others just
 	publish a single tree.</para>
 
-      <para>This model has two notable features.  The first is that
+      <para id="x_472">This model has two notable features.  The first is that
 	it's <quote>pull only</quote>.  You have to ask, convince, or
 	beg another developer to take a change from you, because there
 	are almost no trees to which more than one person can push,
 	and there's no way to push changes into a tree that someone
 	else controls.</para>
 
-      <para>The second is that it's based on reputation and acclaim.
+      <para id="x_473">The second is that it's based on reputation and acclaim.
 	If you're an unknown, Linus will probably ignore changes from
 	you without even responding.  But a subsystem maintainer will
 	probably review them, and will likely take them if they pass
@@ -361,14 +358,14 @@
 	Linus hasn't yet accepted, people with similar interests may
 	pull your changes regularly to keep up with your work.</para>
 
-      <para>Reputation and acclaim don't necessarily cross subsystem
+      <para id="x_474">Reputation and acclaim don't necessarily cross subsystem
 	or <quote>people</quote> boundaries.  If you're a respected
 	but specialised storage hacker, and you try to fix a
 	networking bug, that change will receive a level of scrutiny
 	from a network maintainer comparable to a change from a
 	complete stranger.</para>
 
-      <para>To people who come from more orderly project backgrounds,
+      <para id="x_475">To people who come from more orderly project backgrounds,
 	the comparatively chaotic Linux kernel development process
 	often seems completely insane.  It's subject to the whims of
 	individuals; people make sweeping changes whenever they deem
@@ -380,13 +377,13 @@
     <sect2>
       <title>Pull-only versus shared-push collaboration</title>
 
-      <para>A perpetual source of heat in the open source community is
+      <para id="x_476">A perpetual source of heat in the open source community is
 	whether a development model in which people only ever pull
 	changes from others is <quote>better than</quote> one in which
 	multiple people can push changes to a shared
 	repository.</para>
 
-      <para>Typically, the backers of the shared-push model use tools
+      <para id="x_477">Typically, the backers of the shared-push model use tools
 	that actively enforce this approach.  If you're using a
 	centralised revision control tool such as Subversion, there's
 	no way to make a choice over which model you'll use: the tool
@@ -394,7 +391,7 @@
 	you'll have to roll your own approach on top (such as applying
 	a patch by hand).</para>
 
-      <para>A good distributed revision control tool, such as
+      <para id="x_478">A good distributed revision control tool, such as
 	Mercurial, will support both models.  You and your
 	collaborators can then structure how you work together based
 	on your own needs and preferences, not on what contortions
@@ -404,34 +401,34 @@
     <sect2>
       <title>Where collaboration meets branch management</title>
 
-      <para>Once you and your team set up some shared repositories and
-	start propagating changes back and forth between local and
-	shared repos, you begin to face a related, but slightly
-	different challenge: that of managing the multiple directions
-	in which your team may be moving at once.  Even though this
-	subject is intimately related to how your team collaborates,
-	it's dense enough to merit treatment of its own, in chapter
-	<xref linkend="chap.branch"/>.</para>
+      <para id="x_479">Once you and your team set up some shared
+	repositories and start propagating changes back and forth
+	between local and shared repos, you begin to face a related,
+	but slightly different challenge: that of managing the
+	multiple directions in which your team may be moving at once.
+	Even though this subject is intimately related to how your
+	team collaborates, it's dense enough to merit treatment of its
+	own, in <xref linkend="chap:branch"/>.</para>
 
     </sect2>
   </sect1>
   <sect1>
     <title>The technical side of sharing</title>
 
-    <para>The remainder of this chapter is devoted to the question of
+    <para id="x_47a">The remainder of this chapter is devoted to the question of
       serving data to your collaborators.</para>
 
   </sect1>
-  <sect1 id="sec.collab.serve">
+  <sect1 id="sec:collab:serve">
     <title>Informal sharing with <command role="hg-cmd">hg
 	serve</command></title>
 
-    <para>Mercurial's <command role="hg-cmd">hg serve</command>
+    <para id="x_47b">Mercurial's <command role="hg-cmd">hg serve</command>
       command is wonderfully suited to small, tight-knit, and
       fast-paced group environments.  It also provides a great way to
       get a feel for using Mercurial commands over a network.</para>
 
-    <para>Run <command role="hg-cmd">hg serve</command> inside a
+    <para id="x_47c">Run <command role="hg-cmd">hg serve</command> inside a
       repository, and in under a second it will bring up a specialised
       HTTP server; this will accept connections from any client, and
       serve up data for that repository until you terminate it.
@@ -442,24 +439,24 @@
       on a laptop is likely to look something like
       <literal>http://my-laptop.local:8000/</literal>.</para>
 
-    <para>The <command role="hg-cmd">hg serve</command> command is
+    <para id="x_47d">The <command role="hg-cmd">hg serve</command> command is
       <emphasis>not</emphasis> a general-purpose web server. It can do
       only two things:</para>
     <itemizedlist>
-      <listitem><para>Allow people to browse the history of the
+      <listitem><para id="x_47e">Allow people to browse the history of the
 	  repository it's serving, from their normal web
 	  browsers.</para>
       </listitem>
-      <listitem><para>Speak Mercurial's wire protocol, so that people
+      <listitem><para id="x_47f">Speak Mercurial's wire protocol, so that people
 	  can <command role="hg-cmd">hg clone</command> or <command
 	    role="hg-cmd">hg pull</command> changes from that
 	  repository.</para>
       </listitem></itemizedlist>
-    <para>In particular, <command role="hg-cmd">hg serve</command>
+    <para id="x_480">In particular, <command role="hg-cmd">hg serve</command>
       won't allow remote users to <emphasis>modify</emphasis> your
       repository.  It's intended for read-only use.</para>
 
-    <para>If you're getting started with Mercurial, there's nothing to
+    <para id="x_481">If you're getting started with Mercurial, there's nothing to
       prevent you from using <command role="hg-cmd">hg serve</command>
       to serve up a repository on your own computer, then use commands
       like <command role="hg-cmd">hg clone</command>, <command
@@ -471,13 +468,13 @@
     <sect2>
       <title>A few things to keep in mind</title>
 
-      <para>Because it provides unauthenticated read access to all
+      <para id="x_482">Because it provides unauthenticated read access to all
 	clients, you should only use <command role="hg-cmd">hg
 	  serve</command> in an environment where you either don't
 	care, or have complete control over, who can access your
 	network and pull data from your repository.</para>
 
-      <para>The <command role="hg-cmd">hg serve</command> command
+      <para id="x_483">The <command role="hg-cmd">hg serve</command> command
 	knows nothing about any firewall software you might have
 	installed on your system or network.  It cannot detect or
 	control your firewall software.  If other people are unable to
@@ -486,13 +483,13 @@
 	(<emphasis>after</emphasis> you make sure that they're using
 	the correct URL) is check your firewall configuration.</para>
 
-      <para>By default, <command role="hg-cmd">hg serve</command>
+      <para id="x_484">By default, <command role="hg-cmd">hg serve</command>
 	listens for incoming connections on port 8000.  If another
 	process is already listening on the port you want to use, you
 	can specify a different port to listen on using the <option
 	  role="hg-opt-serve">-p</option> option.</para>
 
-      <para>Normally, when <command role="hg-cmd">hg serve</command>
+      <para id="x_485">Normally, when <command role="hg-cmd">hg serve</command>
 	starts, it prints no output, which can be a bit unnerving.  If
 	you'd like to confirm that it is indeed running correctly, and
 	find out what URL you should send to your collaborators, start
@@ -501,59 +498,59 @@
 
     </sect2>
   </sect1>
-  <sect1 id="sec.collab.ssh">
+  <sect1 id="sec:collab:ssh">
     <title>Using the Secure Shell (ssh) protocol</title>
 
-    <para>You can pull and push changes securely over a network
+    <para id="x_486">You can pull and push changes securely over a network
       connection using the Secure Shell (<literal>ssh</literal>)
       protocol.  To use this successfully, you may have to do a little
       bit of configuration on the client or server sides.</para>
 
-    <para>If you're not familiar with ssh, it's a network protocol
+    <para id="x_487">If you're not familiar with ssh, it's a network protocol
       that lets you securely communicate with another computer.  To
       use it with Mercurial, you'll be setting up one or more user
       accounts on a server so that remote users can log in and execute
       commands.</para>
 
-    <para>(If you <emphasis>are</emphasis> familiar with ssh, you'll
+    <para id="x_488">(If you <emphasis>are</emphasis> familiar with ssh, you'll
       probably find some of the material that follows to be elementary
       in nature.)</para>
 
     <sect2>
       <title>How to read and write ssh URLs</title>
 
-      <para>An ssh URL tends to look like this:</para>
+      <para id="x_489">An ssh URL tends to look like this:</para>
       <programlisting>ssh://bos@hg.serpentine.com:22/hg/hgbook</programlisting>
       <orderedlist>
-	<listitem><para>The <quote><literal>ssh://</literal></quote>
+	<listitem><para id="x_48a">The <quote><literal>ssh://</literal></quote>
 	    part tells Mercurial to use the ssh protocol.</para>
 	</listitem>
-	<listitem><para>The <quote><literal>bos@</literal></quote>
+	<listitem><para id="x_48b">The <quote><literal>bos@</literal></quote>
 	    component indicates what username to log into the server
 	    as.  You can leave this out if the remote username is the
 	    same as your local username.</para>
 	</listitem>
-	<listitem><para>The
+	<listitem><para id="x_48c">The
 	    <quote><literal>hg.serpentine.com</literal></quote> gives
 	    the hostname of the server to log into.</para>
 	</listitem>
-	<listitem><para>The <quote>:22</quote> identifies the port
+	<listitem><para id="x_48d">The <quote>:22</quote> identifies the port
 	    number to connect to the server on.  The default port is
 	    22, so you only need to specify a colon and port number if
 	    you're <emphasis>not</emphasis> using port 22.</para>
 	</listitem>
-	<listitem><para>The remainder of the URL is the local path to
+	<listitem><para id="x_48e">The remainder of the URL is the local path to
 	    the repository on the server.</para>
 	</listitem></orderedlist>
 
-      <para>There's plenty of scope for confusion with the path
+      <para id="x_48f">There's plenty of scope for confusion with the path
 	component of ssh URLs, as there is no standard way for tools
 	to interpret it.  Some programs behave differently than others
 	when dealing with these paths. This isn't an ideal situation,
 	but it's unlikely to change.  Please read the following
 	paragraphs carefully.</para>
 
-      <para>Mercurial treats the path to a repository on the server as
+      <para id="x_490">Mercurial treats the path to a repository on the server as
 	relative to the remote user's home directory.  For example, if
 	user <literal>foo</literal> on the server has a home directory
 	of <filename class="directory">/home/foo</filename>, then an
@@ -562,13 +559,13 @@
 	refers to the directory <filename
 	  class="directory">/home/foo/bar</filename>.</para>
 
-      <para>If you want to specify a path relative to another user's
+      <para id="x_491">If you want to specify a path relative to another user's
 	home directory, you can use a path that starts with a tilde
 	character followed by the user's name (let's call them
 	<literal>otheruser</literal>), like this.</para>
       <programlisting>ssh://server/~otheruser/hg/repo</programlisting>
 
-      <para>And if you really want to specify an
+      <para id="x_492">And if you really want to specify an
 	<emphasis>absolute</emphasis> path on the server, begin the
 	path component with two slashes, as in this example.</para>
       <programlisting>ssh://server//absolute/path</programlisting>
@@ -577,7 +574,7 @@
     <sect2>
       <title>Finding an ssh client for your system</title>
 
-      <para>Almost every Unix-like system comes with OpenSSH
+      <para id="x_493">Almost every Unix-like system comes with OpenSSH
 	preinstalled.  If you're using such a system, run
 	<literal>which ssh</literal> to find out if the
 	<command>ssh</command> command is installed (it's usually in
@@ -585,17 +582,17 @@
 	unlikely event that it isn't present, take a look at your
 	system documentation to figure out how to install it.</para>
 
-      <para>On Windows, you'll first need to download a suitable ssh
+      <para id="x_494">On Windows, you'll first need to download a suitable ssh
 	client.  There are two alternatives.</para>
       <itemizedlist>
-	<listitem><para>Simon Tatham's excellent PuTTY package
+	<listitem><para id="x_495">Simon Tatham's excellent PuTTY package
 	    <citation>web:putty</citation> provides a complete suite
 	    of ssh client commands.</para>
 	</listitem>
-	<listitem><para>If you have a high tolerance for pain, you can
+	<listitem><para id="x_496">If you have a high tolerance for pain, you can
 	    use the Cygwin port of OpenSSH.</para>
 	</listitem></itemizedlist>
-      <para>In either case, you'll need to edit your <filename
+      <para id="x_497">In either case, you'll need to edit your <filename
       role="special">hg.ini</filename> file to
 	tell Mercurial where to find the actual client command.  For
 	example, if you're using PuTTY, you'll need to use the
@@ -605,7 +602,7 @@
 ssh = C:/path/to/plink.exe -ssh -i "C:/path/to/my/private/key"</programlisting>
 
       <note>
-	<para>  The path to <command>plink</command> shouldn't contain
+	<para id="x_498">  The path to <command>plink</command> shouldn't contain
 	  any whitespace characters, or Mercurial may not be able to
 	  run it correctly (so putting it in <filename
 	    class="directory">C:\Program Files</filename> is probably
@@ -616,7 +613,7 @@
     <sect2>
       <title>Generating a key pair</title>
 
-      <para>To avoid the need to repetitively type a password every
+      <para id="x_499">To avoid the need to repetitively type a password every
 	time you need to use your ssh client, I recommend generating a
 	key pair.  On a Unix-like system, the
 	<command>ssh-keygen</command> command will do the trick. On
@@ -624,13 +621,13 @@
 	<command>puttygen</command> command is what you'll
 	need.</para>
 
-      <para>When you generate a key pair, it's usually
+      <para id="x_49a">When you generate a key pair, it's usually
 	<emphasis>highly</emphasis> advisable to protect it with a
 	passphrase.  (The only time that you might not want to do this
 	is when you're using the ssh protocol for automated tasks on a
 	secure network.)</para>
 
-      <para>Simply generating a key pair isn't enough, however.
+      <para id="x_49b">Simply generating a key pair isn't enough, however.
 	You'll need to add the public key to the set of authorised
 	keys for whatever user you're logging in remotely as.  For
 	servers using OpenSSH (the vast majority), this will mean
@@ -639,7 +636,7 @@
 	  role="special" class="directory">.ssh</filename>
 	directory.</para>
 
-      <para>On a Unix-like system, your public key will have a
+      <para id="x_49c">On a Unix-like system, your public key will have a
 	<filename>.pub</filename> extension.  If you're using
 	<command>puttygen</command> on Windows, you can save the
 	public key to a file of your choosing, or paste it from the
@@ -650,7 +647,7 @@
     <sect2>
       <title>Using an authentication agent</title>
 
-      <para>An authentication agent is a daemon that stores
+      <para id="x_49d">An authentication agent is a daemon that stores
 	passphrases in memory (so it will forget passphrases if you
 	log out and log back in again). An ssh client will notice if
 	it's running, and query it for a passphrase.  If there's no
@@ -659,14 +656,14 @@
 	every time Mercurial tries to communicate with a server on
 	your behalf (e.g. whenever you pull or push changes).</para>
 
-      <para>The downside of storing passphrases in an agent is that
+      <para id="x_49e">The downside of storing passphrases in an agent is that
 	it's possible for a well-prepared attacker to recover the
 	plain text of your passphrases, in some cases even if your
 	system has been power-cycled. You should make your own
 	judgment as to whether this is an acceptable risk.  It
 	certainly saves a lot of repeated typing.</para>
 
-      <para>On Unix-like systems, the agent is called
+      <para id="x_49f">On Unix-like systems, the agent is called
 	<command>ssh-agent</command>, and it's often run automatically
 	for you when you log in.  You'll need to use the
 	<command>ssh-add</command> command to add passphrases to the
@@ -679,7 +676,7 @@
     <sect2>
       <title>Configuring the server side properly</title>
 
-      <para>Because ssh can be fiddly to set up if you're new to it,
+      <para id="x_4a0">Because ssh can be fiddly to set up if you're new to it,
 	there's a variety of things that can go wrong.  Add Mercurial
 	on top, and there's plenty more scope for head-scratching.
 	Most of these potential problems occur on the server side, not
@@ -687,7 +684,7 @@
 	configuration working, it will usually continue to work
 	indefinitely.</para>
 
-      <para>Before you try using Mercurial to talk to an ssh server,
+      <para id="x_4a1">Before you try using Mercurial to talk to an ssh server,
 	it's best to make sure that you can use the normal
 	<command>ssh</command> or <command>putty</command> command to
 	talk to the server first.  If you run into problems with using
@@ -698,29 +695,29 @@
 	<emphasis>before</emphasis> you worry about whether there's a
 	problem with Mercurial.</para>
 
-      <para>The first thing to be sure of on the server side is that
+      <para id="x_4a2">The first thing to be sure of on the server side is that
 	you can actually log in from another machine at all.  If you
 	can't use <command>ssh</command> or <command>putty</command>
 	to log in, the error message you get may give you a few hints
 	as to what's wrong.  The most common problems are as
 	follows.</para>
       <itemizedlist>
-	<listitem><para>If you get a <quote>connection refused</quote>
+	<listitem><para id="x_4a3">If you get a <quote>connection refused</quote>
 	    error, either there isn't an SSH daemon running on the
 	    server at all, or it's inaccessible due to firewall
 	    configuration.</para>
 	</listitem>
-	<listitem><para>If you get a <quote>no route to host</quote>
+	<listitem><para id="x_4a4">If you get a <quote>no route to host</quote>
 	    error, you either have an incorrect address for the server
 	    or a seriously locked down firewall that won't admit its
 	    existence at all.</para>
 	</listitem>
-	<listitem><para>If you get a <quote>permission denied</quote>
+	<listitem><para id="x_4a5">If you get a <quote>permission denied</quote>
 	    error, you may have mistyped the username on the server,
 	    or you could have mistyped your key's passphrase or the
 	    remote user's password.</para>
 	</listitem></itemizedlist>
-      <para>In summary, if you're having trouble talking to the
+      <para id="x_4a6">In summary, if you're having trouble talking to the
 	server's ssh daemon, first make sure that one is running at
 	all.  On many systems it will be installed, but disabled, by
 	default.  Once you're done with this step, you should then
@@ -730,23 +727,23 @@
 	for misconfiguration until you've checked these two
 	first.</para>
 
-      <para>If you're using an authentication agent on the client side
+      <para id="x_4a7">If you're using an authentication agent on the client side
 	to store passphrases for your keys, you ought to be able to
 	log into the server without being prompted for a passphrase or
 	a password.  If you're prompted for a passphrase, there are a
 	few possible culprits.</para>
       <itemizedlist>
-	<listitem><para>You might have forgotten to use
+	<listitem><para id="x_4a8">You might have forgotten to use
 	    <command>ssh-add</command> or <command>pageant</command>
 	    to store the passphrase.</para>
 	</listitem>
-	<listitem><para>You might have stored the passphrase for the
+	<listitem><para id="x_4a9">You might have stored the passphrase for the
 	    wrong key.</para>
 	</listitem></itemizedlist>
-      <para>If you're being prompted for the remote user's password,
+      <para id="x_4aa">If you're being prompted for the remote user's password,
 	there are another few possible problems to check.</para>
       <itemizedlist>
-	<listitem><para>Either the user's home directory or their
+	<listitem><para id="x_4ab">Either the user's home directory or their
 	    <filename role="special" class="directory">.ssh</filename>
 	    directory might have excessively liberal permissions.  As
 	    a result, the ssh daemon will not trust or read their
@@ -755,19 +752,19 @@
 	      role="special" class="directory">.ssh</filename>
 	    directory will often cause this symptom.</para>
 	</listitem>
-	<listitem><para>The user's <filename
+	<listitem><para id="x_4ac">The user's <filename
 	      role="special">authorized_keys</filename> file may have
 	    a problem. If anyone other than the user owns or can write
 	    to that file, the ssh daemon will not trust or read
 	    it.</para>
 	</listitem></itemizedlist>
 
-      <para>In the ideal world, you should be able to run the
+      <para id="x_4ad">In the ideal world, you should be able to run the
 	following command successfully, and it should print exactly
 	one line of output, the current date and time.</para>
       <programlisting>ssh myserver date</programlisting>
 
-      <para>If, on your server, you have login scripts that print
+      <para id="x_4ae">If, on your server, you have login scripts that print
 	banners or other junk even when running non-interactive
 	commands like this, you should fix them before you continue,
 	so that they only print output if they're run interactively.
@@ -781,43 +778,43 @@
 	shell is to check the return code from the command
 	<literal>tty -s</literal>.)</para>
 
-      <para>Once you've verified that plain old ssh is working with
+      <para id="x_4af">Once you've verified that plain old ssh is working with
 	your server, the next step is to ensure that Mercurial runs on
 	the server.  The following command should run
 	successfully:</para>
 
       <programlisting>ssh myserver hg version</programlisting>
 
-      <para>If you see an error message instead of normal <command
+      <para id="x_4b0">If you see an error message instead of normal <command
 	  role="hg-cmd">hg version</command> output, this is usually
 	because you haven't installed Mercurial to <filename
 	  class="directory">/usr/bin</filename>.  Don't worry if this
 	is the case; you don't need to do that.  But you should check
 	for a few possible problems.</para>
       <itemizedlist>
-	<listitem><para>Is Mercurial really installed on the server at
+	<listitem><para id="x_4b1">Is Mercurial really installed on the server at
 	    all?  I know this sounds trivial, but it's worth
 	    checking!</para>
 	</listitem>
-	<listitem><para>Maybe your shell's search path (usually set
+	<listitem><para id="x_4b2">Maybe your shell's search path (usually set
 	    via the <envar>PATH</envar> environment variable) is
 	    simply misconfigured.</para>
 	</listitem>
-	<listitem><para>Perhaps your <envar>PATH</envar> environment
+	<listitem><para id="x_4b3">Perhaps your <envar>PATH</envar> environment
 	    variable is only being set to point to the location of the
 	    <command>hg</command> executable if the login session is
 	    interactive.  This can happen if you're setting the path
 	    in the wrong shell login script.  See your shell's
 	    documentation for details.</para>
 	</listitem>
-	<listitem><para>The <envar>PYTHONPATH</envar> environment
+	<listitem><para id="x_4b4">The <envar>PYTHONPATH</envar> environment
 	    variable may need to contain the path to the Mercurial
 	    Python modules.  It might not be set at all; it could be
 	    incorrect; or it may be set only if the login is
 	    interactive.</para>
 	</listitem></itemizedlist>
 
-      <para>If you can run <command role="hg-cmd">hg version</command>
+      <para id="x_4b5">If you can run <command role="hg-cmd">hg version</command>
 	over an ssh connection, well done! You've got the server and
 	client sorted out.  You should now be able to use Mercurial to
 	access repositories hosted by that username on that server.
@@ -829,19 +826,19 @@
     <sect2>
       <title>Using compression with ssh</title>
 
-      <para>Mercurial does not compress data when it uses the ssh
+      <para id="x_4b6">Mercurial does not compress data when it uses the ssh
 	protocol, because the ssh protocol can transparently compress
 	data.  However, the default behaviour of ssh clients is
 	<emphasis>not</emphasis> to request compression.</para>
 
-      <para>Over any network other than a fast LAN (even a wireless
+      <para id="x_4b7">Over any network other than a fast LAN (even a wireless
 	network), using compression is likely to significantly speed
 	up Mercurial's network operations.  For example, over a WAN,
 	someone measured compression as reducing the amount of time
 	required to clone a particularly large repository from 51
 	minutes to 17 minutes.</para>
 
-      <para>Both <command>ssh</command> and <command>plink</command>
+      <para id="x_4b8">Both <command>ssh</command> and <command>plink</command>
 	accept a <option role="cmd-opt-ssh">-C</option> option which
 	turns on compression.  You can easily edit your <filename
 	  role="special">~/.hgrc</filename> to enable compression for
@@ -849,7 +846,7 @@
       <programlisting>[ui]
 ssh = ssh -C</programlisting>
 
-      <para>If you use <command>ssh</command>, you can configure it to
+      <para id="x_4b9">If you use <command>ssh</command>, you can configure it to
 	always use compression when talking to your server.  To do
 	this, edit your <filename
 	  role="special">.ssh/config</filename> file (which may not
@@ -857,7 +854,7 @@
       <programlisting>Host hg
   Compression yes
   HostName hg.example.com</programlisting>
-      <para>This defines an alias, <literal>hg</literal>.  When you
+      <para id="x_4ba">This defines an alias, <literal>hg</literal>.  When you
 	use it on the <command>ssh</command> command line or in a
 	Mercurial <literal>ssh</literal>-protocol URL, it will cause
 	<command>ssh</command> to connect to
@@ -867,20 +864,20 @@
 
     </sect2>
   </sect1>
-  <sect1 id="sec.collab.cgi">
+  <sect1 id="sec:collab:cgi">
     <title>Serving over HTTP using CGI</title>
 
-    <para>Depending on how ambitious you are, configuring Mercurial's
+    <para id="x_4bb">Depending on how ambitious you are, configuring Mercurial's
       CGI interface can take anything from a few moments to several
       hours.</para>
 
-    <para>We'll begin with the simplest of examples, and work our way
+    <para id="x_4bc">We'll begin with the simplest of examples, and work our way
       towards a more complex configuration.  Even for the most basic
       case, you're almost certainly going to need to read and modify
       your web server's configuration.</para>
 
     <note>
-      <para>  Configuring a web server is a complex, fiddly, and
+      <para id="x_4bd">  Configuring a web server is a complex, fiddly, and
 	highly system-dependent activity.  I can't possibly give you
 	instructions that will cover anything like all of the cases
 	you will encounter. Please use your discretion and judgment in
@@ -892,25 +889,25 @@
     <sect2>
       <title>Web server configuration checklist</title>
 
-      <para>Before you continue, do take a few moments to check a few
+      <para id="x_4be">Before you continue, do take a few moments to check a few
 	aspects of your system's setup.</para>
 
       <orderedlist>
-	<listitem><para>Do you have a web server installed at all?
+	<listitem><para id="x_4bf">Do you have a web server installed at all?
 	    Mac OS X ships with Apache, but many other systems may not
 	    have a web server installed.</para>
 	</listitem>
-	<listitem><para>If you have a web server installed, is it
+	<listitem><para id="x_4c0">If you have a web server installed, is it
 	    actually running?  On most systems, even if one is
 	    present, it will be disabled by default.</para>
 	</listitem>
-	<listitem><para>Is your server configured to allow you to run
+	<listitem><para id="x_4c1">Is your server configured to allow you to run
 	    CGI programs in the directory where you plan to do so?
 	    Most servers default to explicitly disabling the ability
 	    to run CGI programs.</para>
 	</listitem></orderedlist>
 
-      <para>If you don't have a web server installed, and don't have
+      <para id="x_4c2">If you don't have a web server installed, and don't have
 	substantial experience configuring Apache, you should consider
 	using the <literal>lighttpd</literal> web server instead of
 	Apache.  Apache has a well-deserved reputation for baroque and
@@ -925,7 +922,7 @@
     <sect2>
       <title>Basic CGI configuration</title>
 
-      <para>On Unix-like systems, it's common for users to have a
+      <para id="x_4c3">On Unix-like systems, it's common for users to have a
 	subdirectory named something like <filename
 	  class="directory">public_html</filename> in their home
 	directory, from which they can serve up web pages.  A file
@@ -933,19 +930,19 @@
 	accessible at a URL of the form
 	<literal>http://www.example.com/username/foo</literal>.</para>
 
-      <para>To get started, find the <filename
+      <para id="x_4c4">To get started, find the <filename
 	  role="special">hgweb.cgi</filename> script that should be
 	present in your Mercurial installation.  If you can't quickly
 	find a local copy on your system, simply download one from the
 	master Mercurial repository at <ulink
 	  url="http://www.selenic.com/repo/hg/raw-file/tip/hgweb.cgi">http://www.selenic.com/repo/hg/raw-file/tip/hgweb.cgi</ulink>.</para>
 
-      <para>You'll need to copy this script into your <filename
+      <para id="x_4c5">You'll need to copy this script into your <filename
 	  class="directory">public_html</filename> directory, and
 	ensure that it's executable.</para>
       <programlisting>cp .../hgweb.cgi ~/public_html
 chmod 755 ~/public_html/hgweb.cgi</programlisting>
-      <para>The <literal>755</literal> argument to
+      <para id="x_4c6">The <literal>755</literal> argument to
 	<command>chmod</command> is a little more general than just
 	making the script executable: it ensures that the script is
 	executable by anyone, and that <quote>group</quote> and
@@ -958,11 +955,11 @@
 	must not be writable by others.</para>
       <programlisting>chmod 755 ~/public_html</programlisting>
 
-      <sect3 id="sec.collab.wtf">
+      <sect3 id="sec:collab:wtf">
 	<title>What could <emphasis>possibly</emphasis> go
 	  wrong?</title>
 
-	<para>Once you've copied the CGI script into place, go into a
+	<para id="x_4c7">Once you've copied the CGI script into place, go into a
 	  web browser, and try to open the URL <ulink
 	    url="http://myhostname/
 	    myuser/hgweb.cgi">http://myhostname/
@@ -976,7 +973,7 @@
 	  fresh installation of Apache, and a user account that I
 	  created specially to perform this exercise.</para>
 
-	<para>Your web server may have per-user directories disabled.
+	<para id="x_4c8">Your web server may have per-user directories disabled.
 	  If you're using Apache, search your config file for a
 	  <literal>UserDir</literal> directive.  If there's none
 	  present, per-user directories will be disabled.  If one
@@ -987,7 +984,7 @@
 	  directory, for example <filename
 	    class="directory">public_html</filename>.</para>
 
-	<para>Your file access permissions may be too restrictive.
+	<para id="x_4c9">Your file access permissions may be too restrictive.
 	  The web server must be able to traverse your home directory
 	  and directories under your <filename
 	    class="directory">public_html</filename> directory, and
@@ -997,34 +994,34 @@
 find ~/public_html -type d -print0 | xargs -0r chmod 755
 find ~/public_html -type f -print0 | xargs -0r chmod 644</programlisting>
 
-	<para>The other possibility with permissions is that you might
+	<para id="x_4ca">The other possibility with permissions is that you might
 	  get a completely empty window when you try to load the
 	  script.  In this case, it's likely that your access
 	  permissions are <emphasis>too permissive</emphasis>.  Apache's
 	  <literal>suexec</literal> subsystem won't execute a script
 	  that's group- or world-writable, for example.</para>
 
-	<para>Your web server may be configured to disallow execution
+	<para id="x_4cb">Your web server may be configured to disallow execution
 	  of CGI programs in your per-user web directory.  Here's
 	  Apache's default per-user configuration from my Fedora
 	  system.</para>
 
-	<programlisting><![CDATA[&ch06-apache-config.lst;]]></programlisting>
+	&ch06-apache-config.lst;
 
-	<para>If you find a similar-looking
+	<para id="x_4cc">If you find a similar-looking
 	  <literal>Directory</literal> group in your Apache
 	  configuration, the directive to look at inside it is
 	  <literal>Options</literal>. Add <literal>ExecCGI</literal>
 	  to the end of this list if it's missing, and restart the web
 	  server.</para>
 
-	<para>If you find that Apache serves you the text of the CGI
+	<para id="x_4cd">If you find that Apache serves you the text of the CGI
 	  script instead of executing it, you may need to either
 	  uncomment (if already present) or add a directive like
 	  this.</para>
 	<programlisting>AddHandler cgi-script .cgi</programlisting>
 
-	<para>The next possibility is that you might be served with a
+	<para id="x_4ce">The next possibility is that you might be served with a
 	  colourful Python backtrace claiming that it can't import a
 	  <literal>mercurial</literal>-related module.  This is
 	  actually progress!  The server is now capable of executing
@@ -1038,7 +1035,7 @@
 	  directions inside it to correctly set your
 	  <envar>PYTHONPATH</envar> environment variable.</para>
 
-	<para>Finally, you are <emphasis>certain</emphasis> to by
+	<para id="x_4cf">Finally, you are <emphasis>certain</emphasis> to by
 	  served with another colourful Python backtrace: this one
 	  will complain that it can't find <filename
 	    class="directory">/path/to/repository</filename>.  Edit
@@ -1048,7 +1045,7 @@
 	  with the complete path to the repository you want to serve
 	  up.</para>
 
-	<para>At this point, when you try to reload the page, you
+	<para id="x_4d0">At this point, when you try to reload the page, you
 	  should be presented with a nice HTML view of your
 	  repository's history.  Whew!</para>
 
@@ -1056,7 +1053,7 @@
       <sect3>
 	<title>Configuring lighttpd</title>
 
-	<para>To be exhaustive in my experiments, I tried configuring
+	<para id="x_4d1">To be exhaustive in my experiments, I tried configuring
 	  the increasingly popular <literal>lighttpd</literal> web
 	  server to serve the same repository as I described with
 	  Apache above.  I had already overcome all of the problems I
@@ -1066,7 +1063,7 @@
 	    role="special">hgweb.cgi</filename> script was properly
 	  edited.</para>
 
-	<para>Once I had Apache running, getting
+	<para id="x_4d2">Once I had Apache running, getting
 	  <literal>lighttpd</literal> to serve the repository was a
 	  snap (in other words, even if you're trying to use
 	  <literal>lighttpd</literal>, you should read the Apache
@@ -1078,7 +1075,7 @@
 	  end of the config file, to configure these modules.</para>
 	<programlisting>userdir.path = "public_html"
 cgi.assign = (".cgi" =&gt; "" )</programlisting>
-	<para>With this done, <literal>lighttpd</literal> ran
+	<para id="x_4d3">With this done, <literal>lighttpd</literal> ran
 	  immediately for me.  If I had configured
 	  <literal>lighttpd</literal> before Apache, I'd almost
 	  certainly have run into many of the same system-level
@@ -1093,7 +1090,7 @@
     <sect2>
       <title>Sharing multiple repositories with one CGI script</title>
 
-      <para>The <filename role="special">hgweb.cgi</filename> script
+      <para id="x_4d4">The <filename role="special">hgweb.cgi</filename> script
 	only lets you publish a single repository, which is an
 	annoying restriction.  If you want to publish more than one
 	without wracking yourself with multiple copies of the same
@@ -1101,7 +1098,7 @@
 	the <filename role="special">hgwebdir.cgi</filename>
 	script.</para>
 
-      <para>The procedure to configure <filename
+      <para id="x_4d5">The procedure to configure <filename
 	  role="special">hgwebdir.cgi</filename> is only a little more
 	involved than for <filename
 	  role="special">hgweb.cgi</filename>.  First, you must obtain
@@ -1109,21 +1106,23 @@
 	download a copy from the master Mercurial repository at <ulink
 	  url="http://www.selenic.com/repo/hg/raw-file/tip/hgwebdir.cgi">http://www.selenic.com/repo/hg/raw-file/tip/hgwebdir.cgi</ulink>.</para>
 
-      <para>You'll need to copy this script into your <filename
+      <para id="x_4d6">You'll need to copy this script into your <filename
 	  class="directory">public_html</filename> directory, and
 	ensure that it's executable.</para>
+
       <programlisting>cp .../hgwebdir.cgi ~/public_html
 chmod 755 ~/public_html ~/public_html/hgwebdir.cgi</programlisting>
-      <para>With basic configuration out of the way, try to visit
-	<ulink url="http://myhostname/
+
+      <para id="x_4d7">With basic configuration out of the way, try to
+	visit <ulink url="http://myhostname/
 	  myuser/hgwebdir.cgi">http://myhostname/
 	  myuser/hgwebdir.cgi</ulink> in your browser.  It should
 	display an empty list of repositories.  If you get a blank
 	window or error message, try walking through the list of
-	potential problems in section <xref
-	  linkend="sec.collab.wtf"/>.</para>
+	potential problems in <xref
+	  linkend="sec:collab:wtf"/>.</para>
 
-      <para>The <filename role="special">hgwebdir.cgi</filename>
+      <para id="x_4d8">The <filename role="special">hgwebdir.cgi</filename>
 	script relies on an external configuration file.  By default,
 	it searches for a file named <filename
 	  role="special">hgweb.config</filename> in the same directory
@@ -1133,7 +1132,7 @@
 	<literal>ConfigParser</literal>
 	<citation>web:configparser</citation> module.</para>
 
-      <para>The easiest way to configure <filename
+      <para id="x_4d9">The easiest way to configure <filename
 	  role="special">hgwebdir.cgi</filename> is with a section
 	named <literal>collections</literal>.  This will automatically
 	publish <emphasis>every</emphasis> repository under the
@@ -1141,7 +1140,7 @@
 	this:</para>
       <programlisting>[collections]
 /my/root = /my/root</programlisting>
-      <para>Mercurial interprets this by looking at the directory name
+      <para id="x_4da">Mercurial interprets this by looking at the directory name
 	on the <emphasis>right</emphasis> hand side of the
 	<quote><literal>=</literal></quote> sign; finding repositories
 	in that directory hierarchy; and using the text on the
@@ -1150,7 +1149,7 @@
 	remaining component of a path after this stripping has
 	occurred is called a <quote>virtual path</quote>.</para>
 
-      <para>Given the example above, if we have a repository whose
+      <para id="x_4db">Given the example above, if we have a repository whose
 	local path is <filename
 	  class="directory">/my/root/this/repo</filename>, the CGI
 	script will strip the leading <filename
@@ -1164,7 +1163,7 @@
 	  myuser/hgwebdir.cgi/this/repo">http://myhostname/
 	  myuser/hgwebdir.cgi/this/repo</ulink>.</para>
 
-      <para>If we replace <filename
+      <para id="x_4dc">If we replace <filename
 	  class="directory">/my/root</filename> on the left hand side
 	of this example with <filename
 	  class="directory">/my</filename>, then <filename
@@ -1174,13 +1173,13 @@
 	  class="directory">root/this/repo</filename> instead of
 	<filename class="directory">this/repo</filename>.</para>
 
-      <para>The <filename role="special">hgwebdir.cgi</filename>
+      <para id="x_4dd">The <filename role="special">hgwebdir.cgi</filename>
 	script will recursively search each directory listed in the
 	<literal>collections</literal> section of its configuration
 	file, but it will <literal>not</literal> recurse into the
 	repositories it finds.</para>
 
-      <para>The <literal>collections</literal> mechanism makes it easy
+      <para id="x_4de">The <literal>collections</literal> mechanism makes it easy
 	to publish many repositories in a <quote>fire and
 	  forget</quote> manner.  You only need to set up the CGI
 	script and configuration file one time.  Afterwards, you can
@@ -1193,7 +1192,7 @@
 	<title>Explicitly specifying which repositories to
 	  publish</title>
 
-	<para>In addition to the <literal>collections</literal>
+	<para id="x_4df">In addition to the <literal>collections</literal>
 	  mechanism, the <filename
 	    role="special">hgwebdir.cgi</filename> script allows you
 	  to publish a specific list of repositories.  To do so,
@@ -1202,20 +1201,20 @@
 	<programlisting>[paths]
 repo1 = /my/path/to/some/repo
 repo2 = /some/path/to/another</programlisting>
-	<para>In this case, the virtual path (the component that will
+	<para id="x_4e0">In this case, the virtual path (the component that will
 	  appear in a URL) is on the left hand side of each
 	  definition, while the path to the repository is on the
 	  right.  Notice that there does not need to be any
 	  relationship between the virtual path you choose and the
 	  location of a repository in your filesystem.</para>
 
-	<para>If you wish, you can use both the
+	<para id="x_4e1">If you wish, you can use both the
 	  <literal>collections</literal> and <literal>paths</literal>
 	  mechanisms simultaneously in a single configuration
 	  file.</para>
 
 	<note>
-	  <para>  If multiple repositories have the same virtual path,
+	  <para id="x_4e2">  If multiple repositories have the same virtual path,
 	    <filename role="special">hgwebdir.cgi</filename> will not
 	    report an error.  Instead, it will behave
 	    unpredictably.</para>
@@ -1226,12 +1225,12 @@
     <sect2>
       <title>Downloading source archives</title>
 
-      <para>Mercurial's web interface lets users download an archive
+      <para id="x_4e3">Mercurial's web interface lets users download an archive
 	of any revision.  This archive will contain a snapshot of the
 	working directory as of that revision, but it will not contain
 	a copy of the repository data.</para>
 
-      <para>By default, this feature is not enabled.  To enable it,
+      <para id="x_4e4">By default, this feature is not enabled.  To enable it,
 	you'll need to add an <envar
 	  role="rc-item-web">allow_archive</envar> item to the
 	<literal role="rc-web">web</literal> section of your <filename
@@ -1241,7 +1240,7 @@
     <sect2>
       <title>Web configuration options</title>
 
-      <para>Mercurial's web interfaces (the <command role="hg-cmd">hg
+      <para id="x_4e5">Mercurial's web interfaces (the <command role="hg-cmd">hg
 	  serve</command> command, and the <filename
 	  role="special">hgweb.cgi</filename> and <filename
 	  role="special">hgwebdir.cgi</filename> scripts) have a
@@ -1249,7 +1248,7 @@
 	belong in a section named <literal
 	  role="rc-web">web</literal>.</para>
       <itemizedlist>
-	<listitem><para><envar
+	<listitem><para id="x_4e6"><envar
 	      role="rc-item-web">allow_archive</envar>: Determines
 	    which (if any) archive download mechanisms Mercurial
 	    supports.  If you enable this feature, users of the web
@@ -1258,30 +1257,30 @@
 	    archive feature, this item must take the form of a
 	    sequence of words drawn from the list below.</para>
 	  <itemizedlist>
-	    <listitem><para><literal>bz2</literal>: A
+	    <listitem><para id="x_4e7"><literal>bz2</literal>: A
 		<command>tar</command> archive, compressed using
 		<literal>bzip2</literal> compression.  This has the
 		best compression ratio, but uses the most CPU time on
 		the server.</para>
 	    </listitem>
-	    <listitem><para><literal>gz</literal>: A
+	    <listitem><para id="x_4e8"><literal>gz</literal>: A
 		<command>tar</command> archive, compressed using
 		<literal>gzip</literal> compression.</para>
 	    </listitem>
-	    <listitem><para><literal>zip</literal>: A
+	    <listitem><para id="x_4e9"><literal>zip</literal>: A
 		<command>zip</command> archive, compressed using LZW
 		compression.  This format has the worst compression
 		ratio, but is widely used in the Windows world.</para>
 	    </listitem>
 	  </itemizedlist>
-	  <para>  If you provide an empty list, or don't have an
+	  <para id="x_4ea">  If you provide an empty list, or don't have an
 	    <envar role="rc-item-web">allow_archive</envar> entry at
 	    all, this feature will be disabled.  Here is an example of
 	    how to enable all three supported formats.</para>
 	  <programlisting>[web]
 allow_archive = bz2 gz zip</programlisting>
 	</listitem>
-	<listitem><para><envar role="rc-item-web">allowpull</envar>:
+	<listitem><para id="x_4eb"><envar role="rc-item-web">allowpull</envar>:
 	    Boolean.  Determines whether the web interface allows
 	    remote users to <command role="hg-cmd">hg pull</command>
 	    and <command role="hg-cmd">hg clone</command> this
@@ -1290,7 +1289,7 @@
 	    <quote>human-oriented</quote> portion of the web interface
 	    is available.</para>
 	</listitem>
-	<listitem><para><envar role="rc-item-web">contact</envar>:
+	<listitem><para id="x_4ec"><envar role="rc-item-web">contact</envar>:
 	    String.  A free-form (but preferably brief) string
 	    identifying the person or group in charge of the
 	    repository.  This often contains the name and email
@@ -1301,38 +1300,39 @@
 	      role="special">~/.hgrc</filename> if every repository
 	    has a single maintainer.</para>
 	</listitem>
-	<listitem><para><envar role="rc-item-web">maxchanges</envar>:
+	<listitem><para id="x_4ed"><envar role="rc-item-web">maxchanges</envar>:
 	    Integer.  The default maximum number of changesets to
 	    display in a single page of output.</para>
 	</listitem>
-	<listitem><para><envar role="rc-item-web">maxfiles</envar>:
+	<listitem><para id="x_4ee"><envar role="rc-item-web">maxfiles</envar>:
 	    Integer.  The default maximum number of modified files to
 	    display in a single page of output.</para>
 	</listitem>
-	<listitem><para><envar role="rc-item-web">stripes</envar>:
+	<listitem><para id="x_4ef"><envar role="rc-item-web">stripes</envar>:
 	    Integer.  If the web interface displays alternating
 	    <quote>stripes</quote> to make it easier to visually align
 	    rows when you are looking at a table, this number controls
 	    the number of rows in each stripe.</para>
 	</listitem>
-	<listitem><para><envar role="rc-item-web">style</envar>:
-	    Controls the template Mercurial uses to display the web
-	    interface.  Mercurial ships with two web templates, named
+	<listitem><para id="x_4f0"><envar
+	      role="rc-item-web">style</envar>: Controls the template
+	    Mercurial uses to display the web interface.  Mercurial
+	    ships with two web templates, named
 	    <literal>default</literal> and <literal>gitweb</literal>
 	    (the latter is much more visually attractive).  You can
-	    also specify a custom template of your own; see chapter
-	    <xref linkend="chap.template"/> for details.
-	    Here, you can see how to enable the
-	    <literal>gitweb</literal> style.</para>
+	    also specify a custom template of your own; see 
+	    <xref linkend="chap:template"/> for details. Here, you can
+	    see how to enable the <literal>gitweb</literal>
+	    style.</para>
 	  <programlisting>[web]
 style = gitweb</programlisting>
 	</listitem>
-	<listitem><para><envar role="rc-item-web">templates</envar>:
+	<listitem><para id="x_4f1"><envar role="rc-item-web">templates</envar>:
 	    Path.  The directory in which to search for template
 	    files.  By default, Mercurial searches in the directory in
 	    which it was installed.</para>
 	</listitem></itemizedlist>
-      <para>If you are using <filename
+      <para id="x_4f2">If you are using <filename
 	  role="special">hgwebdir.cgi</filename>, you can place a few
 	configuration items in a <literal role="rc-web">web</literal>
 	section of the <filename
@@ -1345,17 +1345,17 @@
       <sect3>
 	<title>Options specific to an individual repository</title>
 
-	<para>A few <literal role="rc-web">web</literal> configuration
+	<para id="x_4f3">A few <literal role="rc-web">web</literal> configuration
 	  items ought to be placed in a repository's local <filename
 	    role="special">.hg/hgrc</filename>, rather than a user's
 	  or global <filename role="special">~/.hgrc</filename>.</para>
 	<itemizedlist>
-	  <listitem><para><envar
+	  <listitem><para id="x_4f4"><envar
 		role="rc-item-web">description</envar>: String.  A
 	      free-form (but preferably brief) string that describes
 	      the contents or purpose of the repository.</para>
 	  </listitem>
-	  <listitem><para><envar role="rc-item-web">name</envar>:
+	  <listitem><para id="x_4f5"><envar role="rc-item-web">name</envar>:
 	      String.  The name to use for the repository in the web
 	      interface.  This overrides the default name, which is
 	      the last component of the repository's path.</para>
@@ -1366,13 +1366,13 @@
 	<title>Options specific to the <command role="hg-cmd">hg
 	    serve</command> command</title>
 
-	<para>Some of the items in the <literal
+	<para id="x_4f6">Some of the items in the <literal
 	    role="rc-web">web</literal> section of a <filename
 	    role="special">~/.hgrc</filename> file are only for use
 	  with the <command role="hg-cmd">hg serve</command>
 	  command.</para>
 	<itemizedlist>
-	  <listitem><para><envar role="rc-item-web">accesslog</envar>:
+	  <listitem><para id="x_4f7"><envar role="rc-item-web">accesslog</envar>:
 	      Path.  The name of a file into which to write an access
 	      log.  By default, the <command role="hg-cmd">hg
 		serve</command> command writes this information to
@@ -1380,22 +1380,22 @@
 	      in the standard <quote>combined</quote> file format used
 	      by almost all web servers.</para>
 	  </listitem>
-	  <listitem><para><envar role="rc-item-web">address</envar>:
+	  <listitem><para id="x_4f8"><envar role="rc-item-web">address</envar>:
 	      String.  The local address on which the server should
 	      listen for incoming connections.  By default, the server
 	      listens on all addresses.</para>
 	  </listitem>
-	  <listitem><para><envar role="rc-item-web">errorlog</envar>:
+	  <listitem><para id="x_4f9"><envar role="rc-item-web">errorlog</envar>:
 	      Path.  The name of a file into which to write an error
 	      log.  By default, the <command role="hg-cmd">hg
 		serve</command> command writes this information to
 	      standard error, not to a file.</para>
 	  </listitem>
-	  <listitem><para><envar role="rc-item-web">ipv6</envar>:
+	  <listitem><para id="x_4fa"><envar role="rc-item-web">ipv6</envar>:
 	      Boolean.  Whether to use the IPv6 protocol. By default,
 	      IPv6 is not used.</para>
 	  </listitem>
-	  <listitem><para><envar role="rc-item-web">port</envar>:
+	  <listitem><para id="x_4fb"><envar role="rc-item-web">port</envar>:
 	      Integer.  The TCP port number on which the server should
 	      listen.  The default port number used is 8000.</para>
 	  </listitem></itemizedlist>
@@ -1406,14 +1406,14 @@
 	    role="special">~/.hgrc</filename> file to add <literal
 	    role="rc-web">web</literal> items to</title>
 
-	<para>It is important to remember that a web server like
+	<para id="x_4fc">It is important to remember that a web server like
 	  Apache or <literal>lighttpd</literal> will run under a user
 	  ID that is different to yours. CGI scripts run by your
 	  server, such as <filename
 	    role="special">hgweb.cgi</filename>, will usually also run
 	  under that user ID.</para>
 
-	<para>If you add <literal role="rc-web">web</literal> items to
+	<para id="x_4fd">If you add <literal role="rc-web">web</literal> items to
 	  your own personal <filename role="special">~/.hgrc</filename> file, CGI scripts won't read that
 	  <filename role="special">~/.hgrc</filename> file.  Those
 	  settings will thus only affect the behaviour of the <command
--- a/en/ch06-filenames.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/ch06-filenames.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,6 +1,6 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<chapter id="chap.names">
+<chapter id="chap:names">
   <?dbhtml filename="file-names-and-pattern-matching.html"?>
   <title>File names and pattern matching</title>
 
@@ -274,7 +274,7 @@
     <para id="x_569">XXX.</para>
 
   </sect1>
-  <sect1 id="sec.names.case">
+  <sect1 id="sec:names:case">
     <title>Case sensitivity</title>
 
     <para id="x_56a">If you're working in a mixed development environment that
--- a/en/ch07-branch.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/ch07-branch.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,6 +1,6 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<chapter id="chap.branch">
+<chapter id="chap:branch">
   <?dbhtml filename="managing-releases-and-branchy-development.html"?>
   <title>Managing releases and branchy development</title>
 
--- a/en/ch08-undo.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/ch08-undo.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,10 +1,10 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<chapter id="chap.undo">
+<chapter id="chap:undo">
   <?dbhtml filename="finding-and-fixing-mistakes.html"?>
   <title>Finding and fixing mistakes</title>
 
-  <para>To err might be human, but to really handle the consequences
+  <para id="x_d2">To err might be human, but to really handle the consequences
     well takes a top-notch revision control system.  In this chapter,
     we'll discuss some of the techniques you can use when you find
     that a problem has crept into your project.  Mercurial has some
@@ -17,7 +17,7 @@
     <sect2>
       <title>The accidental commit</title>
 
-      <para>I have the occasional but persistent problem of typing
+      <para id="x_d3">I have the occasional but persistent problem of typing
 	rather more quickly than I can think, which sometimes results
 	in me committing a changeset that is either incomplete or
 	plain wrong.  In my case, the usual kind of incomplete
@@ -27,33 +27,33 @@
 	less annoying.</para>
 
     </sect2>
-    <sect2 id="sec.undo.rollback">
+    <sect2 id="sec:undo:rollback">
       <title>Rolling back a transaction</title>
 
-      <para>In section <xref linkend="sec.concepts.txn"/>, I mentioned
-	that Mercurial treats each modification of a repository as a
-	<emphasis>transaction</emphasis>.  Every time you commit a
-	changeset or pull changes from another repository, Mercurial
-	remembers what you did.  You can undo, or <emphasis>roll
-	  back</emphasis>, exactly one of these actions using the
-	<command role="hg-cmd">hg rollback</command> command.  (See
-	section <xref linkend="sec.undo.rollback-after-push"/> for an
-	important caveat about the use of this command.)</para>
+      <para id="x_d4">In <xref linkend="sec:concepts:txn"/>, I
+	mentioned that Mercurial treats each modification of a
+	repository as a <emphasis>transaction</emphasis>.  Every time
+	you commit a changeset or pull changes from another
+	repository, Mercurial remembers what you did.  You can undo,
+	or <emphasis>roll back</emphasis>, exactly one of these
+	actions using the <command role="hg-cmd">hg rollback</command>
+	command.  (See <xref linkend="sec:undo:rollback-after-push"/>
+	for an important caveat about the use of this command.)</para>
 
-      <para>Here's a mistake that I often find myself making:
+      <para id="x_d5">Here's a mistake that I often find myself making:
 	committing a change in which I've created a new file, but
 	forgotten to <command role="hg-cmd">hg add</command>
 	it.</para>
 
       &interaction.rollback.commit;
 
-      <para>Looking at the output of <command role="hg-cmd">hg
+      <para id="x_d6">Looking at the output of <command role="hg-cmd">hg
 	  status</command> after the commit immediately confirms the
 	error.</para>
 
       &interaction.rollback.status;
 
-      <para>The commit captured the changes to the file
+      <para id="x_d7">The commit captured the changes to the file
 	<filename>a</filename>, but not the new file
 	<filename>b</filename>.  If I were to push this changeset to a
 	repository that I shared with a colleague, the chances are
@@ -62,14 +62,14 @@
 	repository when they pulled my changes.  I would thus become
 	the object of some indignation.</para>
 
-      <para>However, luck is with me&emdash;I've caught my error
+      <para id="x_d8">However, luck is with me&emdash;I've caught my error
 	before I pushed the changeset.  I use the <command
 	  role="hg-cmd">hg rollback</command> command, and Mercurial
 	makes that last changeset vanish.</para>
 
       &interaction.rollback.rollback;
 
-      <para>Notice that the changeset is no longer present in the
+      <para id="x_d9">Notice that the changeset is no longer present in the
 	repository's history, and the working directory once again
 	thinks that the file <filename>a</filename> is modified.  The
 	commit and rollback have left the working directory exactly as
@@ -84,14 +84,14 @@
     <sect2>
       <title>The erroneous pull</title>
 
-      <para>It's common practice with Mercurial to maintain separate
+      <para id="x_da">It's common practice with Mercurial to maintain separate
 	development branches of a project in different repositories.
 	Your development team might have one shared repository for
 	your project's <quote>0.9</quote> release, and another,
 	containing different changes, for the <quote>1.0</quote>
 	release.</para>
 
-      <para>Given this, you can imagine that the consequences could be
+      <para id="x_db">Given this, you can imagine that the consequences could be
 	messy if you had a local <quote>0.9</quote> repository, and
 	accidentally pulled changes from the shared <quote>1.0</quote>
 	repository into it.  At worst, you could be paying
@@ -103,7 +103,7 @@
 	see it pull a suspiciously large number of changes into the
 	repository.</para>
 
-      <para>The <command role="hg-cmd">hg rollback</command> command
+      <para id="x_dc">The <command role="hg-cmd">hg rollback</command> command
 	will work nicely to expunge all of the changesets that you
 	just pulled.  Mercurial groups all changes from one <command
 	  role="hg-cmd">hg pull</command> into a single transaction,
@@ -111,10 +111,10 @@
 	need to undo this mistake.</para>
 
     </sect2>
-    <sect2 id="sec.undo.rollback-after-push">
+    <sect2 id="sec:undo:rollback-after-push">
       <title>Rolling back is useless once you've pushed</title>
 
-      <para>The value of the <command role="hg-cmd">hg
+      <para id="x_dd">The value of the <command role="hg-cmd">hg
 	  rollback</command> command drops to zero once you've pushed
 	your changes to another repository.  Rolling back a change
 	makes it disappear entirely, but <emphasis>only</emphasis> in
@@ -123,7 +123,7 @@
 	eliminates history, there's no way for the disappearance of a
 	change to propagate between repositories.</para>
 
-      <para>If you've pushed a change to another
+      <para id="x_de">If you've pushed a change to another
 	repository&emdash;particularly if it's a shared
 	repository&emdash;it has essentially <quote>escaped into the
 	  wild,</quote> and you'll have to recover from your mistake
@@ -132,7 +132,7 @@
 	you pushed to, is that the changeset will reappear in your
 	repository.</para>
 
-      <para>(If you absolutely know for sure that the change you want
+      <para id="x_df">(If you absolutely know for sure that the change you want
 	to roll back is the most recent change in the repository that
 	you pushed to, <emphasis>and</emphasis> you know that nobody
 	else could have pulled it from that repository, you can roll
@@ -146,7 +146,7 @@
     <sect2>
       <title>You can only roll back once</title>
 
-      <para>Mercurial stores exactly one transaction in its
+      <para id="x_e0">Mercurial stores exactly one transaction in its
 	transaction log; that transaction is the most recent one that
 	occurred in the repository. This means that you can only roll
 	back one transaction.  If you expect to be able to roll back
@@ -155,7 +155,7 @@
 
       &interaction.rollback.twice;
 
-      <para>Once you've rolled back one transaction in a repository,
+      <para id="x_e1">Once you've rolled back one transaction in a repository,
 	you can't roll back again in that repository until you perform
 	another commit or pull.</para>
 
@@ -164,7 +164,7 @@
   <sect1>
     <title>Reverting the mistaken change</title>
 
-    <para>If you make a modification to a file, and decide that you
+    <para id="x_e2">If you make a modification to a file, and decide that you
       really didn't want to change the file at all, and you haven't
       yet committed your changes, the <command role="hg-cmd">hg
 	revert</command> command is the one you'll need.  It looks at
@@ -173,57 +173,57 @@
       changeset. (That's a long-winded way of saying that, in the
       normal case, it undoes your modifications.)</para>
 
-    <para>Let's illustrate how the <command role="hg-cmd">hg
+    <para id="x_e3">Let's illustrate how the <command role="hg-cmd">hg
 	revert</command> command works with yet another small example.
       We'll begin by modifying a file that Mercurial is already
       tracking.</para>
 
     &interaction.daily.revert.modify;
 
-    <para>If we don't
+    <para id="x_e4">If we don't
       want that change, we can simply <command role="hg-cmd">hg
 	revert</command> the file.</para>
 
       &interaction.daily.revert.unmodify;
 
-    <para>The <command role="hg-cmd">hg revert</command> command
+    <para id="x_e5">The <command role="hg-cmd">hg revert</command> command
       provides us with an extra degree of safety by saving our
       modified file with a <filename>.orig</filename>
       extension.</para>
 
     &interaction.daily.revert.status;
 
-    <para>Here is a summary of the cases that the <command
+    <para id="x_e6">Here is a summary of the cases that the <command
 	role="hg-cmd">hg revert</command> command can deal with.  We
       will describe each of these in more detail in the section that
       follows.</para>
     <itemizedlist>
-      <listitem><para>If you modify a file, it will restore the file
+      <listitem><para id="x_e7">If you modify a file, it will restore the file
 	  to its unmodified state.</para>
       </listitem>
-      <listitem><para>If you <command role="hg-cmd">hg add</command> a
+      <listitem><para id="x_e8">If you <command role="hg-cmd">hg add</command> a
 	  file, it will undo the <quote>added</quote> state of the
 	  file, but leave the file itself untouched.</para>
       </listitem>
-      <listitem><para>If you delete a file without telling Mercurial,
+      <listitem><para id="x_e9">If you delete a file without telling Mercurial,
 	  it will restore the file to its unmodified contents.</para>
       </listitem>
-      <listitem><para>If you use the <command role="hg-cmd">hg
+      <listitem><para id="x_ea">If you use the <command role="hg-cmd">hg
 	    remove</command> command to remove a file, it will undo
 	  the <quote>removed</quote> state of the file, and restore
 	  the file to its unmodified contents.</para>
       </listitem></itemizedlist>
 
-    <sect2 id="sec.undo.mgmt">
+    <sect2 id="sec:undo:mgmt">
       <title>File management errors</title>
 
-      <para>The <command role="hg-cmd">hg revert</command> command is
+      <para id="x_eb">The <command role="hg-cmd">hg revert</command> command is
 	useful for more than just modified files.  It lets you reverse
 	the results of all of Mercurial's file management
 	commands&emdash;<command role="hg-cmd">hg add</command>,
 	<command role="hg-cmd">hg remove</command>, and so on.</para>
 
-      <para>If you <command role="hg-cmd">hg add</command> a file,
+      <para id="x_ec">If you <command role="hg-cmd">hg add</command> a file,
 	then decide that in fact you don't want Mercurial to track it,
 	use <command role="hg-cmd">hg revert</command> to undo the
 	add.  Don't worry; Mercurial will not modify the file in any
@@ -231,7 +231,7 @@
 
       &interaction.daily.revert.add;
 
-      <para>Similarly, if you ask Mercurial to <command
+      <para id="x_ed">Similarly, if you ask Mercurial to <command
 	  role="hg-cmd">hg remove</command> a file, you can use
 	<command role="hg-cmd">hg revert</command> to restore it to
 	the contents it had as of the parent of the working directory.
@@ -242,7 +242,7 @@
 
       &interaction.daily.revert.missing;
 
-      <para>If you revert a <command role="hg-cmd">hg copy</command>,
+      <para id="x_ee">If you revert a <command role="hg-cmd">hg copy</command>,
 	the copied-to file remains in your working directory
 	afterwards, untracked.  Since a copy doesn't affect the
 	copied-from file in any way, Mercurial doesn't do anything
@@ -253,7 +253,7 @@
       <sect3>
 	<title>A slightly special case: reverting a rename</title>
 
-	<para>If you <command role="hg-cmd">hg rename</command> a
+	<para id="x_ef">If you <command role="hg-cmd">hg rename</command> a
 	  file, there is one small detail that you should remember.
 	  When you <command role="hg-cmd">hg revert</command> a
 	  rename, it's not enough to provide the name of the
@@ -261,7 +261,7 @@
 
 	&interaction.daily.revert.rename;
 
-	<para>As you can see from the output of <command
+	<para id="x_f0">As you can see from the output of <command
 	    role="hg-cmd">hg status</command>, the renamed-to file is
 	  no longer identified as added, but the
 	  renamed-<emphasis>from</emphasis> file is still removed!
@@ -270,22 +270,22 @@
 
 	&interaction.daily.revert.rename-orig;
 
-	<para>So remember, to revert a <command role="hg-cmd">hg
+	<para id="x_f1">So remember, to revert a <command role="hg-cmd">hg
 	    rename</command>, you must provide
 	  <emphasis>both</emphasis> the source and destination
 	  names.</para>
 
-	<para>% TODO: the output doesn't look like it will be
+	<para id="x_f2">% TODO: the output doesn't look like it will be
 	  removed!</para>
 
-	<para>(By the way, if you rename a file, then modify the
+	<para id="x_f3">(By the way, if you rename a file, then modify the
 	  renamed-to file, then revert both components of the rename,
 	  when Mercurial restores the file that was removed as part of
 	  the rename, it will be unmodified. If you need the
 	  modifications in the renamed-to file to show up in the
 	  renamed-from file, don't forget to copy them over.)</para>
 
-	<para>These fiddly aspects of reverting a rename arguably
+	<para id="x_f4">These fiddly aspects of reverting a rename arguably
 	  constitute a small bug in Mercurial.</para>
 
       </sect3>
@@ -294,24 +294,24 @@
   <sect1>
     <title>Dealing with committed changes</title>
 
-    <para>Consider a case where you have committed a change $a$, and
+    <para id="x_f5">Consider a case where you have committed a change $a$, and
       another change $b$ on top of it; you then realise that change
       $a$ was incorrect.  Mercurial lets you <quote>back out</quote>
       an entire changeset automatically, and building blocks that let
       you reverse part of a changeset by hand.</para>
 
-    <para>Before you read this section, here's something to keep in
-      mind: the <command role="hg-cmd">hg backout</command> command
-      undoes changes by <emphasis>adding</emphasis> history, not by
-      modifying or erasing it.  It's the right tool to use if you're
-      fixing bugs, but not if you're trying to undo some change that
-      has catastrophic consequences.  To deal with those, see section
-      <xref linkend="sec.undo.aaaiiieee"/>.</para>
+    <para id="x_f6">Before you read this section, here's something to
+      keep in mind: the <command role="hg-cmd">hg backout</command>
+      command undoes changes by <emphasis>adding</emphasis> history,
+      not by modifying or erasing it.  It's the right tool to use if
+      you're fixing bugs, but not if you're trying to undo some change
+      that has catastrophic consequences.  To deal with those, see
+      <xref linkend="sec:undo:aaaiiieee"/>.</para>
 
     <sect2>
       <title>Backing out a changeset</title>
 
-      <para>The <command role="hg-cmd">hg backout</command> command
+      <para id="x_f7">The <command role="hg-cmd">hg backout</command> command
 	lets you <quote>undo</quote> the effects of an entire
 	changeset in an automated fashion.  Because Mercurial's
 	history is immutable, this command <emphasis>does
@@ -320,14 +320,14 @@
 	<emphasis>reverses</emphasis> the effect of the to-be-undone
 	changeset.</para>
 
-      <para>The operation of the <command role="hg-cmd">hg
+      <para id="x_f8">The operation of the <command role="hg-cmd">hg
 	  backout</command> command is a little intricate, so let's
 	illustrate it with some examples.  First, we'll create a
 	repository with some simple changes.</para>
 
       &interaction.backout.init;
 
-      <para>The <command role="hg-cmd">hg backout</command> command
+      <para id="x_f9">The <command role="hg-cmd">hg backout</command> command
 	takes a single changeset ID as its argument; this is the
 	changeset to back out.  Normally, <command role="hg-cmd">hg
 	  backout</command> will drop you into a text editor to write
@@ -340,12 +340,12 @@
     <sect2>
       <title>Backing out the tip changeset</title>
 
-      <para>We're going to start by backing out the last changeset we
+      <para id="x_fa">We're going to start by backing out the last changeset we
 	committed.</para>
 
       &interaction.backout.simple;
 
-      <para>You can see that the second line from
+      <para id="x_fb">You can see that the second line from
 	<filename>myfile</filename> is no longer present.  Taking a
 	look at the output of <command role="hg-cmd">hg log</command>
 	gives us an idea of what the <command role="hg-cmd">hg
@@ -353,51 +353,45 @@
 	&interaction.backout.simple.log; Notice that the new changeset
 	that <command role="hg-cmd">hg backout</command> has created
 	is a child of the changeset we backed out.  It's easier to see
-	this in figure <xref
-	  endterm="fig.undo.backout.caption" linkend="fig.undo.backout"/>,
-	which presents a graphical
-	view of the change history.  As you can see, the history is
-	nice and linear.</para>
+	this in <xref linkend="fig:undo:backout"/>, which presents a
+	graphical view of the change history.  As you can see, the
+	history is nice and linear.</para>
 
-      <informalfigure id="fig.undo.backout">
-        <mediaobject>
-          <imageobject><imagedata fileref="images/undo-simple.png"/>
-          </imageobject>
-          <textobject><phrase>XXX add text</phrase></textobject>
-          <caption><para id="fig.undo.backout.caption">Backing out
-            a change using the 
-            <command role="hg-cmd">hg backout</command>
-            command</para></caption>
-      </mediaobject>
-      </informalfigure>
+      <figure id="fig:undo:backout">
+	<title>Backing out a change using the <command
+	    role="hg-cmd">hg backout</command> command</title>
+	<mediaobject>
+	  <imageobject><imagedata fileref="figs/undo-simple.png"/></imageobject>
+	  <textobject><phrase>XXX add text</phrase></textobject>
+	</mediaobject>
+      </figure>
 
     </sect2>
     <sect2>
       <title>Backing out a non-tip change</title>
 
-      <para>If you want to back out a change other than the last one
+      <para id="x_fd">If you want to back out a change other than the last one
 	you committed, pass the <option
 	  role="hg-opt-backout">--merge</option> option to the
 	<command role="hg-cmd">hg backout</command> command.</para>
 
       &interaction.backout.non-tip.clone;
 
-      <para>This makes backing out any changeset a
+      <para id="x_fe">This makes backing out any changeset a
 	<quote>one-shot</quote> operation that's usually simple and
 	fast.</para>
 
       &interaction.backout.non-tip.backout;
 
-      <para>If you take a look at the contents of
+      <para id="x_ff">If you take a look at the contents of
 	<filename>myfile</filename> after the backout finishes, you'll
 	see that the first and third changes are present, but not the
 	second.</para>
 
       &interaction.backout.non-tip.cat;
 
-      <para>As the graphical history in figure <xref
-	  endterm="fig.undo.backout-non-tip.caption"
-	  linkend="fig.undo.backout-non-tip"/> illustrates, Mercurial
+      <para id="x_100">As the graphical history in <xref
+	  linkend="fig:undo:backout-non-tip"/> illustrates, Mercurial
 	actually commits <emphasis>two</emphasis> changes in this kind
 	of situation (the box-shaped nodes are the ones that Mercurial
 	commits automatically).  Before Mercurial begins the backout
@@ -407,21 +401,19 @@
 	the previous parent of the working directory, and commits the
 	result of the merge.</para>
 
-      <para>% TODO: to me it looks like mercurial doesn't commit the
+      <para id="x_101">% TODO: to me it looks like mercurial doesn't commit the
 	second merge automatically!</para>
 
-      <informalfigure id="fig.undo.backout-non-tip">
-        <mediaobject>
-          <imageobject><imagedata fileref="images/undo-non-tip.png"/>
-          </imageobject>
-          <textobject><phrase>XXX add text</phrase></textobject>
-          <caption><para id="fig.undo.backout-non-tip.caption">Automated
-            backout of a non-tip change using the
-            <command role="hg-cmd">hg backout</command> command</para></caption>
-        </mediaobject>
-      </informalfigure>
+      <figure id="fig:undo:backout-non-tip">
+	<title>Automated backout of a non-tip change using the
+	  <command role="hg-cmd">hg backout</command> command</title>
+	<mediaobject>
+	  <imageobject><imagedata fileref="figs/undo-non-tip.png"/></imageobject>
+	  <textobject><phrase>XXX add text</phrase></textobject>
+	</mediaobject>
+      </figure>
 
-      <para>The result is that you end up <quote>back where you
+      <para id="x_103">The result is that you end up <quote>back where you
 	  were</quote>, only with some extra history that undoes the
 	effect of the changeset you wanted to back out.</para>
 
@@ -429,7 +421,7 @@
 	<title>Always use the <option
 	    role="hg-opt-backout">--merge</option> option</title>
 
-	<para>In fact, since the <option
+	<para id="x_104">In fact, since the <option
 	    role="hg-opt-backout">--merge</option> option will do the
 	  <quote>right thing</quote> whether or not the changeset
 	  you're backing out is the tip (i.e. it won't try to merge if
@@ -442,7 +434,7 @@
     <sect2>
       <title>Gaining more control of the backout process</title>
 
-      <para>While I've recommended that you always use the <option
+      <para id="x_105">While I've recommended that you always use the <option
 	  role="hg-opt-backout">--merge</option> option when backing
 	out a change, the <command role="hg-cmd">hg backout</command>
 	command lets you decide how to merge a backout changeset.
@@ -455,13 +447,13 @@
 
       &interaction.backout.manual.clone;
 
-      <para>As with our
+      <para id="x_106">As with our
 	earlier example, We'll commit a third changeset, then back out
 	its parent, and see what happens.</para>
 
       &interaction.backout.manual.backout;
 
-      <para>Our new changeset is again a descendant of the changeset
+      <para id="x_107">Our new changeset is again a descendant of the changeset
 	we backout out; it's thus a new head, <emphasis>not</emphasis>
 	a descendant of the changeset that was the tip.  The <command
 	  role="hg-cmd">hg backout</command> command was quite
@@ -469,38 +461,35 @@
 
       &interaction.backout.manual.log;
 
-      <para>Again, it's easier to see what has happened by looking at
-	a graph of the revision history, in figure <xref
-	  endterm="fig.undo.backout-manual.caption"
-	  linkend="fig.undo.backout-manual"/>.  This makes it clear
+      <para id="x_108">Again, it's easier to see what has happened by looking at
+	a graph of the revision history, in <xref
+	  linkend="fig:undo:backout-manual"/>.  This makes it clear
 	that when we use <command role="hg-cmd">hg backout</command>
 	to back out a change other than the tip, Mercurial adds a new
 	head to the repository (the change it committed is
 	box-shaped).</para>
 
-      <informalfigure id="fig.undo.backout-manual">
-        <mediaobject>
-          <imageobject><imagedata fileref="images/undo-manual.png"/>
-          </imageobject>
-          <textobject><phrase>XXX add text</phrase></textobject>
-          <caption><para id="fig.undo.backout-manual.caption">Backing out a
-            change using the <command role="hg-cmd">hg backout</command>
-            command</para></caption>
-        </mediaobject>
-      </informalfigure>
+      <figure id="fig:undo:backout-manual">
+	<title>Backing out a change using the <command
+	    role="hg-cmd">hg backout</command> command</title>
+	<mediaobject>
+	  <imageobject><imagedata fileref="figs/undo-manual.png"/></imageobject>
+	  <textobject><phrase>XXX add text</phrase></textobject>
+	</mediaobject>
+      </figure>
 
-      <para>After the <command role="hg-cmd">hg backout</command>
+      <para id="x_10a">After the <command role="hg-cmd">hg backout</command>
 	command has completed, it leaves the new
 	<quote>backout</quote> changeset as the parent of the working
 	directory.</para>
 
       &interaction.backout.manual.parents;
 
-      <para>Now we have two isolated sets of changes.</para>
+      <para id="x_10b">Now we have two isolated sets of changes.</para>
 
       &interaction.backout.manual.heads;
 
-      <para>Let's think about what we expect to see as the contents of
+      <para id="x_10c">Let's think about what we expect to see as the contents of
 	<filename>myfile</filename> now.  The first change should be
 	present, because we've never backed it out.  The second change
 	should be missing, as that's the change we backed out.  Since
@@ -510,68 +499,65 @@
 
       &interaction.backout.manual.cat;
 
-      <para>To get the third change back into the file, we just do a
+      <para id="x_10d">To get the third change back into the file, we just do a
 	normal merge of our two heads.</para>
 
       &interaction.backout.manual.merge;
 
-      <para>Afterwards, the graphical history of our repository looks
-	like figure
-	<xref endterm="fig.undo.backout-manual-merge.caption"
-	  linkend="fig.undo.backout-manual-merge"/>.</para>
+      <para id="x_10e">Afterwards, the graphical history of our
+	repository looks like
+	<xref linkend="fig:undo:backout-manual-merge"/>.</para>
 
-      <informalfigure id="fig.undo.backout-manual-merge">
-        <mediaobject>
-          <imageobject><imagedata fileref="images/undo-manual-merge.png"/>
-          </imageobject>
-          <textobject><phrase>XXX add text</phrase></textobject>
-          <caption><para id="fig.undo.backout-manual-merge.caption">Manually
-            merging a backout change</para></caption>
-        </mediaobject>
-      </informalfigure>
+      <figure id="fig:undo:backout-manual-merge">
+	<title>Manually merging a backout change</title>
+	<mediaobject>
+	  <imageobject><imagedata fileref="figs/undo-manual-merge.png"/></imageobject>
+	  <textobject><phrase>XXX add text</phrase></textobject>
+	</mediaobject>
+      </figure>
 
     </sect2>
     <sect2>
       <title>Why <command role="hg-cmd">hg backout</command> works as
 	it does</title>
 
-      <para>Here's a brief description of how the <command
+      <para id="x_110">Here's a brief description of how the <command
 	  role="hg-cmd">hg backout</command> command works.</para>
       <orderedlist>
-	<listitem><para>It ensures that the working directory is
+	<listitem><para id="x_111">It ensures that the working directory is
 	    <quote>clean</quote>, i.e. that the output of <command
 	      role="hg-cmd">hg status</command> would be empty.</para>
 	</listitem>
-	<listitem><para>It remembers the current parent of the working
+	<listitem><para id="x_112">It remembers the current parent of the working
 	    directory.  Let's call this changeset
 	    <literal>orig</literal></para>
 	</listitem>
-	<listitem><para>It does the equivalent of a <command
+	<listitem><para id="x_113">It does the equivalent of a <command
 	      role="hg-cmd">hg update</command> to sync the working
 	    directory to the changeset you want to back out.  Let's
 	    call this changeset <literal>backout</literal></para>
 	</listitem>
-	<listitem><para>It finds the parent of that changeset.  Let's
+	<listitem><para id="x_114">It finds the parent of that changeset.  Let's
 	    call that changeset <literal>parent</literal>.</para>
 	</listitem>
-	<listitem><para>For each file that the
+	<listitem><para id="x_115">For each file that the
 	    <literal>backout</literal> changeset affected, it does the
 	    equivalent of a <command role="hg-cmd">hg revert -r
 	      parent</command> on that file, to restore it to the
 	    contents it had before that changeset was
 	    committed.</para>
 	</listitem>
-	<listitem><para>It commits the result as a new changeset.
+	<listitem><para id="x_116">It commits the result as a new changeset.
 	    This changeset has <literal>backout</literal> as its
 	    parent.</para>
 	</listitem>
-	<listitem><para>If you specify <option
+	<listitem><para id="x_117">If you specify <option
 	      role="hg-opt-backout">--merge</option> on the command
 	    line, it merges with <literal>orig</literal>, and commits
 	    the result of the merge.</para>
 	</listitem></orderedlist>
 
-      <para>An alternative way to implement the <command
+      <para id="x_118">An alternative way to implement the <command
 	  role="hg-cmd">hg backout</command> command would be to
 	<command role="hg-cmd">hg export</command> the
 	to-be-backed-out changeset as a diff, then use the <option
@@ -581,21 +567,21 @@
 	sounds much simpler, but it would not work nearly as
 	well.</para>
 
-      <para>The reason that <command role="hg-cmd">hg
+      <para id="x_119">The reason that <command role="hg-cmd">hg
 	  backout</command> does an update, a commit, a merge, and
 	another commit is to give the merge machinery the best chance
 	to do a good job when dealing with all the changes
 	<emphasis>between</emphasis> the change you're backing out and
 	the current tip.</para>
 
-      <para>If you're backing out a changeset that's 100 revisions
+      <para id="x_11a">If you're backing out a changeset that's 100 revisions
 	back in your project's history, the chances that the
 	<command>patch</command> command will be able to apply a
 	reverse diff cleanly are not good, because intervening changes
 	are likely to have <quote>broken the context</quote> that
 	<command>patch</command> uses to determine whether it can
 	apply a patch (if this sounds like gibberish, see <xref
-	  linkend="sec.mq.patch"/> for a
+	  linkend="sec:mq:patch"/> for a
 	discussion of the <command>patch</command> command).  Also,
 	Mercurial's merge machinery will handle files and directories
 	being renamed, permission changes, and modifications to binary
@@ -604,16 +590,16 @@
 
     </sect2>
   </sect1>
-  <sect1 id="sec.undo.aaaiiieee">
+  <sect1 id="sec:undo:aaaiiieee">
     <title>Changes that should never have been</title>
 
-    <para>Most of the time, the <command role="hg-cmd">hg
+    <para id="x_11b">Most of the time, the <command role="hg-cmd">hg
 	backout</command> command is exactly what you need if you want
       to undo the effects of a change.  It leaves a permanent record
       of exactly what you did, both when committing the original
       changeset and when you cleaned up after it.</para>
 
-    <para>On rare occasions, though, you may find that you've
+    <para id="x_11c">On rare occasions, though, you may find that you've
       committed a change that really should not be present in the
       repository at all.  For example, it would be very unusual, and
       usually considered a mistake, to commit a software project's
@@ -622,21 +608,21 @@
       so they increase the size of the repository and the amount of
       time it takes to clone or pull changes.</para>
 
-    <para>Before I discuss the options that you have if you commit a
+    <para id="x_11d">Before I discuss the options that you have if you commit a
       <quote>brown paper bag</quote> change (the kind that's so bad
       that you want to pull a brown paper bag over your head), let me
       first discuss some approaches that probably won't work.</para>
 
-    <para>Since Mercurial treats history as accumulative&emdash;every
-      change builds on top of all changes that preceded it&emdash;you
-      generally can't just make disastrous changes disappear.  The one
-      exception is when you've just committed a change, and it hasn't
-      been pushed or pulled into another repository.  That's when you
-      can safely use the <command role="hg-cmd">hg rollback</command>
-      command, as I detailed in section <xref
-	linkend="sec.undo.rollback"/>.</para>
+    <para id="x_11e">Since Mercurial treats history as
+      accumulative&emdash;every change builds on top of all changes
+      that preceded it&emdash;you generally can't just make disastrous
+      changes disappear.  The one exception is when you've just
+      committed a change, and it hasn't been pushed or pulled into
+      another repository.  That's when you can safely use the <command
+	role="hg-cmd">hg rollback</command> command, as I detailed in
+      <xref linkend="sec:undo:rollback"/>.</para>
 
-    <para>After you've pushed a bad change to another repository, you
+    <para id="x_11f">After you've pushed a bad change to another repository, you
       <emphasis>could</emphasis> still use <command role="hg-cmd">hg
 	rollback</command> to make your local copy of the change
       disappear, but it won't have the consequences you want.  The
@@ -644,7 +630,7 @@
       will reappear in your local repository the next time you
       pull.</para>
 
-    <para>If a situation like this arises, and you know which
+    <para id="x_120">If a situation like this arises, and you know which
       repositories your bad change has propagated into, you can
       <emphasis>try</emphasis> to get rid of the changeefrom
       <emphasis>every</emphasis> one of those repositories.  This is,
@@ -652,13 +638,13 @@
       single repository while you're expunging, the change is still
       <quote>in the wild</quote>, and could propagate further.</para>
 
-    <para>If you've committed one or more changes
+    <para id="x_121">If you've committed one or more changes
       <emphasis>after</emphasis> the change that you'd like to see
       disappear, your options are further reduced. Mercurial doesn't
       provide a way to <quote>punch a hole</quote> in history, leaving
       changesets intact.</para>
 
-    <para>XXX This needs filling out.  The
+    <para id="x_122">XXX This needs filling out.  The
       <literal>hg-replay</literal> script in the
       <literal>examples</literal> directory works, but doesn't handle
       merge changesets.  Kind of an important omission.</para>
@@ -667,15 +653,15 @@
       <title>Protect yourself from <quote>escaped</quote>
 	changes</title>
 
-      <para>If you've committed some changes to your local repository
+      <para id="x_123">If you've committed some changes to your local repository
 	and they've been pushed or pulled somewhere else, this isn't
 	necessarily a disaster.  You can protect yourself ahead of
 	time against some classes of bad changeset.  This is
 	particularly easy if your team usually pulls changes from a
 	central repository.</para>
 
-      <para>By configuring some hooks on that repository to validate
-	incoming changesets (see chapter <xref linkend="chap.hook"/>),
+      <para id="x_124">By configuring some hooks on that repository to validate
+	incoming changesets (see chapter <xref linkend="chap:hook"/>),
 	you can
 	automatically prevent some kinds of bad changeset from being
 	pushed to the central repository at all.  With such a
@@ -684,23 +670,23 @@
 	propagate into the central repository.  Better yet, this
 	happens without any need for explicit intervention.</para>
 
-      <para>For instance, an incoming change hook that verifies that a
+      <para id="x_125">For instance, an incoming change hook that verifies that a
 	changeset will actually compile can prevent people from
 	inadvertantly <quote>breaking the build</quote>.</para>
 
     </sect2>
   </sect1>
-  <sect1 id="sec.undo.bisect">
+  <sect1 id="sec:undo:bisect">
     <title>Finding the source of a bug</title>
 
-    <para>While it's all very well to be able to back out a changeset
+    <para id="x_126">While it's all very well to be able to back out a changeset
       that introduced a bug, this requires that you know which
       changeset to back out.  Mercurial provides an invaluable
       command, called <command role="hg-cmd">hg bisect</command>, that
       helps you to automate this process and accomplish it very
       efficiently.</para>
 
-    <para>The idea behind the <command role="hg-cmd">hg
+    <para id="x_127">The idea behind the <command role="hg-cmd">hg
 	bisect</command> command is that a changeset has introduced
       some change of behaviour that you can identify with a simple
       binary test.  You don't know which piece of code introduced the
@@ -709,41 +695,41 @@
       test to direct its search for the changeset that introduced the
       code that caused the bug.</para>
 
-    <para>Here are a few scenarios to help you understand how you
+    <para id="x_128">Here are a few scenarios to help you understand how you
       might apply this command.</para>
     <itemizedlist>
-      <listitem><para>The most recent version of your software has a
+      <listitem><para id="x_129">The most recent version of your software has a
 	  bug that you remember wasn't present a few weeks ago, but
 	  you don't know when it was introduced.  Here, your binary
 	  test checks for the presence of that bug.</para>
       </listitem>
-      <listitem><para>You fixed a bug in a rush, and now it's time to
+      <listitem><para id="x_12a">You fixed a bug in a rush, and now it's time to
 	  close the entry in your team's bug database.  The bug
 	  database requires a changeset ID when you close an entry,
 	  but you don't remember which changeset you fixed the bug in.
 	  Once again, your binary test checks for the presence of the
 	  bug.</para>
       </listitem>
-      <listitem><para>Your software works correctly, but runs 15%
+      <listitem><para id="x_12b">Your software works correctly, but runs 15%
 	  slower than the last time you measured it.  You want to know
 	  which changeset introduced the performance regression.  In
 	  this case, your binary test measures the performance of your
 	  software, to see whether it's <quote>fast</quote> or
 	  <quote>slow</quote>.</para>
       </listitem>
-      <listitem><para>The sizes of the components of your project that
+      <listitem><para id="x_12c">The sizes of the components of your project that
 	  you ship exploded recently, and you suspect that something
 	  changed in the way you build your project.</para>
       </listitem></itemizedlist>
 
-    <para>From these examples, it should be clear that the <command
+    <para id="x_12d">From these examples, it should be clear that the <command
 	role="hg-cmd">hg bisect</command> command is not useful only
       for finding the sources of bugs.  You can use it to find any
       <quote>emergent property</quote> of a repository (anything that
       you can't find from a simple text search of the files in the
       tree) for which you can write a binary test.</para>
 
-    <para>We'll introduce a little bit of terminology here, just to
+    <para id="x_12e">We'll introduce a little bit of terminology here, just to
       make it clear which parts of the search process are your
       responsibility, and which are Mercurial's.  A
       <emphasis>test</emphasis> is something that
@@ -756,7 +742,7 @@
 	the <command role="hg-cmd">hg bisect</command>
 	command</quote>.</para>
 
-    <para>One simple way to automate the searching process would be
+    <para id="x_12f">One simple way to automate the searching process would be
       simply to probe every changeset.  However, this scales poorly.
       If it took ten minutes to test a single changeset, and you had
       10,000 changesets in your repository, the exhaustive approach
@@ -766,7 +752,7 @@
       your search to those, you'd still be looking at over 40 hours to
       find the changeset that introduced your bug.</para>
 
-    <para>What the <command role="hg-cmd">hg bisect</command> command
+    <para id="x_130">What the <command role="hg-cmd">hg bisect</command> command
       does is use its knowledge of the <quote>shape</quote> of your
       project's revision history to perform a search in time
       proportional to the <emphasis>logarithm</emphasis> of the number
@@ -777,7 +763,7 @@
       Limit your search to the last hundred changesets, and it will
       take only about an hour (roughly seven tests).</para>
 
-    <para>The <command role="hg-cmd">hg bisect</command> command is
+    <para id="x_131">The <command role="hg-cmd">hg bisect</command> command is
       aware of the <quote>branchy</quote> nature of a Mercurial
       project's revision history, so it has no problems dealing with
       branches, merges, or multiple heads in a repository.  It can
@@ -788,24 +774,24 @@
       <title>Using the <command role="hg-cmd">hg bisect</command>
 	command</title>
 
-      <para>Here's an example of <command role="hg-cmd">hg
+      <para id="x_132">Here's an example of <command role="hg-cmd">hg
 	  bisect</command> in action.</para>
 
       <note>
-	<para>  In versions 0.9.5 and earlier of Mercurial, <command
+	<para id="x_133">  In versions 0.9.5 and earlier of Mercurial, <command
 	    role="hg-cmd">hg bisect</command> was not a core command:
 	  it was distributed with Mercurial as an extension. This
 	  section describes the built-in command, not the old
 	  extension.</para>
       </note>
 
-      <para>Now let's create a repository, so that we can try out the
+      <para id="x_134">Now let's create a repository, so that we can try out the
 	<command role="hg-cmd">hg bisect</command> command in
 	isolation.</para>
 
       &interaction.bisect.init;
 
-      <para>We'll simulate a project that has a bug in it in a
+      <para id="x_135">We'll simulate a project that has a bug in it in a
 	simple-minded way: create trivial changes in a loop, and
 	nominate one specific change that will have the
 	<quote>bug</quote>.  This loop creates 35 changesets, each
@@ -815,44 +801,44 @@
 
       &interaction.bisect.commits;
 
-      <para>The next thing that we'd like to do is figure out how to
+      <para id="x_136">The next thing that we'd like to do is figure out how to
 	use the <command role="hg-cmd">hg bisect</command> command.
 	We can use Mercurial's normal built-in help mechanism for
 	this.</para>
 
       &interaction.bisect.help;
 
-      <para>The <command role="hg-cmd">hg bisect</command> command
+      <para id="x_137">The <command role="hg-cmd">hg bisect</command> command
 	works in steps.  Each step proceeds as follows.</para>
       <orderedlist>
-	<listitem><para>You run your binary test.</para>
+	<listitem><para id="x_138">You run your binary test.</para>
 	  <itemizedlist>
-	    <listitem><para>If the test succeeded, you tell <command
+	    <listitem><para id="x_139">If the test succeeded, you tell <command
 		  role="hg-cmd">hg bisect</command> by running the
 		<command role="hg-cmd">hg bisect good</command>
 		command.</para>
 	    </listitem>
-	    <listitem><para>If it failed, run the <command
+	    <listitem><para id="x_13a">If it failed, run the <command
 		  role="hg-cmd">hg bisect bad</command>
 		command.</para></listitem></itemizedlist>
 	</listitem>
-	<listitem><para>The command uses your information to decide
+	<listitem><para id="x_13b">The command uses your information to decide
 	    which changeset to test next.</para>
 	</listitem>
-	<listitem><para>It updates the working directory to that
+	<listitem><para id="x_13c">It updates the working directory to that
 	    changeset, and the process begins again.</para>
 	</listitem></orderedlist>
-      <para>The process ends when <command role="hg-cmd">hg
+      <para id="x_13d">The process ends when <command role="hg-cmd">hg
 	  bisect</command> identifies a unique changeset that marks
 	the point where your test transitioned from
 	<quote>succeeding</quote> to <quote>failing</quote>.</para>
 
-      <para>To start the search, we must run the <command
+      <para id="x_13e">To start the search, we must run the <command
 	  role="hg-cmd">hg bisect --reset</command> command.</para>
 
       &interaction.bisect.search.init;
 
-      <para>In our case, the binary test we use is simple: we check to
+      <para id="x_13f">In our case, the binary test we use is simple: we check to
 	see if any file in the repository contains the string <quote>i
 	  have a gub</quote>.  If it does, this changeset contains the
 	change that <quote>caused the bug</quote>.  By convention, a
@@ -860,14 +846,14 @@
 	<quote>bad</quote>, while one that doesn't is
 	<quote>good</quote>.</para>
 
-      <para>Most of the time, the revision to which the working
+      <para id="x_140">Most of the time, the revision to which the working
 	directory is synced (usually the tip) already exhibits the
 	problem introduced by the buggy change, so we'll mark it as
 	<quote>bad</quote>.</para>
 
       &interaction.bisect.search.bad-init;
 
-      <para>Our next task is to nominate a changeset that we know
+      <para id="x_141">Our next task is to nominate a changeset that we know
 	<emphasis>doesn't</emphasis> have the bug; the <command
 	  role="hg-cmd">hg bisect</command> command will
 	<quote>bracket</quote> its search between the first pair of
@@ -877,38 +863,38 @@
 
       &interaction.bisect.search.good-init;
 
-      <para>Notice that this command printed some output.</para>
+      <para id="x_142">Notice that this command printed some output.</para>
       <itemizedlist>
-	<listitem><para>It told us how many changesets it must
+	<listitem><para id="x_143">It told us how many changesets it must
 	    consider before it can identify the one that introduced
 	    the bug, and how many tests that will require.</para>
 	</listitem>
-	<listitem><para>It updated the working directory to the next
+	<listitem><para id="x_144">It updated the working directory to the next
 	    changeset to test, and told us which changeset it's
 	    testing.</para>
 	</listitem></itemizedlist>
 
-      <para>We now run our test in the working directory.  We use the
+      <para id="x_145">We now run our test in the working directory.  We use the
 	<command>grep</command> command to see if our
 	<quote>bad</quote> file is present in the working directory.
 	If it is, this revision is bad; if not, this revision is good.
 	&interaction.bisect.search.step1;</para>
 
-      <para>This test looks like a perfect candidate for automation,
+      <para id="x_146">This test looks like a perfect candidate for automation,
 	so let's turn it into a shell function.</para>
       &interaction.bisect.search.mytest;
 
-      <para>We can now run an entire test step with a single command,
+      <para id="x_147">We can now run an entire test step with a single command,
 	<literal>mytest</literal>.</para>
 
       &interaction.bisect.search.step2;
 
-      <para>A few more invocations of our canned test step command,
+      <para id="x_148">A few more invocations of our canned test step command,
 	and we're done.</para>
 
       &interaction.bisect.search.rest;
 
-      <para>Even though we had 40 changesets to search through, the
+      <para id="x_149">Even though we had 40 changesets to search through, the
 	<command role="hg-cmd">hg bisect</command> command let us find
 	the changeset that introduced our <quote>bug</quote> with only
 	five tests.  Because the number of tests that the <command
@@ -921,7 +907,7 @@
     <sect2>
       <title>Cleaning up after your search</title>
 
-      <para>When you're finished using the <command role="hg-cmd">hg
+      <para id="x_14a">When you're finished using the <command role="hg-cmd">hg
 	  bisect</command> command in a repository, you can use the
 	<command role="hg-cmd">hg bisect reset</command> command to
 	drop the information it was using to drive your search.  The
@@ -941,7 +927,7 @@
     <sect2>
       <title>Give consistent input</title>
 
-      <para>The <command role="hg-cmd">hg bisect</command> command
+      <para id="x_14b">The <command role="hg-cmd">hg bisect</command> command
 	requires that you correctly report the result of every test
 	you perform.  If you tell it that a test failed when it really
 	succeeded, it <emphasis>might</emphasis> be able to detect the
@@ -955,7 +941,7 @@
     <sect2>
       <title>Automate as much as possible</title>
 
-      <para>When I started using the <command role="hg-cmd">hg
+      <para id="x_14c">When I started using the <command role="hg-cmd">hg
 	  bisect</command> command, I tried a few times to run my
 	tests by hand, on the command line.  This is an approach that
 	I, at least, am not suited to.  After a few tries, I found
@@ -963,7 +949,7 @@
 	my searches several times before finally getting correct
 	results.</para>
 
-      <para>My initial problems with driving the <command
+      <para id="x_14d">My initial problems with driving the <command
 	  role="hg-cmd">hg bisect</command> command by hand occurred
 	even with simple searches on small repositories; if the
 	problem you're looking for is more subtle, or the number of
@@ -972,14 +958,14 @@
 	the search is much higher.  Once I started automating my
 	tests, I had much better results.</para>
 
-      <para>The key to automated testing is twofold:</para>
+      <para id="x_14e">The key to automated testing is twofold:</para>
       <itemizedlist>
-	<listitem><para>always test for the same symptom, and</para>
+	<listitem><para id="x_14f">always test for the same symptom, and</para>
 	</listitem>
-	<listitem><para>always feed consistent input to the <command
+	<listitem><para id="x_150">always feed consistent input to the <command
 	      role="hg-cmd">hg bisect</command> command.</para>
 	</listitem></itemizedlist>
-      <para>In my tutorial example above, the <command>grep</command>
+      <para id="x_151">In my tutorial example above, the <command>grep</command>
 	command tests for the symptom, and the <literal>if</literal>
 	statement takes the result of this check and ensures that we
 	always feed the same input to the <command role="hg-cmd">hg
@@ -991,21 +977,21 @@
     <sect2>
       <title>Check your results</title>
 
-      <para>Because the output of a <command role="hg-cmd">hg
+      <para id="x_152">Because the output of a <command role="hg-cmd">hg
 	  bisect</command> search is only as good as the input you
 	give it, don't take the changeset it reports as the absolute
 	truth.  A simple way to cross-check its report is to manually
 	run your test at each of the following changesets:</para>
       <itemizedlist>
-	<listitem><para>The changeset that it reports as the first bad
+	<listitem><para id="x_153">The changeset that it reports as the first bad
 	    revision.  Your test should still report this as
 	    bad.</para>
 	</listitem>
-	<listitem><para>The parent of that changeset (either parent,
+	<listitem><para id="x_154">The parent of that changeset (either parent,
 	    if it's a merge). Your test should report this changeset
 	    as good.</para>
 	</listitem>
-	<listitem><para>A child of that changeset.  Your test should
+	<listitem><para id="x_155">A child of that changeset.  Your test should
 	    report this changeset as bad.</para>
 	</listitem></itemizedlist>
 
@@ -1013,7 +999,7 @@
     <sect2>
       <title>Beware interference between bugs</title>
 
-      <para>It's possible that your search for one bug could be
+      <para id="x_156">It's possible that your search for one bug could be
 	disrupted by the presence of another.  For example, let's say
 	your software crashes at revision 100, and worked correctly at
 	revision 50.  Unknown to you, someone else introduced a
@@ -1021,7 +1007,7 @@
 	revision 80.  This could distort your results in one of
 	several ways.</para>
 
-      <para>It is possible that this other bug completely
+      <para id="x_157">It is possible that this other bug completely
 	<quote>masks</quote> yours, which is to say that it occurs
 	before your bug has a chance to manifest itself.  If you can't
 	avoid that other bug (for example, it prevents your project
@@ -1031,14 +1017,14 @@
 	you can mark a changeset as untested by running <command
 	  role="hg-cmd">hg bisect --skip</command>.</para>
 
-      <para>A different problem could arise if your test for a bug's
+      <para id="x_158">A different problem could arise if your test for a bug's
 	presence is not specific enough.  If you check for <quote>my
 	  program crashes</quote>, then both your crashing bug and an
 	unrelated crashing bug that masks it will look like the same
 	thing, and mislead <command role="hg-cmd">hg
 	  bisect</command>.</para>
 
-      <para>Another useful situation in which to use <command
+      <para id="x_159">Another useful situation in which to use <command
 	  role="hg-cmd">hg bisect --skip</command> is if you can't
 	test a revision because your project was in a broken and hence
 	untestable state at that revision, perhaps because someone
@@ -1049,7 +1035,7 @@
     <sect2>
       <title>Bracket your search lazily</title>
 
-      <para>Choosing the first <quote>good</quote> and
+      <para id="x_15a">Choosing the first <quote>good</quote> and
 	<quote>bad</quote> changesets that will mark the end points of
 	your search is often easy, but it bears a little discussion
 	nevertheless.  From the perspective of <command
@@ -1057,7 +1043,7 @@
 	changeset is conventionally <quote>bad</quote>, and the older
 	changeset is <quote>good</quote>.</para>
 
-      <para>If you're having trouble remembering when a suitable
+      <para id="x_15b">If you're having trouble remembering when a suitable
 	<quote>good</quote> change was, so that you can tell <command
 	  role="hg-cmd">hg bisect</command>, you could do worse than
 	testing changesets at random.  Just remember to eliminate
@@ -1066,7 +1052,7 @@
 	where another problem masks the bug (as I discussed
 	above).</para>
 
-      <para>Even if you end up <quote>early</quote> by thousands of
+      <para id="x_15c">Even if you end up <quote>early</quote> by thousands of
 	changesets or months of history, you will only add a handful
 	of tests to the total number that <command role="hg-cmd">hg
 	  bisect</command> must perform, thanks to its logarithmic
--- a/en/ch09-hook.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/ch09-hook.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,15 +1,15 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<chapter id="chap.hook">
+<chapter id="chap:hook">
   <?dbhtml filename="handling-repository-events-with-hooks.html"?>
   <title>Handling repository events with hooks</title>
 
-  <para>Mercurial offers a powerful mechanism to let you perform
+  <para id="x_1e6">Mercurial offers a powerful mechanism to let you perform
     automated actions in response to events that occur in a
     repository.  In some cases, you can even control Mercurial's
     response to those events.</para>
 
-  <para>The name Mercurial uses for one of these actions is a
+  <para id="x_1e7">The name Mercurial uses for one of these actions is a
     <emphasis>hook</emphasis>. Hooks are called
     <quote>triggers</quote> in some revision control systems, but the
     two names refer to the same idea.</para>
@@ -17,49 +17,49 @@
   <sect1>
     <title>An overview of hooks in Mercurial</title>
 
-    <para>Here is a brief list of the hooks that Mercurial supports.
-      We will revisit each of these hooks in more detail later, in
-      section <xref linkend="sec.hook.ref"/>.</para>
+    <para id="x_1e8">Here is a brief list of the hooks that Mercurial
+      supports. We will revisit each of these hooks in more detail
+      later, in <xref linkend="sec:hook:ref"/>.</para>
 
     <itemizedlist>
-      <listitem><para><literal role="hook">changegroup</literal>: This
+      <listitem><para id="x_1e9"><literal role="hook">changegroup</literal>: This
 	  is run after a group of changesets has been brought into the
 	  repository from elsewhere.</para>
       </listitem>
-      <listitem><para><literal role="hook">commit</literal>: This is
+      <listitem><para id="x_1ea"><literal role="hook">commit</literal>: This is
 	  run after a new changeset has been created in the local
 	  repository.</para>
       </listitem>
-      <listitem><para><literal role="hook">incoming</literal>: This is
+      <listitem><para id="x_1eb"><literal role="hook">incoming</literal>: This is
 	  run once for each new changeset that is brought into the
 	  repository from elsewhere.  Notice the difference from
 	  <literal role="hook">changegroup</literal>, which is run
 	  once per <emphasis>group</emphasis> of changesets brought
 	  in.</para>
       </listitem>
-      <listitem><para><literal role="hook">outgoing</literal>: This is
+      <listitem><para id="x_1ec"><literal role="hook">outgoing</literal>: This is
 	  run after a group of changesets has been transmitted from
 	  this repository.</para>
       </listitem>
-      <listitem><para><literal role="hook">prechangegroup</literal>:
+      <listitem><para id="x_1ed"><literal role="hook">prechangegroup</literal>:
 	  This is run before starting to bring a group of changesets
 	  into the repository.
 	</para>
       </listitem>
-      <listitem><para><literal role="hook">precommit</literal>:
+      <listitem><para id="x_1ee"><literal role="hook">precommit</literal>:
 	  Controlling. This is run before starting a commit.
 	</para>
       </listitem>
-      <listitem><para><literal role="hook">preoutgoing</literal>:
+      <listitem><para id="x_1ef"><literal role="hook">preoutgoing</literal>:
 	  Controlling. This is run before starting to transmit a group
 	  of changesets from this repository.
 	</para>
       </listitem>
-      <listitem><para><literal role="hook">pretag</literal>:
+      <listitem><para id="x_1f0"><literal role="hook">pretag</literal>:
 	  Controlling. This is run before creating a tag.
 	</para>
       </listitem>
-      <listitem><para><literal
+      <listitem><para id="x_1f1"><literal
 	    role="hook">pretxnchangegroup</literal>: Controlling. This
 	  is run after a group of changesets has been brought into the
 	  local repository from another, but before the transaction
@@ -67,27 +67,27 @@
 	  repository.
 	</para>
       </listitem>
-      <listitem><para><literal role="hook">pretxncommit</literal>:
+      <listitem><para id="x_1f2"><literal role="hook">pretxncommit</literal>:
 	  Controlling. This is run after a new changeset has been
 	  created in the local repository, but before the transaction
 	  completes that will make it permanent.
 	</para>
       </listitem>
-      <listitem><para><literal role="hook">preupdate</literal>:
+      <listitem><para id="x_1f3"><literal role="hook">preupdate</literal>:
 	  Controlling. This is run before starting an update or merge
 	  of the working directory.
 	</para>
       </listitem>
-      <listitem><para><literal role="hook">tag</literal>: This is run
+      <listitem><para id="x_1f4"><literal role="hook">tag</literal>: This is run
 	  after a tag is created.
 	</para>
       </listitem>
-      <listitem><para><literal role="hook">update</literal>: This is
+      <listitem><para id="x_1f5"><literal role="hook">update</literal>: This is
 	  run after an update or merge of the working directory has
 	  finished.
 	</para>
       </listitem></itemizedlist>
-    <para>Each of the hooks whose description begins with the word
+    <para id="x_1f6">Each of the hooks whose description begins with the word
       <quote>Controlling</quote> has the ability to determine whether
       an activity can proceed.  If the hook succeeds, the activity may
       proceed; if it fails, the activity is either not permitted or
@@ -101,7 +101,7 @@
     <sect2>
       <title>Hooks are run with your privileges</title>
 
-      <para>When you run a Mercurial command in a repository, and the
+      <para id="x_1f7">When you run a Mercurial command in a repository, and the
 	command causes a hook to run, that hook runs on
 	<emphasis>your</emphasis> system, under
 	<emphasis>your</emphasis> user account, with
@@ -112,14 +112,14 @@
 	it does.
       </para>
 
-      <para>In some cases, you may be exposed to hooks that you did
+      <para id="x_1f8">In some cases, you may be exposed to hooks that you did
 	not install yourself.  If you work with Mercurial on an
 	unfamiliar system, Mercurial will run hooks defined in that
 	system's global <filename role="special">~/.hgrc</filename>
 	file.
       </para>
 
-      <para>If you are working with a repository owned by another
+      <para id="x_1f9">If you are working with a repository owned by another
 	user, Mercurial can run hooks defined in that user's
 	repository, but it will still run them as <quote>you</quote>.
 	For example, if you <command role="hg-cmd">hg pull</command>
@@ -131,7 +131,7 @@
       </para>
 
       <note>
-	<para>  This only applies if you are pulling from a repository
+	<para id="x_1fa">  This only applies if you are pulling from a repository
 	  on a local or network filesystem.  If you're pulling over
 	  http or ssh, any <literal role="hook">outgoing</literal>
 	  hook will run under whatever account is executing the server
@@ -139,7 +139,7 @@
 	</para>
       </note>
 
-      <para>XXX To see what hooks are defined in a repository, use the
+      <para id="x_1fb">XXX To see what hooks are defined in a repository, use the
 	<command role="hg-cmd">hg config hooks</command> command.  If
 	you are working in one repository, but talking to another that
 	you do not own (e.g. using <command role="hg-cmd">hg
@@ -152,27 +152,27 @@
     <sect2>
       <title>Hooks do not propagate</title>
 
-      <para>In Mercurial, hooks are not revision controlled, and do
+      <para id="x_1fc">In Mercurial, hooks are not revision controlled, and do
 	not propagate when you clone, or pull from, a repository.  The
 	reason for this is simple: a hook is a completely arbitrary
 	piece of executable code.  It runs under your user identity,
 	with your privilege level, on your machine.
       </para>
 
-      <para>It would be extremely reckless for any distributed
+      <para id="x_1fd">It would be extremely reckless for any distributed
 	revision control system to implement revision-controlled
 	hooks, as this would offer an easily exploitable way to
 	subvert the accounts of users of the revision control system.
       </para>
 
-      <para>Since Mercurial does not propagate hooks, if you are
+      <para id="x_1fe">Since Mercurial does not propagate hooks, if you are
 	collaborating with other people on a common project, you
 	should not assume that they are using the same Mercurial hooks
 	as you are, or that theirs are correctly configured.  You
 	should document the hooks you expect people to use.
       </para>
 
-      <para>In a corporate intranet, this is somewhat easier to
+      <para id="x_1ff">In a corporate intranet, this is somewhat easier to
 	control, as you can for example provide a
 	<quote>standard</quote> installation of Mercurial on an NFS
 	filesystem, and use a site-wide <filename role="special">~/.hgrc</filename> file to define hooks that all users will
@@ -183,12 +183,12 @@
     <sect2>
       <title>Hooks can be overridden</title>
 
-      <para>Mercurial allows you to override a hook definition by
+      <para id="x_200">Mercurial allows you to override a hook definition by
 	redefining the hook.  You can disable it by setting its value
 	to the empty string, or change its behaviour as you wish.
       </para>
 
-      <para>If you deploy a system- or site-wide <filename
+      <para id="x_201">If you deploy a system- or site-wide <filename
 	  role="special">~/.hgrc</filename> file that defines some
 	hooks, you should thus understand that your users can disable
 	or override those hooks.
@@ -198,7 +198,7 @@
     <sect2>
       <title>Ensuring that critical hooks are run</title>
 
-      <para>Sometimes you may want to enforce a policy that you do not
+      <para id="x_202">Sometimes you may want to enforce a policy that you do not
 	want others to be able to work around.  For example, you may
 	have a requirement that every changeset must pass a rigorous
 	set of tests.  Defining this requirement via a hook in a
@@ -207,13 +207,13 @@
 	can subvert it at will by overriding the hook.
       </para>
 
-      <para>Instead, you can set up your policies for use of Mercurial
+      <para id="x_203">Instead, you can set up your policies for use of Mercurial
 	so that people are expected to propagate changes through a
 	well-known <quote>canonical</quote> server that you have
 	locked down and configured appropriately.
       </para>
 
-      <para>One way to do this is via a combination of social
+      <para id="x_204">One way to do this is via a combination of social
 	engineering and technology.  Set up a restricted-access
 	account; users can push changes over the network to
 	repositories managed by this account, but they cannot log into
@@ -222,7 +222,7 @@
 	they want.
       </para>
 
-      <para>When someone pushes a changeset to the server that
+      <para id="x_205">When someone pushes a changeset to the server that
 	everyone pulls from, the server will test the changeset before
 	it accepts it as permanent, and reject it if it fails to pass
 	the test suite.  If people only pull changes from this
@@ -236,19 +236,19 @@
     <title>Care with <literal>pretxn</literal> hooks in a
       shared-access repository</title>
 
-    <para>If you want to use hooks to do some automated work in a
+    <para id="x_206">If you want to use hooks to do some automated work in a
       repository that a number of people have shared access to, you
       need to be careful in how you do this.
     </para>
 
-    <para>Mercurial only locks a repository when it is writing to the
+    <para id="x_207">Mercurial only locks a repository when it is writing to the
       repository, and only the parts of Mercurial that write to the
       repository pay attention to locks.  Write locks are necessary to
       prevent multiple simultaneous writers from scribbling on each
       other's work, corrupting the repository.
     </para>
 
-    <para>Because Mercurial is careful with the order in which it
+    <para id="x_208">Because Mercurial is careful with the order in which it
       reads and writes data, it does not need to acquire a lock when
       it wants to read data from the repository.  The parts of
       Mercurial that read from the repository never pay attention to
@@ -256,14 +256,14 @@
       performance and concurrency.
     </para>
 
-    <para>With great performance comes a trade-off, though, one which
+    <para id="x_209">With great performance comes a trade-off, though, one which
       has the potential to cause you trouble unless you're aware of
       it.  To describe this requires a little detail about how
       Mercurial adds changesets to a repository and reads those
       changes.
     </para>
 
-    <para>When Mercurial <emphasis>writes</emphasis> metadata, it
+    <para id="x_20a">When Mercurial <emphasis>writes</emphasis> metadata, it
       writes it straight into the destination file.  It writes file
       data first, then manifest data (which contains pointers to the
       new file data), then changelog data (which contains pointers to
@@ -274,13 +274,13 @@
       before the transaction began.
     </para>
 
-    <para>When Mercurial <emphasis>reads</emphasis> metadata, it reads
+    <para id="x_20b">When Mercurial <emphasis>reads</emphasis> metadata, it reads
       the changelog first, then everything else.  Since a reader will
       only access parts of the manifest or file metadata that it can
       see in the changelog, it can never see partially written data.
     </para>
 
-    <para>Some controlling hooks (<literal
+    <para id="x_20c">Some controlling hooks (<literal
 	role="hook">pretxncommit</literal> and <literal
 	role="hook">pretxnchangegroup</literal>) run when a
       transaction is almost complete. All of the metadata has been
@@ -288,7 +288,7 @@
       cause the newly-written data to disappear.
     </para>
 
-    <para>If one of these hooks runs for long, it opens a window of
+    <para id="x_20d">If one of these hooks runs for long, it opens a window of
       time during which a reader can see the metadata for changesets
       that are not yet permanent, and should not be thought of as
       <quote>really there</quote>.  The longer the hook runs, the
@@ -298,7 +298,7 @@
     <sect2>
       <title>The problem illustrated</title>
 
-      <para>In principle, a good use for the <literal
+      <para id="x_20e">In principle, a good use for the <literal
 	  role="hook">pretxnchangegroup</literal> hook would be to
 	automatically build and test incoming changes before they are
 	accepted into a central repository.  This could let you
@@ -309,7 +309,7 @@
 	potentially breaking their build.
       </para>
 
-      <para>The safest technological answer to this challenge is to
+      <para id="x_20f">The safest technological answer to this challenge is to
 	set up such a <quote>gatekeeper</quote> repository as
 	<emphasis>unidirectional</emphasis>.  Let it take changes
 	pushed in from the outside, but do not allow anyone to pull
@@ -321,7 +321,7 @@
 	<emphasis>can</emphasis> pull from.
       </para>
 
-      <para>In practice, putting a centralised bottleneck like this in
+      <para id="x_210">In practice, putting a centralised bottleneck like this in
 	place is not often a good idea, and transaction visibility has
 	nothing to do with the problem.  As the size of a
 	project&emdash;and the time it takes to build and
@@ -332,7 +332,7 @@
 	involved.
       </para>
 
-      <para>An approach that scales better is to get people to build
+      <para id="x_211">An approach that scales better is to get people to build
 	and test before they push, then run automated builds and tests
 	centrally <emphasis>after</emphasis> a push, to be sure all is
 	well.  The advantage of this approach is that it does not
@@ -342,21 +342,21 @@
 
     </sect2>
   </sect1>
-  <sect1 id="sec.hook.simple">
+  <sect1 id="sec:hook:simple">
     <title>A short tutorial on using hooks</title>
 
-    <para>It is easy to write a Mercurial hook.  Let's start with a
+    <para id="x_212">It is easy to write a Mercurial hook.  Let's start with a
       hook that runs when you finish a <command role="hg-cmd">hg
 	commit</command>, and simply prints the hash of the changeset
       you just created.  The hook is called <literal
 	role="hook">commit</literal>.
     </para>
 
-    <para>All hooks follow the pattern in this example.</para>
+    <para id="x_213">All hooks follow the pattern in this example.</para>
 
 &interaction.hook.simple.init;
 
-    <para>You add an entry to the <literal
+    <para id="x_214">You add an entry to the <literal
 	role="rc-hooks">hooks</literal> section of your <filename
 	role="special">~/.hgrc</filename>.  On the left is the name of
       the event to trigger on; on the right is the action to take.  As
@@ -368,12 +368,12 @@
     <sect2>
       <title>Performing multiple actions per event</title>
 
-      <para>Quite often, you will want to define more than one hook
+      <para id="x_215">Quite often, you will want to define more than one hook
 	for a particular kind of event, as shown below.</para>
 
 &interaction.hook.simple.ext;
 
-      <para>Mercurial lets you do this by adding an
+      <para id="x_216">Mercurial lets you do this by adding an
 	<emphasis>extension</emphasis> to the end of a hook's name.
 	You extend a hook's name by giving the name of the hook,
 	followed by a full stop (the
@@ -384,7 +384,7 @@
 	<literal>commit</literal> event occurs.
       </para>
 
-      <para>To give a well-defined order of execution when there are
+      <para id="x_217">To give a well-defined order of execution when there are
 	multiple hooks defined for an event, Mercurial sorts hooks by
 	extension, and executes the hook commands in this sorted
 	order.  In the above example, it will execute
@@ -393,33 +393,33 @@
 	before both.
       </para>
 
-      <para>It is a good idea to use a somewhat descriptive extension
-	when you define a new hook.  This will help you to remember
-	what the hook was for.  If the hook fails, you'll get an error
-	message that contains the hook name and extension, so using a
-	descriptive extension could give you an immediate hint as to
-	why the hook failed (see section <xref
-	  linkend="sec.hook.perm"/> for an example).
+      <para id="x_218">It is a good idea to use a somewhat descriptive
+	extension when you define a new hook.  This will help you to
+	remember what the hook was for.  If the hook fails, you'll get
+	an error message that contains the hook name and extension, so
+	using a descriptive extension could give you an immediate hint
+	as to why the hook failed (see <xref
+	  linkend="sec:hook:perm"/> for an example).
       </para>
 
     </sect2>
-    <sect2 id="sec.hook.perm">
+    <sect2 id="sec:hook:perm">
       <title>Controlling whether an activity can proceed</title>
 
-      <para>In our earlier examples, we used the <literal
+      <para id="x_219">In our earlier examples, we used the <literal
 	  role="hook">commit</literal> hook, which is run after a
 	commit has completed.  This is one of several Mercurial hooks
 	that run after an activity finishes.  Such hooks have no way
 	of influencing the activity itself.
       </para>
 
-      <para>Mercurial defines a number of events that occur before an
+      <para id="x_21a">Mercurial defines a number of events that occur before an
 	activity starts; or after it starts, but before it finishes.
 	Hooks that trigger on these events have the added ability to
 	choose whether the activity can continue, or will abort.
       </para>
 
-      <para>The <literal role="hook">pretxncommit</literal> hook runs
+      <para id="x_21b">The <literal role="hook">pretxncommit</literal> hook runs
 	after a commit has all but completed.  In other words, the
 	metadata representing the changeset has been written out to
 	disk, but the transaction has not yet been allowed to
@@ -428,7 +428,7 @@
 	complete, or must be rolled back.
       </para>
 
-      <para>If the <literal role="hook">pretxncommit</literal> hook
+      <para id="x_21c">If the <literal role="hook">pretxncommit</literal> hook
 	exits with a status code of zero, the transaction is allowed
 	to complete; the commit finishes; and the <literal
 	  role="hook">commit</literal> hook is run.  If the <literal
@@ -440,7 +440,7 @@
 
 &interaction.hook.simple.pretxncommit;
 
-      <para>The hook in the example above checks that a commit comment
+      <para id="x_21d">The hook in the example above checks that a commit comment
 	contains a bug ID.  If it does, the commit can complete.  If
 	not, the commit is rolled back.
       </para>
@@ -450,7 +450,7 @@
   <sect1>
     <title>Writing your own hooks</title>
 
-    <para>When you are writing a hook, you might find it useful to run
+    <para id="x_21e">When you are writing a hook, you might find it useful to run
       Mercurial either with the <option
 	role="hg-opt-global">-v</option> option, or the <envar
 	role="rc-item-ui">verbose</envar> config item set to
@@ -458,22 +458,22 @@
       message before it calls each hook.
     </para>
 
-    <sect2 id="sec.hook.lang">
+    <sect2 id="sec:hook:lang">
       <title>Choosing how your hook should run</title>
 
-      <para>You can write a hook either as a normal
+      <para id="x_21f">You can write a hook either as a normal
 	program&emdash;typically a shell script&emdash;or as a Python
 	function that is executed within the Mercurial process.
       </para>
 
-      <para>Writing a hook as an external program has the advantage
+      <para id="x_220">Writing a hook as an external program has the advantage
 	that it requires no knowledge of Mercurial's internals.  You
 	can call normal Mercurial commands to get any added
 	information you need.  The trade-off is that external hooks
 	are slower than in-process hooks.
       </para>
 
-      <para>An in-process Python hook has complete access to the
+      <para id="x_221">An in-process Python hook has complete access to the
 	Mercurial API, and does not <quote>shell out</quote> to
 	another process, so it is inherently faster than an external
 	hook.  It is also easier to obtain much of the information
@@ -481,7 +481,7 @@
 	running Mercurial commands.
       </para>
 
-      <para>If you are comfortable with Python, or require high
+      <para id="x_222">If you are comfortable with Python, or require high
 	performance, writing your hooks in Python may be a good
 	choice.  However, when you have a straightforward hook to
 	write and you don't need to care about performance (probably
@@ -489,16 +489,16 @@
       </para>
 
     </sect2>
-    <sect2 id="sec.hook.param">
+    <sect2 id="sec:hook:param">
       <title>Hook parameters</title>
 
-      <para>Mercurial calls each hook with a set of well-defined
+      <para id="x_223">Mercurial calls each hook with a set of well-defined
 	parameters.  In Python, a parameter is passed as a keyword
 	argument to your hook function.  For an external program, a
 	parameter is passed as an environment variable.
       </para>
 
-      <para>Whether your hook is written in Python or as a shell
+      <para id="x_224">Whether your hook is written in Python or as a shell
 	script, the hook-specific parameter names and values will be
 	the same.  A boolean parameter will be represented as a
 	boolean value in Python, but as the number 1 (for
@@ -514,7 +514,7 @@
     <sect2>
       <title>Hook return values and activity control</title>
 
-      <para>A hook that executes successfully must exit with a status
+      <para id="x_225">A hook that executes successfully must exit with a status
 	of zero if external, or return boolean <quote>false</quote> if
 	in-process.  Failure is indicated with a non-zero exit status
 	from an external hook, or an in-process hook returning boolean
@@ -522,7 +522,7 @@
 	exception, the hook is considered to have failed.
       </para>
 
-      <para>For a hook that controls whether an activity can proceed,
+      <para id="x_226">For a hook that controls whether an activity can proceed,
 	zero/false means <quote>allow</quote>, while
 	non-zero/true/exception means <quote>deny</quote>.
       </para>
@@ -531,23 +531,23 @@
     <sect2>
       <title>Writing an external hook</title>
 
-      <para>When you define an external hook in your <filename
+      <para id="x_227">When you define an external hook in your <filename
 	  role="special">~/.hgrc</filename> and the hook is run, its
 	value is passed to your shell, which interprets it.  This
 	means that you can use normal shell constructs in the body of
 	the hook.
       </para>
 
-      <para>An executable hook is always run with its current
+      <para id="x_228">An executable hook is always run with its current
 	directory set to a repository's root directory.
       </para>
 
-      <para>Each hook parameter is passed in as an environment
+      <para id="x_229">Each hook parameter is passed in as an environment
 	variable; the name is upper-cased, and prefixed with the
 	string <quote><literal>HG_</literal></quote>.
       </para>
 
-      <para>With the exception of hook parameters, Mercurial does not
+      <para id="x_22a">With the exception of hook parameters, Mercurial does not
 	set or modify any environment variables when running a hook.
 	This is useful to remember if you are writing a site-wide hook
 	that may be run by a number of different users with differing
@@ -560,7 +560,7 @@
     <sect2>
       <title>Telling Mercurial to use an in-process hook</title>
 
-      <para>The <filename role="special">~/.hgrc</filename> syntax
+      <para id="x_22b">The <filename role="special">~/.hgrc</filename> syntax
 	for defining an in-process hook is slightly different than for
 	an executable hook.  The value of the hook must start with the
 	text <quote><literal>python:</literal></quote>, and continue
@@ -568,19 +568,19 @@
 	the hook's value.
       </para>
 
-      <para>The module in which a hook lives is automatically imported
+      <para id="x_22c">The module in which a hook lives is automatically imported
 	when a hook is run.  So long as you have the module name and
 	<envar>PYTHONPATH</envar> right, it should <quote>just
 	  work</quote>.
       </para>
 
-      <para>The following <filename role="special">~/.hgrc</filename>
+      <para id="x_22d">The following <filename role="special">~/.hgrc</filename>
 	example snippet illustrates the syntax and meaning of the
 	notions we just described.
       </para>
       <programlisting>[hooks]
 commit.example = python:mymodule.submodule.myhook</programlisting>
-      <para>When Mercurial runs the <literal>commit.example</literal>
+      <para id="x_22e">When Mercurial runs the <literal>commit.example</literal>
 	hook, it imports <literal>mymodule.submodule</literal>, looks
 	for the callable object named <literal>myhook</literal>, and
 	calls it.
@@ -590,12 +590,12 @@
     <sect2>
       <title>Writing an in-process hook</title>
 
-      <para>The simplest in-process hook does nothing, but illustrates
+      <para id="x_22f">The simplest in-process hook does nothing, but illustrates
 	the basic shape of the hook API:
       </para>
       <programlisting>def myhook(ui, repo, **kwargs):
     pass</programlisting>
-      <para>The first argument to a Python hook is always a <literal
+      <para id="x_230">The first argument to a Python hook is always a <literal
 	  role="py-mod-mercurial.ui">ui</literal> object.  The second
 	is a repository object; at the moment, it is always an
 	instance of <literal
@@ -615,7 +615,7 @@
     <sect2>
       <title>Writing meaningful commit messages</title>
 
-      <para>It's hard to imagine a useful commit message being very
+      <para id="x_231">It's hard to imagine a useful commit message being very
 	short. The simple <literal role="hook">pretxncommit</literal>
 	hook of the example below will prevent you from committing a
 	changeset with a message that is less than ten bytes long.
@@ -627,7 +627,7 @@
     <sect2>
       <title>Checking for trailing whitespace</title>
 
-      <para>An interesting use of a commit-related hook is to help you
+      <para id="x_232">An interesting use of a commit-related hook is to help you
 	to write cleaner code.  A simple example of <quote>cleaner
 	  code</quote> is the dictum that a change should not add any
 	new lines of text that contain <quote>trailing
@@ -638,7 +638,7 @@
 	prefer to get rid of it.
       </para>
 
-      <para>You can use either the <literal
+      <para id="x_233">You can use either the <literal
 	  role="hook">precommit</literal> or <literal
 	  role="hook">pretxncommit</literal> hook to tell whether you
 	have a trailing whitespace problem.  If you use the <literal
@@ -654,7 +654,7 @@
 	seem right.
       </para>
 
-      <para>Should you choose the <literal
+      <para id="x_234">Should you choose the <literal
 	  role="hook">pretxncommit</literal> hook, the check won't
 	occur until just before the transaction for the commit
 	completes.  This will allow you to check for problems only the
@@ -667,7 +667,7 @@
 
 &interaction.hook.ws.simple;
 
-      <para>In this example, we introduce a simple <literal
+      <para id="x_235">In this example, we introduce a simple <literal
 	  role="hook">pretxncommit</literal> hook that checks for
 	trailing whitespace.  This hook is short, but not very
 	helpful.  It exits with an error status if a change adds a
@@ -678,7 +678,7 @@
 	trailing whitespace cause problems.
       </para>
 
-      <para>The above version is much more complex, but also more
+      <para id="x_236">The above version is much more complex, but also more
 	useful.  It parses a unified diff to see if any lines add
 	trailing whitespace, and prints the name of the file and the
 	line number of each such occurrence.  Even better, if the
@@ -692,7 +692,7 @@
 
 &interaction.hook.ws.better;
 
-      <para>As a final aside, note in the example above the use of
+      <para id="x_237">As a final aside, note in the example above the use of
 	<command>perl</command>'s in-place editing feature to get rid
 	of trailing whitespace from a file.  This is concise and
 	useful enough that I will reproduce it here.
@@ -704,7 +704,7 @@
   <sect1>
     <title>Bundled hooks</title>
 
-    <para>Mercurial ships with several bundled hooks.  You can find
+    <para id="x_238">Mercurial ships with several bundled hooks.  You can find
       them in the <filename class="directory">hgext</filename>
       directory of a Mercurial source tree.  If you are using a
       Mercurial binary package, the hooks will be located in the
@@ -716,7 +716,7 @@
       <title><literal role="hg-ext">acl</literal>&emdash;access
 	control for parts of a repository</title>
 
-      <para>The <literal role="hg-ext">acl</literal> extension lets
+      <para id="x_239">The <literal role="hg-ext">acl</literal> extension lets
 	you control which remote users are allowed to push changesets
 	to a networked server.  You can protect any portion of a
 	repository (including the entire repo), so that a specific
@@ -724,7 +724,7 @@
 	portion.
       </para>
 
-      <para>This extension implements access control based on the
+      <para id="x_23a">This extension implements access control based on the
 	identity of the user performing a push,
 	<emphasis>not</emphasis> on who committed the changesets
 	they're pushing.  It makes sense to use this hook only if you
@@ -737,7 +737,7 @@
 	<title>Configuring the <literal role="hook">acl</literal>
 	  hook</title>
 
-	<para>In order to manage incoming changesets, the <literal
+	<para id="x_23b">In order to manage incoming changesets, the <literal
 	    role="hg-ext">acl</literal> hook must be used as a
 	  <literal role="hook">pretxnchangegroup</literal> hook.  This
 	  lets it see which files are modified by each incoming
@@ -747,18 +747,18 @@
 	<programlisting>[hooks]
 pretxnchangegroup.acl = python:hgext.acl.hook</programlisting>
 
-	<para>The <literal role="hg-ext">acl</literal> extension is
+	<para id="x_23c">The <literal role="hg-ext">acl</literal> extension is
 	  configured using three sections.
 	</para>
 
-	<para>The <literal role="rc-acl">acl</literal> section has
+	<para id="x_23d">The <literal role="rc-acl">acl</literal> section has
 	  only one entry, <envar role="rc-item-acl">sources</envar>,
 	  which lists the sources of incoming changesets that the hook
 	  should pay attention to.  You don't normally need to
 	  configure this section.
 	</para>
 	<itemizedlist>
-	  <listitem><para><envar role="rc-item-acl">serve</envar>:
+	  <listitem><para id="x_23e"><envar role="rc-item-acl">serve</envar>:
 	      Control incoming changesets that are arriving from a
 	      remote repository over http or ssh.  This is the default
 	      value of <envar role="rc-item-acl">sources</envar>, and
@@ -766,23 +766,23 @@
 	      configuration item.
 	    </para>
 	  </listitem>
-	  <listitem><para><envar role="rc-item-acl">pull</envar>:
+	  <listitem><para id="x_23f"><envar role="rc-item-acl">pull</envar>:
 	      Control incoming changesets that are arriving via a pull
 	      from a local repository.
 	    </para>
 	  </listitem>
-	  <listitem><para><envar role="rc-item-acl">push</envar>:
+	  <listitem><para id="x_240"><envar role="rc-item-acl">push</envar>:
 	      Control incoming changesets that are arriving via a push
 	      from a local repository.
 	    </para>
 	  </listitem>
-	  <listitem><para><envar role="rc-item-acl">bundle</envar>:
+	  <listitem><para id="x_241"><envar role="rc-item-acl">bundle</envar>:
 	      Control incoming changesets that are arriving from
 	      another repository via a bundle.
 	    </para>
 	  </listitem></itemizedlist>
 
-	<para>The <literal role="rc-acl.allow">acl.allow</literal>
+	<para id="x_242">The <literal role="rc-acl.allow">acl.allow</literal>
 	  section controls the users that are allowed to add
 	  changesets to the repository.  If this section is not
 	  present, all users that are not explicitly denied are
@@ -791,13 +791,13 @@
 	  that all users are denied).
 	</para>
 
-	<para>The <literal role="rc-acl.deny">acl.deny</literal>
+	<para id="x_243">The <literal role="rc-acl.deny">acl.deny</literal>
 	  section determines which users are denied from adding
 	  changesets to the repository.  If this section is not
 	  present or is empty, no users are denied.
 	</para>
 
-	<para>The syntaxes for the <literal
+	<para id="x_244">The syntaxes for the <literal
 	    role="rc-acl.allow">acl.allow</literal> and <literal
 	    role="rc-acl.deny">acl.deny</literal> sections are
 	  identical.  On the left of each entry is a glob pattern that
@@ -805,7 +805,7 @@
 	  repository; on the right, a user name.
 	</para>
 
-	<para>In the following example, the user
+	<para id="x_245">In the following example, the user
 	  <literal>docwriter</literal> can only push changes to the
 	  <filename class="directory">docs</filename> subtree of the
 	  repository, while <literal>intern</literal> can push changes
@@ -821,7 +821,7 @@
       <sect3>
 	<title>Testing and troubleshooting</title>
 
-	<para>If you want to test the <literal
+	<para id="x_246">If you want to test the <literal
 	    role="hg-ext">acl</literal> hook, run it with Mercurial's
 	  debugging output enabled.  Since you'll probably be running
 	  it on a server where it's not convenient (or sometimes
@@ -832,7 +832,7 @@
 	</para>
 	<programlisting>[ui]
 debug = true</programlisting>
-	<para>With this enabled, the <literal
+	<para id="x_247">With this enabled, the <literal
 	    role="hg-ext">acl</literal> hook will print enough
 	  information to let you figure out why it is allowing or
 	  forbidding pushes from specific users.
@@ -845,14 +845,14 @@
 	  role="hg-ext">bugzilla</literal>&emdash;integration with
 	Bugzilla</title>
 
-      <para>The <literal role="hg-ext">bugzilla</literal> extension
+      <para id="x_248">The <literal role="hg-ext">bugzilla</literal> extension
 	adds a comment to a Bugzilla bug whenever it finds a reference
 	to that bug ID in a commit comment.  You can install this hook
 	on a shared server, so that any time a remote user pushes
 	changes to this server, the hook gets run.
       </para>
 
-      <para>It adds a comment to the bug that looks like this (you can
+      <para id="x_249">It adds a comment to the bug that looks like this (you can
 	configure the contents of the comment&emdash;see below):
       </para>
       <programlisting>Changeset aad8b264143a, made by Joe User
@@ -861,19 +861,19 @@
 	http://hg.domain.com/frobnitz?cmd=changeset;node=aad8b264143a
 	Changeset description: Fix bug 10483 by guarding against some
 	NULL pointers</programlisting>
-      <para>The value of this hook is that it automates the process of
+      <para id="x_24a">The value of this hook is that it automates the process of
 	updating a bug any time a changeset refers to it.  If you
 	configure the hook properly, it makes it easy for people to
 	browse straight from a Bugzilla bug to a changeset that refers
 	to that bug.
       </para>
 
-      <para>You can use the code in this hook as a starting point for
+      <para id="x_24b">You can use the code in this hook as a starting point for
 	some more exotic Bugzilla integration recipes.  Here are a few
 	possibilities:
       </para>
       <itemizedlist>
-	<listitem><para>Require that every changeset pushed to the
+	<listitem><para id="x_24c">Require that every changeset pushed to the
 	    server have a valid bug ID in its commit comment.  In this
 	    case, you'd want to configure the hook as a <literal
 	      role="hook">pretxncommit</literal> hook.  This would
@@ -881,7 +881,7 @@
 	    IDs.
 	  </para>
 	</listitem>
-	<listitem><para>Allow incoming changesets to automatically
+	<listitem><para id="x_24d">Allow incoming changesets to automatically
 	    modify the <emphasis>state</emphasis> of a bug, as well as
 	    simply adding a comment.  For example, the hook could
 	    recognise the string <quote>fixed bug 31337</quote> as
@@ -890,11 +890,11 @@
 	  </para>
 	</listitem></itemizedlist>
 
-      <sect3 id="sec.hook.bugzilla.config">
+      <sect3 id="sec:hook:bugzilla:config">
 	<title>Configuring the <literal role="hook">bugzilla</literal>
 	  hook</title>
 
-	<para>You should configure this hook in your server's
+	<para id="x_24e">You should configure this hook in your server's
 	  <filename role="special">~/.hgrc</filename> as an <literal
 	    role="hook">incoming</literal> hook, for example as
 	  follows:
@@ -902,25 +902,25 @@
 	<programlisting>[hooks]
 incoming.bugzilla = python:hgext.bugzilla.hook</programlisting>
 
-	<para>Because of the specialised nature of this hook, and
+	<para id="x_24f">Because of the specialised nature of this hook, and
 	  because Bugzilla was not written with this kind of
 	  integration in mind, configuring this hook is a somewhat
 	  involved process.
 	</para>
 
-	<para>Before you begin, you must install the MySQL bindings
+	<para id="x_250">Before you begin, you must install the MySQL bindings
 	  for Python on the host(s) where you'll be running the hook.
 	  If this is not available as a binary package for your
 	  system, you can download it from
 	  <citation>web:mysql-python</citation>.
 	</para>
 
-	<para>Configuration information for this hook lives in the
+	<para id="x_251">Configuration information for this hook lives in the
 	  <literal role="rc-bugzilla">bugzilla</literal> section of
 	  your <filename role="special">~/.hgrc</filename>.
 	</para>
 	<itemizedlist>
-	  <listitem><para><envar
+	  <listitem><para id="x_252"><envar
 		role="rc-item-bugzilla">version</envar>: The version
 	      of Bugzilla installed on the server.  The database
 	      schema that Bugzilla uses changes occasionally, so this
@@ -929,14 +929,14 @@
 	      <literal>2.16</literal>.
 	    </para>
 	  </listitem>
-	  <listitem><para><envar role="rc-item-bugzilla">host</envar>:
+	  <listitem><para id="x_253"><envar role="rc-item-bugzilla">host</envar>:
 	      The hostname of the MySQL server that stores your
 	      Bugzilla data.  The database must be configured to allow
 	      connections from whatever host you are running the
 	      <literal role="hook">bugzilla</literal> hook on.
 	    </para>
 	  </listitem>
-	  <listitem><para><envar role="rc-item-bugzilla">user</envar>:
+	  <listitem><para id="x_254"><envar role="rc-item-bugzilla">user</envar>:
 	      The username with which to connect to the MySQL server.
 	      The database must be configured to allow this user to
 	      connect from whatever host you are running the <literal
@@ -947,7 +947,7 @@
 	      MySQL database.
 	    </para>
 	  </listitem>
-	  <listitem><para><envar
+	  <listitem><para id="x_255"><envar
 		role="rc-item-bugzilla">password</envar>: The MySQL
 	      password for the user you configured above.  This is
 	      stored as plain text, so you should make sure that
@@ -956,14 +956,14 @@
 	      store this information.
 	    </para>
 	  </listitem>
-	  <listitem><para><envar role="rc-item-bugzilla">db</envar>:
+	  <listitem><para id="x_256"><envar role="rc-item-bugzilla">db</envar>:
 	      The name of the Bugzilla database on the MySQL server.
 	      The default value of this item is
 	      <literal>bugs</literal>, which is the standard name of
 	      the MySQL database where Bugzilla stores its data.
 	    </para>
 	  </listitem>
-	  <listitem><para><envar
+	  <listitem><para id="x_257"><envar
 		role="rc-item-bugzilla">notify</envar>: If you want
 	      Bugzilla to send out a notification email to subscribers
 	      after this hook has added a comment to a bug, you will
@@ -976,7 +976,7 @@
 	    <programlisting>cd /var/www/html/bugzilla &amp;&amp;
 	      ./processmail %s nobody@nowhere.com</programlisting>
 	  </listitem>
-	  <listitem><para>  The Bugzilla
+	  <listitem><para id="x_258">  The Bugzilla
 	      <literal>processmail</literal> program expects to be
 	      given a bug ID (the hook replaces
 	      <quote><literal>%s</literal></quote> with the bug ID)
@@ -993,7 +993,7 @@
       <sect3>
 	<title>Mapping committer names to Bugzilla user names</title>
 
-	<para>By default, the <literal
+	<para id="x_259">By default, the <literal
 	    role="hg-ext">bugzilla</literal> hook tries to use the
 	  email address of a changeset's committer as the Bugzilla
 	  user name with which to update a bug.  If this does not suit
@@ -1002,14 +1002,14 @@
 	    role="rc-usermap">usermap</literal> section.
 	</para>
 
-	<para>Each item in the <literal
+	<para id="x_25a">Each item in the <literal
 	    role="rc-usermap">usermap</literal> section contains an
 	  email address on the left, and a Bugzilla user name on the
 	  right.
 	</para>
 	<programlisting>[usermap]
 jane.user@example.com = jane</programlisting>
-	<para>You can either keep the <literal
+	<para id="x_25b">You can either keep the <literal
 	    role="rc-usermap">usermap</literal> data in a normal
 	  <filename role="special">~/.hgrc</filename>, or tell the
 	  <literal role="hg-ext">bugzilla</literal> hook to read the
@@ -1025,7 +1025,7 @@
 	<programlisting># regular hgrc file refers to external usermap file
 [bugzilla]
 usermap = /home/hg/repos/userdata/bugzilla-usermap.conf</programlisting>
-	<para>While the <filename>usermap</filename> file that it
+	<para id="x_25c">While the <filename>usermap</filename> file that it
 	  refers to might look like this:
 	</para>
 	<programlisting># bugzilla-usermap.conf - inside a hg repository
@@ -1035,14 +1035,14 @@
       <sect3>
 	<title>Configuring the text that gets added to a bug</title>
 
-	<para>You can configure the text that this hook adds as a
+	<para id="x_25d">You can configure the text that this hook adds as a
 	  comment; you specify it in the form of a Mercurial template.
 	  Several <filename role="special">~/.hgrc</filename> entries
 	  (still in the <literal role="rc-bugzilla">bugzilla</literal>
 	  section) control this behaviour.
 	</para>
 	<itemizedlist>
-	  <listitem><para><literal>strip</literal>: The number of
+	  <listitem><para id="x_25e"><literal>strip</literal>: The number of
 	      leading path elements to strip from a repository's path
 	      name to construct a partial path for a URL. For example,
 	      if the repositories on your server live under <filename
@@ -1056,7 +1056,7 @@
 	      expanding a template, as <literal>webroot</literal>.
 	    </para>
 	  </listitem>
-	  <listitem><para><literal>template</literal>: The text of the
+	  <listitem><para id="x_25f"><literal>template</literal>: The text of the
 	      template to use.  In addition to the usual
 	      changeset-related variables, this template can use
 	      <literal>hgweb</literal> (the value of the
@@ -1066,7 +1066,7 @@
 	    </para>
 	  </listitem></itemizedlist>
 
-	<para>In addition, you can add a <envar
+	<para id="x_260">In addition, you can add a <envar
 	    role="rc-item-web">baseurl</envar> item to the <literal
 	    role="rc-web">web</literal> section of your <filename
 	    role="special">~/.hgrc</filename>.  The <literal
@@ -1078,24 +1078,24 @@
 	<programlisting>[web]
 baseurl = http://hg.domain.com/</programlisting>
 
-	<para>Here is an example set of <literal
+	<para id="x_261">Here is an example set of <literal
 	    role="hg-ext">bugzilla</literal> hook config information.
 	</para>
 
-	<programlisting>&ch10-bugzilla-config.lst;</programlisting>
+	&ch10-bugzilla-config.lst;
 
       </sect3>
       <sect3>
 	<title>Testing and troubleshooting</title>
 
-	<para>The most common problems with configuring the <literal
+	<para id="x_262">The most common problems with configuring the <literal
 	    role="hg-ext">bugzilla</literal> hook relate to running
 	  Bugzilla's <filename>processmail</filename> script and
 	  mapping committer names to user names.
 	</para>
 
-	<para>Recall from section <xref
-	    linkend="sec.hook.bugzilla.config"/> above that the user
+	<para id="x_263">Recall from <xref
+	    linkend="sec:hook:bugzilla:config"/> above that the user
 	  that runs the Mercurial process on the server is also the
 	  one that will run the <filename>processmail</filename>
 	  script.  The <filename>processmail</filename> script
@@ -1105,19 +1105,19 @@
 	  under.
 	</para>
 
-	<para>You can cause <filename>processmail</filename> to be run
+	<para id="x_264">You can cause <filename>processmail</filename> to be run
 	  with the suitable user's identity using the
 	  <command>sudo</command> command.  Here is an example entry
 	  for a <filename>sudoers</filename> file.
 	</para>
 	<programlisting>hg_user = (httpd_user)
 NOPASSWD: /var/www/html/bugzilla/processmail-wrapper %s</programlisting>
-	<para>This allows the <literal>hg_user</literal> user to run a
+	<para id="x_265">This allows the <literal>hg_user</literal> user to run a
 	  <filename>processmail-wrapper</filename> program under the
 	  identity of <literal>httpd_user</literal>.
 	</para>
 
-	<para>This indirection through a wrapper script is necessary,
+	<para id="x_266">This indirection through a wrapper script is necessary,
 	  because <filename>processmail</filename> expects to be run
 	  with its current directory set to wherever you installed
 	  Bugzilla; you can't specify that kind of constraint in a
@@ -1126,18 +1126,18 @@
 	</para>
 	<programlisting>#!/bin/sh
 cd `dirname $0` &amp;&amp; ./processmail "$1" nobody@example.com</programlisting>
-	<para>It doesn't seem to matter what email address you pass to
+	<para id="x_267">It doesn't seem to matter what email address you pass to
 	  <filename>processmail</filename>.
 	</para>
 
-	<para>If your <literal role="rc-usermap">usermap</literal> is
+	<para id="x_268">If your <literal role="rc-usermap">usermap</literal> is
 	  not set up correctly, users will see an error message from
 	  the <literal role="hg-ext">bugzilla</literal> hook when they
 	  push changes to the server.  The error message will look
 	  like this:
 	</para>
 	<programlisting>cannot find bugzilla user id for john.q.public@example.com</programlisting>
-	<para>What this means is that the committer's address,
+	<para id="x_269">What this means is that the committer's address,
 	  <literal>john.q.public@example.com</literal>, is not a valid
 	  Bugzilla user name, nor does it have an entry in your
 	  <literal role="rc-usermap">usermap</literal> that maps it to
@@ -1150,7 +1150,7 @@
       <title><literal role="hg-ext">notify</literal>&emdash;send email
 	notifications</title>
 
-      <para>Although Mercurial's built-in web server provides RSS
+      <para id="x_26a">Although Mercurial's built-in web server provides RSS
 	feeds of changes in every repository, many people prefer to
 	receive change notifications via email.  The <literal
 	  role="hg-ext">notify</literal> hook lets you send out
@@ -1158,13 +1158,13 @@
 	arrive that those subscribers are interested in.
       </para>
 
-      <para>As with the <literal role="hg-ext">bugzilla</literal>
+      <para id="x_26b">As with the <literal role="hg-ext">bugzilla</literal>
 	hook, the <literal role="hg-ext">notify</literal> hook is
 	template-driven, so you can customise the contents of the
 	notification messages that it sends.
       </para>
 
-      <para>By default, the <literal role="hg-ext">notify</literal>
+      <para id="x_26c">By default, the <literal role="hg-ext">notify</literal>
 	hook includes a diff of every changeset that it sends out; you
 	can limit the size of the diff, or turn this feature off
 	entirely.  It is useful for letting subscribers review changes
@@ -1175,7 +1175,7 @@
 	<title>Configuring the <literal role="hg-ext">notify</literal>
 	  hook</title>
 
-	<para>You can set up the <literal
+	<para id="x_26d">You can set up the <literal
 	    role="hg-ext">notify</literal> hook to send one email
 	  message per incoming changeset, or one per incoming group of
 	  changesets (all those that arrived in a single pull or
@@ -1187,12 +1187,12 @@
 # send one email per change
 incoming.notify = python:hgext.notify.hook</programlisting>
 
-	<para>Configuration information for this hook lives in the
+	<para id="x_26e">Configuration information for this hook lives in the
 	  <literal role="rc-notify">notify</literal> section of a
 	  <filename role="special">~/.hgrc</filename> file.
 	</para>
 	<itemizedlist>
-	  <listitem><para><envar role="rc-item-notify">test</envar>:
+	  <listitem><para id="x_26f"><envar role="rc-item-notify">test</envar>:
 	      By default, this hook does not send out email at all;
 	      instead, it prints the message that it
 	      <emphasis>would</emphasis> send.  Set this item to
@@ -1204,7 +1204,7 @@
 	      notifications while you debug your configuration.
 	    </para>
 	  </listitem>
-	  <listitem><para><envar role="rc-item-notify">config</envar>:
+	  <listitem><para id="x_270"><envar role="rc-item-notify">config</envar>:
 	      The path to a configuration file that contains
 	      subscription information.  This is kept separate from
 	      the main <filename role="special">~/.hgrc</filename> so
@@ -1213,7 +1213,7 @@
 	      subscriptions, and push the changes back to your server.
 	    </para>
 	  </listitem>
-	  <listitem><para><envar role="rc-item-notify">strip</envar>:
+	  <listitem><para id="x_271"><envar role="rc-item-notify">strip</envar>:
 	      The number of leading path separator characters to strip
 	      from a repository's path, when deciding whether a
 	      repository has subscribers.  For example, if the
@@ -1230,13 +1230,13 @@
 	      match subscribers against that.
 	    </para>
 	  </listitem>
-	  <listitem><para><envar
+	  <listitem><para id="x_272"><envar
 		role="rc-item-notify">template</envar>: The template
 	      text to use when sending messages.  This specifies both
 	      the contents of the message header and its body.
 	    </para>
 	  </listitem>
-	  <listitem><para><envar
+	  <listitem><para id="x_273"><envar
 		role="rc-item-notify">maxdiff</envar>: The maximum
 	      number of lines of diff data to append to the end of a
 	      message.  If a diff is longer than this, it is
@@ -1245,41 +1245,40 @@
 	      emails.
 	    </para>
 	  </listitem>
-	  <listitem><para><envar
+	  <listitem><para id="x_274"><envar
 		role="rc-item-notify">sources</envar>: A list of
 	      sources of changesets to consider.  This lets you limit
 	      <literal role="hg-ext">notify</literal> to only sending
 	      out email about changes that remote users pushed into
-	      this repository via a server, for example.  See section
-	      <xref
-		linkend="sec.hook.sources"/> for the sources you can
-	      specify here.
+	      this repository via a server, for example.  See 
+	      <xref linkend="sec:hook:sources"/> for the sources you
+	      can specify here.
 	    </para>
 	  </listitem></itemizedlist>
 
-	<para>If you set the <envar role="rc-item-web">baseurl</envar>
+	<para id="x_275">If you set the <envar role="rc-item-web">baseurl</envar>
 	  item in the <literal role="rc-web">web</literal> section,
 	  you can use it in a template; it will be available as
 	  <literal>webroot</literal>.
 	</para>
 
-	<para>Here is an example set of <literal
+	<para id="x_276">Here is an example set of <literal
 	    role="hg-ext">notify</literal> configuration information.
 	</para>
 
-	<programlisting>&ch10-notify-config.lst;</programlisting>
+	&ch10-notify-config.lst;
 
-	<para>This will produce a message that looks like the
+	<para id="x_277">This will produce a message that looks like the
 	  following:
 	</para>
 
-	<programlisting>&ch10-notify-config-mail.lst;</programlisting>
+	&ch10-notify-config-mail.lst;
 
       </sect3>
       <sect3>
 	<title>Testing and troubleshooting</title>
 
-	<para>Do not forget that by default, the <literal
+	<para id="x_278">Do not forget that by default, the <literal
 		role="hg-ext">notify</literal> extension <emphasis>will not
 	  send any mail</emphasis> until you explicitly configure it to do so,
 	  by setting <envar role="rc-item-notify">test</envar> to
@@ -1290,17 +1289,17 @@
       </sect3>
     </sect2>
   </sect1>
-  <sect1 id="sec.hook.ref">
+  <sect1 id="sec:hook:ref">
     <title>Information for writers of hooks</title>
 
     <sect2>
       <title>In-process hook execution</title>
 
-      <para>An in-process hook is called with arguments of the
+      <para id="x_279">An in-process hook is called with arguments of the
 	following form:
       </para>
       <programlisting>def myhook(ui, repo, **kwargs): pass</programlisting>
-      <para>The <literal>ui</literal> parameter is a <literal
+      <para id="x_27a">The <literal>ui</literal> parameter is a <literal
 	  role="py-mod-mercurial.ui">ui</literal> object. The
 	<literal>repo</literal> parameter is a <literal
 	  role="py-mod-mercurial.localrepo">localrepository</literal>
@@ -1309,38 +1308,38 @@
 	being invoked, with the following common features:
       </para>
       <itemizedlist>
-	<listitem><para>If a parameter is named
+	<listitem><para id="x_27b">If a parameter is named
 	    <literal>node</literal> or <literal>parentN</literal>, it
 	    will contain a hexadecimal changeset ID. The empty string
 	    is used to represent <quote>null changeset ID</quote>
 	    instead of a string of zeroes.
 	  </para>
 	</listitem>
-	<listitem><para>If a parameter is named
+	<listitem><para id="x_27c">If a parameter is named
 	    <literal>url</literal>, it will contain the URL of a
 	    remote repository, if that can be determined.
 	  </para>
 	</listitem>
-	<listitem><para>Boolean-valued parameters are represented as
+	<listitem><para id="x_27d">Boolean-valued parameters are represented as
 	    Python <literal>bool</literal> objects.
 	  </para>
 	</listitem></itemizedlist>
 
-      <para>An in-process hook is called without a change to the
+      <para id="x_27e">An in-process hook is called without a change to the
 	process's working directory (unlike external hooks, which are
 	run in the root of the repository).  It must not change the
 	process's working directory, or it will cause any calls it
 	makes into the Mercurial API to fail.
       </para>
 
-      <para>If a hook returns a boolean <quote>false</quote> value, it
+      <para id="x_27f">If a hook returns a boolean <quote>false</quote> value, it
 	is considered to have succeeded.  If it returns a boolean
 	<quote>true</quote> value or raises an exception, it is
 	considered to have failed.  A useful way to think of the
 	calling convention is <quote>tell me if you fail</quote>.
       </para>
 
-      <para>Note that changeset IDs are passed into Python hooks as
+      <para id="x_280">Note that changeset IDs are passed into Python hooks as
 	hexadecimal strings, not the binary hashes that Mercurial's
 	APIs normally use.  To convert a hash from hex to binary, use
 	the <literal>bin</literal> function.
@@ -1350,7 +1349,7 @@
     <sect2>
       <title>External hook execution</title>
 
-      <para>An external hook is passed to the shell of the user
+      <para id="x_281">An external hook is passed to the shell of the user
 	running Mercurial. Features of that shell, such as variable
 	substitution and command redirection, are available.  The hook
 	is run in the root directory of the repository (unlike
@@ -1358,7 +1357,7 @@
 	Mercurial was run in).
       </para>
 
-      <para>Hook parameters are passed to the hook as environment
+      <para id="x_282">Hook parameters are passed to the hook as environment
 	variables.  Each environment variable's name is converted in
 	upper case and prefixed with the string
 	<quote><literal>HG_</literal></quote>.  For example, if the
@@ -1367,7 +1366,7 @@
 	parameter will be <quote><literal>HG_NODE</literal></quote>.
       </para>
 
-      <para>A boolean parameter is represented as the string
+      <para id="x_283">A boolean parameter is represented as the string
 	<quote><literal>1</literal></quote> for <quote>true</quote>,
 	<quote><literal>0</literal></quote> for <quote>false</quote>.
 	If an environment variable is named <envar>HG_NODE</envar>,
@@ -1379,7 +1378,7 @@
 	URL of a remote repository, if that can be determined.
       </para>
 
-      <para>If a hook exits with a status of zero, it is considered to
+      <para id="x_284">If a hook exits with a status of zero, it is considered to
 	have succeeded.  If it exits with a non-zero status, it is
 	considered to have failed.
       </para>
@@ -1388,7 +1387,7 @@
     <sect2>
       <title>Finding out where changesets come from</title>
 
-      <para>A hook that involves the transfer of changesets between a
+      <para id="x_285">A hook that involves the transfer of changesets between a
 	local repository and another may be able to find out
 	information about the <quote>far side</quote>.  Mercurial
 	knows <emphasis>how</emphasis> changes are being transferred,
@@ -1396,10 +1395,10 @@
 	transferred to or from.
       </para>
 
-      <sect3 id="sec.hook.sources">
+      <sect3 id="sec:hook:sources">
 	<title>Sources of changesets</title>
 
-	<para>Mercurial will tell a hook what means are, or were, used
+	<para id="x_286">Mercurial will tell a hook what means are, or were, used
 	  to transfer changesets between repositories.  This is
 	  provided by Mercurial in a Python parameter named
 	  <literal>source</literal>, or an environment variable named
@@ -1407,32 +1406,32 @@
 	</para>
 
 	<itemizedlist>
-	  <listitem><para><literal>serve</literal>: Changesets are
+	  <listitem><para id="x_287"><literal>serve</literal>: Changesets are
 	      transferred to or from a remote repository over http or
 	      ssh.
 	    </para>
 	  </listitem>
-	  <listitem><para><literal>pull</literal>: Changesets are
+	  <listitem><para id="x_288"><literal>pull</literal>: Changesets are
 	      being transferred via a pull from one repository into
 	      another.
 	    </para>
 	  </listitem>
-	  <listitem><para><literal>push</literal>: Changesets are
+	  <listitem><para id="x_289"><literal>push</literal>: Changesets are
 	      being transferred via a push from one repository into
 	      another.
 	    </para>
 	  </listitem>
-	  <listitem><para><literal>bundle</literal>: Changesets are
+	  <listitem><para id="x_28a"><literal>bundle</literal>: Changesets are
 	      being transferred to or from a bundle.
 	    </para>
 	  </listitem></itemizedlist>
 
       </sect3>
-      <sect3 id="sec.hook.url">
+      <sect3 id="sec:hook:url">
 	<title>Where changes are going&emdash;remote repository
 	  URLs</title>
 
-	<para>When possible, Mercurial will tell a hook the location
+	<para id="x_28b">When possible, Mercurial will tell a hook the location
 	  of the <quote>far side</quote> of an activity that transfers
 	  changeset data between repositories.  This is provided by
 	  Mercurial in a Python parameter named
@@ -1440,26 +1439,26 @@
 	  <envar>HG_URL</envar>.
 	</para>
 
-	<para>This information is not always known.  If a hook is
+	<para id="x_28c">This information is not always known.  If a hook is
 	  invoked in a repository that is being served via http or
 	  ssh, Mercurial cannot tell where the remote repository is,
 	  but it may know where the client is connecting from.  In
 	  such cases, the URL will take one of the following forms:
 	</para>
 	<itemizedlist>
-	  <listitem><para><literal>remote:ssh:1.2.3.4</literal>&emdash;remote 
+	  <listitem><para id="x_28d"><literal>remote:ssh:1.2.3.4</literal>&emdash;remote 
 	      ssh client, at the IP address
 	      <literal>1.2.3.4</literal>.
 	    </para>
 	  </listitem>
-	  <listitem><para><literal>remote:http:1.2.3.4</literal>&emdash;remote 
+	  <listitem><para id="x_28e"><literal>remote:http:1.2.3.4</literal>&emdash;remote 
 	      http client, at the IP address
 	      <literal>1.2.3.4</literal>.  If the client is using SSL,
 	      this will be of the form
 	      <literal>remote:https:1.2.3.4</literal>.
 	    </para>
 	  </listitem>
-	  <listitem><para>Empty&emdash;no information could be
+	  <listitem><para id="x_28f">Empty&emdash;no information could be
 	      discovered about the remote client.
 	    </para>
 	  </listitem></itemizedlist>
@@ -1470,11 +1469,11 @@
   <sect1>
     <title>Hook reference</title>
 
-    <sect2 id="sec.hook.changegroup">
+    <sect2 id="sec:hook:changegroup">
       <title><literal role="hook">changegroup</literal>&emdash;after
 	remote changesets added</title>
 
-      <para>This hook is run after a group of pre-existing changesets
+      <para id="x_290">This hook is run after a group of pre-existing changesets
 	has been added to the repository, for example via a <command
 	  role="hg-cmd">hg pull</command> or <command role="hg-cmd">hg
 	  unbundle</command>.  This hook is run once per operation
@@ -1484,16 +1483,16 @@
 	arrive in a group.
       </para>
 
-      <para>Some possible uses for this hook include kicking off an
+      <para id="x_291">Some possible uses for this hook include kicking off an
 	automated build or test of the added changesets, updating a
 	bug database, or notifying subscribers that a repository
 	contains new changes.
       </para>
 
-      <para>Parameters to this hook:
+      <para id="x_292">Parameters to this hook:
       </para>
       <itemizedlist>
-	<listitem><para><literal>node</literal>: A changeset ID.  The
+	<listitem><para id="x_293"><literal>node</literal>: A changeset ID.  The
 	    changeset ID of the first changeset in the group that was
 	    added.  All changesets between this and
 	    <literal role="tag">tip</literal>, inclusive, were added by a single
@@ -1502,130 +1501,131 @@
 	      role="hg-cmd">hg unbundle</command>.
 	  </para>
 	</listitem>
-	<listitem><para><literal>source</literal>: A string.  The
-	    source of these changes.  See section <xref
-	      linkend="sec.hook.sources"/> for details.
+	<listitem><para id="x_294"><literal>source</literal>: A
+	    string.  The source of these changes.  See <xref
+	      linkend="sec:hook:sources"/> for details.
 	  </para>
 	</listitem>
-	<listitem><para><literal>url</literal>: A URL.  The location
-	    of the remote repository, if known.  See section <xref
-	      linkend="sec.hook.url"/> for more
-	    information.
+	<listitem><para id="x_295"><literal>url</literal>: A URL.  The
+	    location of the remote repository, if known.  See <xref
+	      linkend="sec:hook:url"/> for more information.
 	  </para>
 	</listitem></itemizedlist>
 
-      <para>See also: <literal role="hook">incoming</literal> (section
-	<xref linkend="sec.hook.incoming"/>), <literal
-	  role="hook">prechangegroup</literal> (section <xref
-	  linkend="sec.hook.prechangegroup"/>), <literal
-	  role="hook">pretxnchangegroup</literal> (section <xref
-	  linkend="sec.hook.pretxnchangegroup"/>)
+      <para id="x_296">See also: <literal
+	  role="hook">incoming</literal> (<xref
+	  linkend="sec:hook:incoming"/>), <literal
+	  role="hook">prechangegroup</literal> (<xref
+	  linkend="sec:hook:prechangegroup"/>), <literal
+	  role="hook">pretxnchangegroup</literal> (<xref
+	  linkend="sec:hook:pretxnchangegroup"/>)
       </para>
 
     </sect2>
-    <sect2 id="sec.hook.commit">
+    <sect2 id="sec:hook:commit">
       <title><literal role="hook">commit</literal>&emdash;after a new
 	changeset is created</title>
 
-      <para>This hook is run after a new changeset has been created.
+      <para id="x_297">This hook is run after a new changeset has been created.
       </para>
 
-      <para>Parameters to this hook:
+      <para id="x_298">Parameters to this hook:
       </para>
       <itemizedlist>
-	<listitem><para><literal>node</literal>: A changeset ID.  The
+	<listitem><para id="x_299"><literal>node</literal>: A changeset ID.  The
 	    changeset ID of the newly committed changeset.
 	  </para>
 	</listitem>
-	<listitem><para><literal>parent1</literal>: A changeset ID.
+	<listitem><para id="x_29a"><literal>parent1</literal>: A changeset ID.
 	    The changeset ID of the first parent of the newly
 	    committed changeset.
 	  </para>
 	</listitem>
-	<listitem><para><literal>parent2</literal>: A changeset ID.
+	<listitem><para id="x_29b"><literal>parent2</literal>: A changeset ID.
 	    The changeset ID of the second parent of the newly
 	    committed changeset.
 	  </para>
 	</listitem></itemizedlist>
 
-      <para>See also: <literal role="hook">precommit</literal>
-	(section <xref linkend="sec.hook.precommit"/>), <literal
-	  role="hook">pretxncommit</literal> (section <xref
-	  linkend="sec.hook.pretxncommit"/>)
+      <para id="x_29c">See also: <literal
+	  role="hook">precommit</literal> (<xref
+	  linkend="sec:hook:precommit"/>), <literal
+	  role="hook">pretxncommit</literal> (<xref
+	  linkend="sec:hook:pretxncommit"/>)
       </para>
 
     </sect2>
-    <sect2 id="sec.hook.incoming">
+    <sect2 id="sec:hook:incoming">
       <title><literal role="hook">incoming</literal>&emdash;after one
 	remote changeset is added</title>
 
-      <para>This hook is run after a pre-existing changeset has been
+      <para id="x_29d">This hook is run after a pre-existing changeset has been
 	added to the repository, for example via a <command
 	  role="hg-cmd">hg push</command>.  If a group of changesets
 	was added in a single operation, this hook is called once for
 	each added changeset.
       </para>
 
-      <para>You can use this hook for the same purposes as the
-	<literal role="hook">changegroup</literal> hook (section <xref
-	  linkend="sec.hook.changegroup"/>); it's simply
-	more convenient sometimes to run a hook once per group of
+      <para id="x_29e">You can use this hook for the same purposes as
+	the <literal role="hook">changegroup</literal> hook (<xref
+	  linkend="sec:hook:changegroup"/>); it's simply more
+	convenient sometimes to run a hook once per group of
 	changesets, while other times it's handier once per changeset.
       </para>
 
-      <para>Parameters to this hook:
+      <para id="x_29f">Parameters to this hook:
       </para>
       <itemizedlist>
-	<listitem><para><literal>node</literal>: A changeset ID.  The
+	<listitem><para id="x_2a0"><literal>node</literal>: A changeset ID.  The
 	    ID of the newly added changeset.
 	  </para>
 	</listitem>
-	<listitem><para><literal>source</literal>: A string.  The
-	    source of these changes.  See section <xref
-	      linkend="sec.hook.sources"/> for details.
+	<listitem><para id="x_2a1"><literal>source</literal>: A
+	    string.  The source of these changes.  See <xref
+	      linkend="sec:hook:sources"/> for details.
 	  </para>
 	</listitem>
-	<listitem><para><literal>url</literal>: A URL.  The location
-	    of the remote repository, if known.  See section <xref
-	      linkend="sec.hook.url"/> for more
-	    information.
+	<listitem><para id="x_2a2"><literal>url</literal>: A URL.  The
+	    location of the remote repository, if known.  See <xref
+	      linkend="sec:hook:url"/> for more information.
 	  </para>
 	</listitem></itemizedlist>
 
-      <para>See also: <literal role="hook">changegroup</literal>
-	(section <xref linkend="sec.hook.changegroup"/>) <literal
-	  role="hook">prechangegroup</literal> (section <xref
-	  linkend="sec.hook.prechangegroup"/>), <literal
-	  role="hook">pretxnchangegroup</literal> (section <xref
-	  linkend="sec.hook.pretxnchangegroup"/>)
+      <para id="x_2a3">See also: <literal
+	  role="hook">changegroup</literal> (<xref
+	  linkend="sec:hook:changegroup"/>) <literal
+	  role="hook">prechangegroup</literal> (<xref
+	  linkend="sec:hook:prechangegroup"/>), <literal
+	  role="hook">pretxnchangegroup</literal> (<xref
+	  linkend="sec:hook:pretxnchangegroup"/>)
       </para>
 
     </sect2>
-    <sect2 id="sec.hook.outgoing">
+    <sect2 id="sec:hook:outgoing">
       <title><literal role="hook">outgoing</literal>&emdash;after
 	changesets are propagated</title>
 
-      <para>This hook is run after a group of changesets has been
+      <para id="x_2a4">This hook is run after a group of changesets has been
 	propagated out of this repository, for example by a <command
 	  role="hg-cmd">hg push</command> or <command role="hg-cmd">hg
 	  bundle</command> command.
       </para>
 
-      <para>One possible use for this hook is to notify administrators
+      <para id="x_2a5">One possible use for this hook is to notify administrators
 	that changes have been pulled.
       </para>
 
-      <para>Parameters to this hook:
+      <para id="x_2a6">Parameters to this hook:
       </para>
       <itemizedlist>
-	<listitem><para><literal>node</literal>: A changeset ID.  The
+	<listitem><para id="x_2a7"><literal>node</literal>: A changeset ID.  The
 	    changeset ID of the first changeset of the group that was
 	    sent.
 	  </para>
 	</listitem>
-	<listitem><para><literal>source</literal>: A string.  The
-	    source of the of the operation (see section <xref
-	      linkend="sec.hook.sources"/>).  If a remote
+	<listitem><para id="x_2a8"><literal>source</literal>: A string.  The
+	    source of the of the operation (see <xref
+	      linkend="sec:hook:sources"/>).  If a remote
 	    client pulled changes from this repository,
 	    <literal>source</literal> will be
 	    <literal>serve</literal>.  If the client that obtained
@@ -1636,187 +1636,187 @@
 	    client performed.
 	  </para>
 	</listitem>
-	<listitem><para><literal>url</literal>: A URL.  The location
-	    of the remote repository, if known.  See section <xref
-	      linkend="sec.hook.url"/> for more
-	    information.
+	<listitem><para id="x_2a9"><literal>url</literal>: A URL.  The
+	    location of the remote repository, if known.  See <xref
+	      linkend="sec:hook:url"/> for more information.
 	  </para>
 	</listitem></itemizedlist>
 
-      <para>See also: <literal role="hook">preoutgoing</literal>
-	(section <xref linkend="sec.hook.preoutgoing"/>)
+      <para id="x_2aa">See also: <literal
+	  role="hook">preoutgoing</literal> (<xref
+	  linkend="sec:hook:preoutgoing"/>)
       </para>
 
     </sect2>
-    <sect2 id="sec.hook.prechangegroup">
+    <sect2 id="sec:hook:prechangegroup">
       <title><literal
 	  role="hook">prechangegroup</literal>&emdash;before starting
 	to add remote changesets</title>
 
-      <para>This controlling hook is run before Mercurial begins to
+      <para id="x_2ab">This controlling hook is run before Mercurial begins to
 	add a group of changesets from another repository.
       </para>
 
-      <para>This hook does not have any information about the
+      <para id="x_2ac">This hook does not have any information about the
 	changesets to be added, because it is run before transmission
 	of those changesets is allowed to begin.  If this hook fails,
 	the changesets will not be transmitted.
       </para>
 
-      <para>One use for this hook is to prevent external changes from
+      <para id="x_2ad">One use for this hook is to prevent external changes from
 	being added to a repository.  For example, you could use this
 	to <quote>freeze</quote> a server-hosted branch temporarily or
 	permanently so that users cannot push to it, while still
 	allowing a local administrator to modify the repository.
       </para>
 
-      <para>Parameters to this hook:
+      <para id="x_2ae">Parameters to this hook:
       </para>
       <itemizedlist>
-	<listitem><para><literal>source</literal>: A string.  The
-	    source of these changes.  See section <xref
-	      linkend="sec.hook.sources"/> for details.
+	<listitem><para id="x_2af"><literal>source</literal>: A string.  The
+	    source of these changes.  See <xref
+	      linkend="sec:hook:sources"/> for details.
 	  </para>
 	</listitem>
-	<listitem><para><literal>url</literal>: A URL.  The location
-	    of the remote repository, if known.  See section <xref
-	      linkend="sec.hook.url"/> for more
-	    information.
+	<listitem><para id="x_2b0"><literal>url</literal>: A URL.  The
+	    location of the remote repository, if known.  See <xref
+	      linkend="sec:hook:url"/> for more information.
 	  </para>
 	</listitem></itemizedlist>
 
-      <para>See also: <literal role="hook">changegroup</literal>
-	(section <xref linkend="sec.hook.changegroup"/>), <literal
-	  role="hook">incoming</literal> (section <xref
-	  linkend="sec.hook.incoming"/>), , <literal
-	  role="hook">pretxnchangegroup</literal> (section <xref
-	  linkend="sec.hook.pretxnchangegroup"/>)
+      <para id="x_2b1">See also: <literal
+	  role="hook">changegroup</literal> (<xref
+	  linkend="sec:hook:changegroup"/>), <literal
+	  role="hook">incoming</literal> (<xref
+	  linkend="sec:hook:incoming"/>), <literal
+	  role="hook">pretxnchangegroup</literal> (<xref
+	  linkend="sec:hook:pretxnchangegroup"/>)
       </para>
 
     </sect2>
-    <sect2 id="sec.hook.precommit">
+    <sect2 id="sec:hook:precommit">
       <title><literal role="hook">precommit</literal>&emdash;before
 	starting to commit a changeset</title>
 
-      <para>This hook is run before Mercurial begins to commit a new
+      <para id="x_2b2">This hook is run before Mercurial begins to commit a new
 	changeset. It is run before Mercurial has any of the metadata
 	for the commit, such as the files to be committed, the commit
 	message, or the commit date.
       </para>
 
-      <para>One use for this hook is to disable the ability to commit
+      <para id="x_2b3">One use for this hook is to disable the ability to commit
 	new changesets, while still allowing incoming changesets.
 	Another is to run a build or test, and only allow the commit
 	to begin if the build or test succeeds.
       </para>
 
-      <para>Parameters to this hook:
+      <para id="x_2b4">Parameters to this hook:
       </para>
       <itemizedlist>
-	<listitem><para><literal>parent1</literal>: A changeset ID.
+	<listitem><para id="x_2b5"><literal>parent1</literal>: A changeset ID.
 	    The changeset ID of the first parent of the working
 	    directory.
 	  </para>
 	</listitem>
-	<listitem><para><literal>parent2</literal>: A changeset ID.
+	<listitem><para id="x_2b6"><literal>parent2</literal>: A changeset ID.
 	    The changeset ID of the second parent of the working
 	    directory.
 	  </para>
 	</listitem></itemizedlist>
-      <para>If the commit proceeds, the parents of the working
+      <para id="x_2b7">If the commit proceeds, the parents of the working
 	directory will become the parents of the new changeset.
       </para>
 
-      <para>See also: <literal role="hook">commit</literal> (section
-	<xref linkend="sec.hook.commit"/>), <literal
-	  role="hook">pretxncommit</literal> (section <xref
-	  linkend="sec.hook.pretxncommit"/>)
+      <para id="x_2b8">See also: <literal role="hook">commit</literal>
+	(<xref linkend="sec:hook:commit"/>), <literal
+	  role="hook">pretxncommit</literal> (<xref
+	  linkend="sec:hook:pretxncommit"/>)
       </para>
 
     </sect2>
-    <sect2 id="sec.hook.preoutgoing">
+    <sect2 id="sec:hook:preoutgoing">
       <title><literal role="hook">preoutgoing</literal>&emdash;before
 	starting to propagate changesets</title>
 
-      <para>This hook is invoked before Mercurial knows the identities
+      <para id="x_2b9">This hook is invoked before Mercurial knows the identities
 	of the changesets to be transmitted.
       </para>
 
-      <para>One use for this hook is to prevent changes from being
+      <para id="x_2ba">One use for this hook is to prevent changes from being
 	transmitted to another repository.
       </para>
 
-      <para>Parameters to this hook:
+      <para id="x_2bb">Parameters to this hook:
       </para>
       <itemizedlist>
-	<listitem><para><literal>source</literal>: A string.  The
-	    source of the operation that is attempting to obtain
-	    changes from this repository (see section <xref
-	      linkend="sec.hook.sources"/>).  See the documentation
+	<listitem><para id="x_2bc"><literal>source</literal>: A
+	    string.  The source of the operation that is attempting to
+	    obtain changes from this repository (see <xref
+	      linkend="sec:hook:sources"/>).  See the documentation
 	    for the <literal>source</literal> parameter to the
-	    <literal role="hook">outgoing</literal> hook, in section
-	    <xref linkend="sec.hook.outgoing"/>, for possible values
-	    of
-	    this parameter.
+	    <literal role="hook">outgoing</literal> hook, in
+	    <xref linkend="sec:hook:outgoing"/>, for possible values
+	    of this parameter.
 	  </para>
 	</listitem>
-	<listitem><para><literal>url</literal>: A URL.  The location
-	    of the remote repository, if known.  See section <xref
-	      linkend="sec.hook.url"/> for more
-	    information.
+	<listitem><para id="x_2bd"><literal>url</literal>: A URL.  The
+	    location of the remote repository, if known.  See <xref
+	      linkend="sec:hook:url"/> for more information.
 	  </para>
 	</listitem></itemizedlist>
 
-      <para>See also: <literal role="hook">outgoing</literal> (section
-	<xref linkend="sec.hook.outgoing"/>)
+      <para id="x_2be">See also: <literal
+	  role="hook">outgoing</literal> (<xref
+	  linkend="sec:hook:outgoing"/>)
       </para>
 
     </sect2>
-    <sect2 id="sec.hook.pretag">
+    <sect2 id="sec:hook:pretag">
       <title><literal role="hook">pretag</literal>&emdash;before
 	tagging a changeset</title>
 
-      <para>This controlling hook is run before a tag is created.  If
+      <para id="x_2bf">This controlling hook is run before a tag is created.  If
 	the hook succeeds, creation of the tag proceeds.  If the hook
 	fails, the tag is not created.
       </para>
 
-      <para>Parameters to this hook:
+      <para id="x_2c0">Parameters to this hook:
       </para>
       <itemizedlist>
-	<listitem><para><literal>local</literal>: A boolean.  Whether
+	<listitem><para id="x_2c1"><literal>local</literal>: A boolean.  Whether
 	    the tag is local to this repository instance (i.e. stored
 	    in <filename role="special">.hg/localtags</filename>) or
 	    managed by Mercurial (stored in <filename
 	      role="special">.hgtags</filename>).
 	  </para>
 	</listitem>
-	<listitem><para><literal>node</literal>: A changeset ID.  The
+	<listitem><para id="x_2c2"><literal>node</literal>: A changeset ID.  The
 	    ID of the changeset to be tagged.
 	  </para>
 	</listitem>
-	<listitem><para><literal>tag</literal>: A string.  The name of
+	<listitem><para id="x_2c3"><literal>tag</literal>: A string.  The name of
 	    the tag to be created.
 	  </para>
 	</listitem></itemizedlist>
 
-      <para>If the tag to be created is revision-controlled, the
-	<literal role="hook">precommit</literal> and <literal
-	  role="hook">pretxncommit</literal> hooks (sections <xref
-	  linkend="sec.hook.commit"/> and <xref
-	  linkend="sec.hook.pretxncommit"/>) will also be run.
+      <para id="x_2c4">If the tag to be created is
+	revision-controlled, the <literal
+	  role="hook">precommit</literal> and <literal
+	  role="hook">pretxncommit</literal> hooks (<xref
+	  linkend="sec:hook:commit"/> and <xref
+	  linkend="sec:hook:pretxncommit"/>) will also be run.
       </para>
 
-      <para>See also: <literal role="hook">tag</literal> (section
-	<xref linkend="sec.hook.tag"/>)
+      <para id="x_2c5">See also: <literal role="hook">tag</literal>
+	(<xref linkend="sec:hook:tag"/>)
       </para>
     </sect2>
-    <sect2 id="sec.hook.pretxnchangegroup">
+    <sect2 id="sec:hook:pretxnchangegroup">
       <title><literal
 	  role="hook">pretxnchangegroup</literal>&emdash;before
 	completing addition of remote changesets</title>
 
-      <para>This controlling hook is run before a
+      <para id="x_2c6">This controlling hook is run before a
 	transaction&emdash;that manages the addition of a group of new
 	changesets from outside the repository&emdash;completes.  If
 	the hook succeeds, the transaction completes, and all of the
@@ -1825,28 +1825,28 @@
 	the changesets is erased.
       </para>
 
-      <para>This hook can access the metadata associated with the
+      <para id="x_2c7">This hook can access the metadata associated with the
 	almost-added changesets, but it should not do anything
 	permanent with this data. It must also not modify the working
 	directory.
       </para>
 
-      <para>While this hook is running, if other Mercurial processes
+      <para id="x_2c8">While this hook is running, if other Mercurial processes
 	access this repository, they will be able to see the
 	almost-added changesets as if they are permanent.  This may
 	lead to race conditions if you do not take steps to avoid
 	them.
       </para>
 
-      <para>This hook can be used to automatically vet a group of
+      <para id="x_2c9">This hook can be used to automatically vet a group of
 	changesets.  If the hook fails, all of the changesets are
 	<quote>rejected</quote> when the transaction rolls back.
       </para>
 
-      <para>Parameters to this hook:
+      <para id="x_2ca">Parameters to this hook:
       </para>
       <itemizedlist>
-	<listitem><para><literal>node</literal>: A changeset ID.  The
+	<listitem><para id="x_2cb"><literal>node</literal>: A changeset ID.  The
 	    changeset ID of the first changeset in the group that was
 	    added.  All changesets between this and
 	    <literal role="tag">tip</literal>,
@@ -1856,32 +1856,32 @@
 	      role="hg-cmd">hg unbundle</command>.
 	  </para>
 	</listitem>
-	<listitem><para><literal>source</literal>: A string.  The
-	    source of these changes.  See section <xref
-	      linkend="sec.hook.sources"/> for details.
+	<listitem><para id="x_2cc"><literal>source</literal>: A
+	    string.  The source of these changes.  See <xref
+	      linkend="sec:hook:sources"/> for details.
 	  </para>
 	</listitem>
-	<listitem><para><literal>url</literal>: A URL.  The location
-	    of the remote repository, if known.  See section <xref
-	      linkend="sec.hook.url"/> for more
-	    information.
+	<listitem><para id="x_2cd"><literal>url</literal>: A URL.  The
+	    location of the remote repository, if known.  See <xref
+	      linkend="sec:hook:url"/> for more information.
 	  </para>
 	</listitem></itemizedlist>
 
-      <para>See also: <literal role="hook">changegroup</literal>
-	(section <xref linkend="sec.hook.changegroup"/>), <literal
-	  role="hook">incoming</literal> (section <xref
-	  linkend="sec.hook.incoming"/>), <literal
-	  role="hook">prechangegroup</literal> (section <xref
-	  linkend="sec.hook.prechangegroup"/>)
+      <para id="x_2ce">See also: <literal
+	  role="hook">changegroup</literal> (<xref
+	  linkend="sec:hook:changegroup"/>), <literal
+	  role="hook">incoming</literal> (<xref
+	  linkend="sec:hook:incoming"/>), <literal
+	  role="hook">prechangegroup</literal> (<xref
+	  linkend="sec:hook:prechangegroup"/>)
       </para>
 
     </sect2>
-    <sect2 id="sec.hook.pretxncommit">
+    <sect2 id="sec:hook:pretxncommit">
       <title><literal role="hook">pretxncommit</literal>&emdash;before
 	completing commit of new changeset</title>
 
-      <para>This controlling hook is run before a
+      <para id="x_2cf">This controlling hook is run before a
 	transaction&emdash;that manages a new commit&emdash;completes.
 	If the hook succeeds, the transaction completes and the
 	changeset becomes permanent within this repository.  If the
@@ -1889,84 +1889,85 @@
 	data is erased.
       </para>
 
-      <para>This hook can access the metadata associated with the
+      <para id="x_2d0">This hook can access the metadata associated with the
 	almost-new changeset, but it should not do anything permanent
 	with this data.  It must also not modify the working
 	directory.
       </para>
 
-      <para>While this hook is running, if other Mercurial processes
+      <para id="x_2d1">While this hook is running, if other Mercurial processes
 	access this repository, they will be able to see the
 	almost-new changeset as if it is permanent.  This may lead to
 	race conditions if you do not take steps to avoid them.
       </para>
 
-      <para>Parameters to this hook:
+      <para id="x_2d2">Parameters to this hook:
       </para>
       <itemizedlist>
-	<listitem><para><literal>node</literal>: A changeset ID.  The
+	<listitem><para id="x_2d3"><literal>node</literal>: A changeset ID.  The
 	    changeset ID of the newly committed changeset.
 	  </para>
 	</listitem>
-	<listitem><para><literal>parent1</literal>: A changeset ID.
+	<listitem><para id="x_2d4"><literal>parent1</literal>: A changeset ID.
 	    The changeset ID of the first parent of the newly
 	    committed changeset.
 	  </para>
 	</listitem>
-	<listitem><para><literal>parent2</literal>: A changeset ID.
+	<listitem><para id="x_2d5"><literal>parent2</literal>: A changeset ID.
 	    The changeset ID of the second parent of the newly
 	    committed changeset.
 	  </para>
 	</listitem></itemizedlist>
 
-      <para>See also: <literal role="hook">precommit</literal>
-	(section <xref linkend="sec.hook.precommit"/>)
+      <para id="x_2d6">See also: <literal
+	  role="hook">precommit</literal> (<xref
+	  linkend="sec:hook:precommit"/>)
       </para>
 
     </sect2>
-    <sect2 id="sec.hook.preupdate">
+    <sect2 id="sec:hook:preupdate">
       <title><literal role="hook">preupdate</literal>&emdash;before
 	updating or merging working directory</title>
 
-      <para>This controlling hook is run before an update or merge of
-	the working directory begins.  It is run only if Mercurial's
-	normal pre-update checks determine that the update or merge
-	can proceed.  If the hook succeeds, the update or merge may
-	proceed; if it fails, the update or merge does not start.
+      <para id="x_2d7">This controlling hook is run before an update
+	or merge of the working directory begins.  It is run only if
+	Mercurial's normal pre-update checks determine that the update
+	or merge can proceed.  If the hook succeeds, the update or
+	merge may proceed; if it fails, the update or merge does not
+	start.
       </para>
 
-      <para>Parameters to this hook:
+      <para id="x_2d8">Parameters to this hook:
       </para>
       <itemizedlist>
-	<listitem><para><literal>parent1</literal>: A changeset ID.
-	    The ID of the parent that the working directory is to be
-	    updated to.  If the working directory is being merged, it
-	    will not change this parent.
+	<listitem><para id="x_2d9"><literal>parent1</literal>: A
+	    changeset ID. The ID of the parent that the working
+	    directory is to be updated to.  If the working directory
+	    is being merged, it will not change this parent.
 	  </para>
 	</listitem>
-	<listitem><para><literal>parent2</literal>: A changeset ID.
-	    Only set if the working directory is being merged.  The ID
-	    of the revision that the working directory is being merged
-	    with.
+	<listitem><para id="x_2da"><literal>parent2</literal>: A
+	    changeset ID. Only set if the working directory is being
+	    merged.  The ID of the revision that the working directory
+	    is being merged with.
 	  </para>
 	</listitem></itemizedlist>
 
-      <para>See also: <literal role="hook">update</literal> (section
-	<xref linkend="sec.hook.update"/>)
-      </para>
+      <para id="x_2db">See also: <literal role="hook">update</literal>
+	(<xref linkend="sec:hook:update"/>)</para>
 
     </sect2>
-    <sect2 id="sec.hook.tag">
+    <sect2 id="sec:hook:tag">
       <title><literal role="hook">tag</literal>&emdash;after tagging a
 	changeset</title>
 
-      <para>This hook is run after a tag has been created.
+      <para id="x_2dc">This hook is run after a tag has been created.
       </para>
 
-      <para>Parameters to this hook:
+      <para id="x_2dd">Parameters to this hook:
       </para>
       <itemizedlist>
-	<listitem><para><literal>local</literal>: A boolean.  Whether
+	<listitem><para id="x_2de"><literal>local</literal>: A boolean.  Whether
 	    the new tag is local to this repository instance (i.e.
 	    stored in <filename
 	      role="special">.hg/localtags</filename>) or managed by
@@ -1974,30 +1975,30 @@
 	      role="special">.hgtags</filename>).
 	  </para>
 	</listitem>
-	<listitem><para><literal>node</literal>: A changeset ID.  The
+	<listitem><para id="x_2df"><literal>node</literal>: A changeset ID.  The
 	    ID of the changeset that was tagged.
 	  </para>
 	</listitem>
-	<listitem><para><literal>tag</literal>: A string.  The name of
+	<listitem><para id="x_2e0"><literal>tag</literal>: A string.  The name of
 	    the tag that was created.
 	  </para>
 	</listitem></itemizedlist>
 
-      <para>If the created tag is revision-controlled, the <literal
+      <para id="x_2e1">If the created tag is revision-controlled, the <literal
 	  role="hook">commit</literal> hook (section <xref
-	  linkend="sec.hook.commit"/>) is run before this hook.
+	  linkend="sec:hook:commit"/>) is run before this hook.
       </para>
 
-      <para>See also: <literal role="hook">pretag</literal> (section
-	<xref linkend="sec.hook.pretag"/>)
+      <para id="x_2e2">See also: <literal role="hook">pretag</literal>
+	(<xref linkend="sec:hook:pretag"/>)
       </para>
 
     </sect2>
-    <sect2 id="sec.hook.update">
+    <sect2 id="sec:hook:update">
       <title><literal role="hook">update</literal>&emdash;after
 	updating or merging working directory</title>
 
-      <para>This hook is run after an update or merge of the working
+      <para id="x_2e3">This hook is run after an update or merge of the working
 	directory completes.  Since a merge can fail (if the external
 	<command>hgmerge</command> command fails to resolve conflicts
 	in a file), this hook communicates whether the update or merge
@@ -2005,25 +2006,25 @@
       </para>
 
       <itemizedlist>
-	<listitem><para><literal>error</literal>: A boolean.
+	<listitem><para id="x_2e4"><literal>error</literal>: A boolean.
 	    Indicates whether the update or merge completed
 	    successfully.
 	  </para>
 	</listitem>
-	<listitem><para><literal>parent1</literal>: A changeset ID.
+	<listitem><para id="x_2e5"><literal>parent1</literal>: A changeset ID.
 	    The ID of the parent that the working directory was
 	    updated to.  If the working directory was merged, it will
 	    not have changed this parent.
 	  </para>
 	</listitem>
-	<listitem><para><literal>parent2</literal>: A changeset ID.
+	<listitem><para id="x_2e6"><literal>parent2</literal>: A changeset ID.
 	    Only set if the working directory was merged.  The ID of
 	    the revision that the working directory was merged with.
 	  </para>
 	</listitem></itemizedlist>
 
-      <para>See also: <literal role="hook">preupdate</literal>
-	(section <xref linkend="sec.hook.preupdate"/>)
+      <para id="x_2e7">See also: <literal role="hook">preupdate</literal>
+	(<xref linkend="sec:hook:preupdate"/>)
       </para>
 
     </sect2>
--- a/en/ch10-template.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/ch10-template.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,6 +1,6 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<chapter id="chap.template">
+<chapter id="chap:template">
   <?dbhtml filename="customizing-the-output-of-mercurial.html"?>
   <title>Customising the output of Mercurial</title>
 
@@ -10,7 +10,7 @@
     command, or to customise the entire appearance of the built-in web
     interface.</para>
 
-  <sect1 id="sec.style">
+  <sect1 id="sec:style">
     <title>Using precanned output styles</title>
 
     <para id="x_579">Packaged with Mercurial are some output styles that you can
@@ -107,7 +107,7 @@
       <emphasis>escape sequence</emphasis>, telling Mercurial to print
       a newline at the end of each template item.  If you omit this
       newline, Mercurial will run each piece of output together.  See
-      section <xref linkend="sec.template.escape"/> for more details
+      <xref linkend="sec:template:escape"/> for more details
       of escape sequences.</para>
 
     <para id="x_587">A template that prints a fixed string of text all the time
@@ -121,14 +121,13 @@
       been replaced in the output with the description of each
       changeset.  Every time Mercurial finds text enclosed in curly
       braces (<quote><literal>{</literal></quote> and
-      <quote><literal>}</literal></quote>), it will try to replace the braces
-      and text with the expansion of whatever is inside.  To print a
-      literal curly brace, you must escape it, as described in section
-      <xref
-	linkend="sec.template.escape"/>.</para>
+      <quote><literal>}</literal></quote>), it will try to replace the
+      braces and text with the expansion of whatever is inside.  To
+      print a literal curly brace, you must escape it, as described in
+      <xref linkend="sec:template:escape"/>.</para>
 
   </sect1>
-  <sect1 id="sec.template.keyword">
+  <sect1 id="sec:template:keyword">
     <title>Common template keywords</title>
 
     <para id="x_589">You can start writing simple templates immediately using the
@@ -149,8 +148,8 @@
 	  Date information.  The date when the changeset was
 	  committed.  This is <emphasis>not</emphasis> human-readable;
 	  you must pass it through a filter that will render it
-	  appropriately.  See section <xref
-	    linkend="sec.template.filter"/> for more information
+	  appropriately.  See <xref
+	    linkend="sec:template:filter"/> for more information
 	  on filters. The date is expressed as a pair of numbers.  The
 	  first number is a Unix UTC timestamp (seconds since January
 	  1, 1970); the second is the offset of the committer's
@@ -197,13 +196,12 @@
     <para id="x_596">As we noted above, the date keyword does not produce
       human-readable output, so we must treat it specially.  This
       involves using a <emphasis>filter</emphasis>, about which more
-      in section <xref
-	linkend="sec.template.filter"/>.</para>
+      in <xref linkend="sec:template:filter"/>.</para>
 
     &interaction.template.simple.datekeyword;
 
   </sect1>
-  <sect1 id="sec.template.escape">
+  <sect1 id="sec:template:escape">
     <title>Escape sequences</title>
 
     <para id="x_597">Mercurial's templating engine recognises the most commonly
@@ -245,7 +243,7 @@
       it.</para>
 
   </sect1>
-  <sect1 id="sec.template.filter">
+  <sect1 id="sec:template:filter">
     <title>Filtering keywords to change their results</title>
 
     <para id="x_5a0">Some of the results of template expansion are not
--- a/en/ch11-mq.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/ch11-mq.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,13 +1,13 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<chapter id="chap.mq">
+<chapter id="chap:mq">
   <?dbhtml filename="managing-change-with-mercurial-queues.html"?>
   <title>Managing change with Mercurial Queues</title>
 
-  <sect1 id="sec.mq.patch-mgmt">
+  <sect1 id="sec:mq:patch-mgmt">
     <title>The patch management problem</title>
 
-    <para>Here is a common scenario: you need to install a software
+    <para id="x_3ac">Here is a common scenario: you need to install a software
       package from source, but you find a bug that you must fix in the
       source before you can start using the package.  You make your
       changes, forget about the package for a while, and a few months
@@ -17,27 +17,27 @@
       the newer version.  This is a tedious task, and it's easy to
       make mistakes.</para>
 
-    <para>This is a simple case of the <quote>patch management</quote>
+    <para id="x_3ad">This is a simple case of the <quote>patch management</quote>
       problem.  You have an <quote>upstream</quote> source tree that
       you can't change; you need to make some local changes on top of
       the upstream tree; and you'd like to be able to keep those
       changes separate, so that you can apply them to newer versions
       of the upstream source.</para>
 
-    <para>The patch management problem arises in many situations.
+    <para id="x_3ae">The patch management problem arises in many situations.
       Probably the most visible is that a user of an open source
       software project will contribute a bug fix or new feature to the
       project's maintainers in the form of a patch.</para>
 
-    <para>Distributors of operating systems that include open source
+    <para id="x_3af">Distributors of operating systems that include open source
       software often need to make changes to the packages they
       distribute so that they will build properly in their
       environments.</para>
 
-    <para>When you have few changes to maintain, it is easy to manage
+    <para id="x_3b0">When you have few changes to maintain, it is easy to manage
       a single patch using the standard <command>diff</command> and
-      <command>patch</command> programs (see section <xref
-	linkend="sec.mq.patch"/> for a discussion of these
+      <command>patch</command> programs (see <xref
+	linkend="sec:mq:patch"/> for a discussion of these
       tools). Once the number of changes grows, it starts to make
       sense to maintain patches as discrete <quote>chunks of
 	work,</quote> so that for example a single patch will contain
@@ -49,37 +49,37 @@
       your fix in a subsequent release, you can simply drop that
       single patch when you're updating to the newer release.</para>
 
-    <para>Maintaining a single patch against an upstream tree is a
+    <para id="x_3b1">Maintaining a single patch against an upstream tree is a
       little tedious and error-prone, but not difficult.  However, the
       complexity of the problem grows rapidly as the number of patches
       you have to maintain increases.  With more than a tiny number of
       patches in hand, understanding which ones you have applied and
       maintaining them moves from messy to overwhelming.</para>
 
-    <para>Fortunately, Mercurial includes a powerful extension,
+    <para id="x_3b2">Fortunately, Mercurial includes a powerful extension,
       Mercurial Queues (or simply <quote>MQ</quote>), that massively
       simplifies the patch management problem.</para>
 
   </sect1>
-  <sect1 id="sec.mq.history">
+  <sect1 id="sec:mq:history">
     <title>The prehistory of Mercurial Queues</title>
 
-    <para>During the late 1990s, several Linux kernel developers
+    <para id="x_3b3">During the late 1990s, several Linux kernel developers
       started to maintain <quote>patch series</quote> that modified
       the behaviour of the Linux kernel.  Some of these series were
       focused on stability, some on feature coverage, and others were
       more speculative.</para>
 
-    <para>The sizes of these patch series grew rapidly.  In 2002,
+    <para id="x_3b4">The sizes of these patch series grew rapidly.  In 2002,
       Andrew Morton published some shell scripts he had been using to
       automate the task of managing his patch queues.  Andrew was
       successfully using these scripts to manage hundreds (sometimes
       thousands) of patches on top of the Linux kernel.</para>
 
-    <sect2 id="sec.mq.quilt">
+    <sect2 id="sec:mq:quilt">
       <title>A patchwork quilt</title>
 
-      <para>In early 2003, Andreas Gruenbacher and Martin Quinson
+      <para id="x_3b5">In early 2003, Andreas Gruenbacher and Martin Quinson
 	borrowed the approach of Andrew's scripts and published a tool
 	called <quote>patchwork quilt</quote>
 	<citation>web:quilt</citation>, or simply <quote>quilt</quote>
@@ -88,7 +88,7 @@
 	management, it rapidly gained a large following among open
 	source software developers.</para>
 
-      <para>Quilt manages a <emphasis>stack of patches</emphasis> on
+      <para id="x_3b6">Quilt manages a <emphasis>stack of patches</emphasis> on
 	top of a directory tree. To begin, you tell quilt to manage a
 	directory tree, and tell it which files you want to manage; it
 	stores away the names and contents of those files.  To fix a
@@ -96,14 +96,14 @@
 	files you need to fix, then <quote>refresh</quote> the
 	patch.</para>
 
-      <para>The refresh step causes quilt to scan the directory tree;
+      <para id="x_3b7">The refresh step causes quilt to scan the directory tree;
 	it updates the patch with all of the changes you have made.
 	You can create another patch on top of the first, which will
 	track the changes required to modify the tree from <quote>tree
 	  with one patch applied</quote> to <quote>tree with two
 	  patches applied</quote>.</para>
 
-      <para>You can <emphasis>change</emphasis> which patches are
+      <para id="x_3b8">You can <emphasis>change</emphasis> which patches are
 	applied to the tree.  If you <quote>pop</quote> a patch, the
 	changes made by that patch will vanish from the directory
 	tree.  Quilt remembers which patches you have popped, though,
@@ -115,25 +115,25 @@
 	any time, change both which patches are applied and what
 	modifications those patches make.</para>
 
-      <para>Quilt knows nothing about revision control tools, so it
+      <para id="x_3b9">Quilt knows nothing about revision control tools, so it
 	works equally well on top of an unpacked tarball or a
 	Subversion working copy.</para>
 
     </sect2>
-    <sect2 id="sec.mq.quilt-mq">
+    <sect2 id="sec:mq:quilt-mq">
       <title>From patchwork quilt to Mercurial Queues</title>
 
-      <para>In mid-2005, Chris Mason took the features of quilt and
+      <para id="x_3ba">In mid-2005, Chris Mason took the features of quilt and
 	wrote an extension that he called Mercurial Queues, which
 	added quilt-like behaviour to Mercurial.</para>
 
-      <para>The key difference between quilt and MQ is that quilt
+      <para id="x_3bb">The key difference between quilt and MQ is that quilt
 	knows nothing about revision control systems, while MQ is
 	<emphasis>integrated</emphasis> into Mercurial.  Each patch
 	that you push is represented as a Mercurial changeset.  Pop a
 	patch, and the changeset goes away.</para>
 
-      <para>Because quilt does not care about revision control tools,
+      <para id="x_3bc">Because quilt does not care about revision control tools,
 	it is still a tremendously useful piece of software to know
 	about for situations where you cannot use Mercurial and
 	MQ.</para>
@@ -143,16 +143,16 @@
   <sect1>
     <title>The huge advantage of MQ</title>
 
-    <para>I cannot overstate the value that MQ offers through the
+    <para id="x_3bd">I cannot overstate the value that MQ offers through the
       unification of patches and revision control.</para>
 
-    <para>A major reason that patches have persisted in the free
+    <para id="x_3be">A major reason that patches have persisted in the free
       software and open source world&emdash;in spite of the
       availability of increasingly capable revision control tools over
       the years&emdash;is the <emphasis>agility</emphasis> they
       offer.</para>
 
-    <para>Traditional revision control tools make a permanent,
+    <para id="x_3bf">Traditional revision control tools make a permanent,
       irreversible record of everything that you do.  While this has
       great value, it's also somewhat stifling.  If you want to
       perform a wild-eyed experiment, you have to be careful in how
@@ -160,7 +160,7 @@
       misleading or destabilising&emdash;traces of your missteps and
       errors in the permanent revision record.</para>
 
-    <para>By contrast, MQ's marriage of distributed revision control
+    <para id="x_3c0">By contrast, MQ's marriage of distributed revision control
       with patches makes it much easier to isolate your work.  Your
       patches live on top of normal revision history, and you can make
       them disappear or reappear at will.  If you don't like a patch,
@@ -168,7 +168,7 @@
       simply fix it&emdash;as many times as you need to, until you
       have refined it into the form you desire.</para>
 
-    <para>As an example, the integration of patches with revision
+    <para id="x_3c1">As an example, the integration of patches with revision
       control makes understanding patches and debugging their
       effects&emdash;and their interplay with the code they're based
       on&emdash;<emphasis>enormously</emphasis> easier. Since every
@@ -183,14 +183,14 @@
       And so on.</para>
 
   </sect1>
-  <sect1 id="sec.mq.patch">
+  <sect1 id="sec:mq:patch">
     <title>Understanding patches</title>
 
-    <para>Because MQ doesn't hide its patch-oriented nature, it is
+    <para id="x_3c2">Because MQ doesn't hide its patch-oriented nature, it is
       helpful to understand what patches are, and a little about the
       tools that work with them.</para>
 
-    <para>The traditional Unix <command>diff</command> command
+    <para id="x_3c3">The traditional Unix <command>diff</command> command
       compares two files, and prints a list of differences between
       them. The <command>patch</command> command understands these
       differences as <emphasis>modifications</emphasis> to make to a
@@ -199,20 +199,20 @@
 
 &interaction.mq.dodiff.diff;
 
-    <para>The type of file that <command>diff</command> generates (and
+    <para id="x_3c4">The type of file that <command>diff</command> generates (and
       <command>patch</command> takes as input) is called a
       <quote>patch</quote> or a <quote>diff</quote>; there is no
       difference between a patch and a diff.  (We'll use the term
       <quote>patch</quote>, since it's more commonly used.)</para>
 
-    <para>A patch file can start with arbitrary text; the
+    <para id="x_3c5">A patch file can start with arbitrary text; the
       <command>patch</command> command ignores this text, but MQ uses
       it as the commit message when creating changesets.  To find the
       beginning of the patch content, <command>patch</command>
       searches for the first line that starts with the string
       <quote><literal>diff -</literal></quote>.</para>
 
-    <para>MQ works with <emphasis>unified</emphasis> diffs
+    <para id="x_3c6">MQ works with <emphasis>unified</emphasis> diffs
       (<command>patch</command> can accept several other diff formats,
       but MQ doesn't).  A unified diff contains two kinds of header.
       The <emphasis>file header</emphasis> describes the file being
@@ -220,7 +220,7 @@
       <command>patch</command> sees a new file header, it looks for a
       file with that name to start modifying.</para>
 
-    <para>After the file header comes a series of
+    <para id="x_3c7">After the file header comes a series of
       <emphasis>hunks</emphasis>.  Each hunk starts with a header;
       this identifies the range of line numbers within the file that
       the hunk should modify.  Following the header, a hunk starts and
@@ -232,7 +232,7 @@
       runs the hunks together, with a few lines of context between
       modifications.</para>
 
-    <para>Each line of context begins with a space character.  Within
+    <para id="x_3c8">Each line of context begins with a space character.  Within
       the hunk, a line that begins with
       <quote><literal>-</literal></quote> means <quote>remove this
 	line,</quote> while a line that begins with
@@ -240,16 +240,16 @@
 	line.</quote>  For example, a line that is modified is
       represented by one deletion and one insertion.</para>
 
-    <para>We will return to some of the more subtle aspects of patches
-      later (in section <xref linkend="sec.mq.adv-patch"/>), but you
+    <para id="x_3c9">We will return to some of the more subtle aspects of patches
+      later (in <xref linkend="sec:mq:adv-patch"/>), but you
       should have
       enough information now to use MQ.</para>
 
   </sect1>
-  <sect1 id="sec.mq.start">
+  <sect1 id="sec:mq:start">
     <title>Getting started with Mercurial Queues</title>
 
-    <para>Because MQ is implemented as an extension, you must
+    <para id="x_3ca">Because MQ is implemented as an extension, you must
       explicitly enable before you can use it.  (You don't need to
       download anything; MQ ships with the standard Mercurial
       distribution.)  To enable MQ, edit your <filename
@@ -259,7 +259,7 @@
     <programlisting>[extensions]
 hgext.mq =</programlisting>
 
-    <para>Once the extension is enabled, it will make a number of new
+    <para id="x_3cb">Once the extension is enabled, it will make a number of new
       commands available.  To verify that the extension is working,
       you can use <command role="hg-cmd">hg help</command> to see if
       the <command role="hg-ext-mq">qinit</command> command is now
@@ -267,14 +267,14 @@
 
 &interaction.mq.qinit-help.help;
 
-    <para>You can use MQ with <emphasis>any</emphasis> Mercurial
+    <para id="x_3cc">You can use MQ with <emphasis>any</emphasis> Mercurial
       repository, and its commands only operate within that
       repository.  To get started, simply prepare the repository using
       the <command role="hg-ext-mq">qinit</command> command.</para>
 
 &interaction.mq.tutorial.qinit;
 
-    <para>This command creates an empty directory called <filename
+    <para id="x_3cd">This command creates an empty directory called <filename
 	role="special" class="directory">.hg/patches</filename>, where
       MQ will keep its metadata.  As with many Mercurial commands, the
       <command role="hg-ext-mq">qinit</command> command prints nothing
@@ -283,18 +283,18 @@
     <sect2>
       <title>Creating a new patch</title>
 
-      <para>To begin work on a new patch, use the <command
+      <para id="x_3ce">To begin work on a new patch, use the <command
 	  role="hg-ext-mq">qnew</command> command.  This command takes
 	one argument, the name of the patch to create.</para>
 
-      <para>MQ will use this as the name of an actual file in the
+      <para id="x_3cf">MQ will use this as the name of an actual file in the
 	<filename role="special"
 	  class="directory">.hg/patches</filename> directory, as you
 	can see below.</para>
 
 &interaction.mq.tutorial.qnew;
 
-      <para>Also newly present in the <filename role="special"
+      <para id="x_3d0">Also newly present in the <filename role="special"
 	  class="directory">.hg/patches</filename> directory are two
 	other files, <filename role="special">series</filename> and
 	<filename role="special">status</filename>.  The <filename
@@ -306,7 +306,7 @@
 	<emphasis>applied</emphasis> in this repository.</para>
 
       <note>
-	<para>  You may sometimes want to edit the <filename
+	<para id="x_3d1">  You may sometimes want to edit the <filename
 	    role="special">series</filename> file by hand; for
 	  example, to change the sequence in which some patches are
 	  applied.  However, manually editing the <filename
@@ -315,7 +315,7 @@
 	  happening.</para>
       </note>
 
-      <para>Once you have created your new patch, you can edit files
+      <para id="x_3d2">Once you have created your new patch, you can edit files
 	in the working directory as you usually would.  All of the
 	normal Mercurial commands, such as <command role="hg-cmd">hg
 	  diff</command> and <command role="hg-cmd">hg
@@ -325,17 +325,17 @@
     <sect2>
       <title>Refreshing a patch</title>
 
-      <para>When you reach a point where you want to save your work,
+      <para id="x_3d3">When you reach a point where you want to save your work,
 	use the <command role="hg-ext-mq">qrefresh</command> command
 	to update the patch you are working on.</para>
 
 &interaction.mq.tutorial.qrefresh;
 
-      <para>This command folds the changes you have made in the
+      <para id="x_3d4">This command folds the changes you have made in the
 	working directory into your patch, and updates its
 	corresponding changeset to contain those changes.</para>
 
-      <para>You can run <command role="hg-ext-mq">qrefresh</command>
+      <para id="x_3d5">You can run <command role="hg-ext-mq">qrefresh</command>
 	as often as you like, so it's a good way to
 	<quote>checkpoint</quote> your work.  Refresh your patch at an
 	opportune time; try an experiment; and if the experiment
@@ -348,19 +348,19 @@
     <sect2>
       <title>Stacking and tracking patches</title>
 
-      <para>Once you have finished working on a patch, or need to work
+      <para id="x_3d6">Once you have finished working on a patch, or need to work
 	on another, you can use the <command
 	  role="hg-ext-mq">qnew</command> command again to create a
 	new patch. Mercurial will apply this patch on top of your
 	existing patch.</para>
 
 &interaction.mq.tutorial.qnew2;
-      <para>Notice that the patch contains the changes in our prior
+      <para id="x_3d7">Notice that the patch contains the changes in our prior
 	patch as part of its context (you can see this more clearly in
 	the output of <command role="hg-cmd">hg
 	  annotate</command>).</para>
 
-      <para>So far, with the exception of <command
+      <para id="x_3d8">So far, with the exception of <command
 	  role="hg-ext-mq">qnew</command> and <command
 	  role="hg-ext-mq">qrefresh</command>, we've been careful to
 	only use regular Mercurial commands.  However, MQ provides
@@ -370,13 +370,13 @@
 &interaction.mq.tutorial.qseries;
 
       <itemizedlist>
-	<listitem><para>The <command
+	<listitem><para id="x_3d9">The <command
 	      role="hg-ext-mq">qseries</command> command lists every
 	    patch that MQ knows about in this repository, from oldest
 	    to newest (most recently
 	    <emphasis>created</emphasis>).</para>
 	</listitem>
-	<listitem><para>The <command
+	<listitem><para id="x_3da">The <command
 	      role="hg-ext-mq">qapplied</command> command lists every
 	    patch that MQ has <emphasis>applied</emphasis> in this
 	    repository, again from oldest to newest (most recently
@@ -387,12 +387,12 @@
     <sect2>
       <title>Manipulating the patch stack</title>
 
-      <para>The previous discussion implied that there must be a
+      <para id="x_3db">The previous discussion implied that there must be a
 	difference between <quote>known</quote> and
 	<quote>applied</quote> patches, and there is.  MQ can manage a
 	patch without it being applied in the repository.</para>
 
-      <para>An <emphasis>applied</emphasis> patch has a corresponding
+      <para id="x_3dc">An <emphasis>applied</emphasis> patch has a corresponding
 	changeset in the repository, and the effects of the patch and
 	changeset are visible in the working directory.  You can undo
 	the application of a patch using the <command
@@ -400,20 +400,20 @@
 	<emphasis>knows about</emphasis>, or manages, a popped patch,
 	but the patch no longer has a corresponding changeset in the
 	repository, and the working directory does not contain the
-	changes made by the patch.  Figure <xref
-	  endterm="fig.mq.stack.caption" linkend="fig.mq.stack"/> illustrates
+	changes made by the patch.  <xref
+	  linkend="fig:mq:stack"/> illustrates
 	the difference between applied and tracked patches.</para>
 
-      <informalfigure id="fig.mq.stack">
-        <mediaobject>
-          <imageobject><imagedata fileref="images/mq-stack.png"/></imageobject>
-          <textobject><phrase>XXX add text</phrase></textobject>
-          <caption><para id="fig.mq.stack.caption">Applied and unapplied patches
-            in the MQ patch stack</para></caption>
-          </mediaobject>
-      </informalfigure>
+      <figure id="fig:mq:stack">
+	<title>Applied and unapplied patches in the MQ patch
+	  stack</title>
+	<mediaobject>
+	  <imageobject><imagedata fileref="figs/mq-stack.png"/></imageobject>
+	  <textobject><phrase>XXX add text</phrase></textobject>
+	</mediaobject>
+      </figure>
 
-      <para>You can reapply an unapplied, or popped, patch using the
+      <para id="x_3de">You can reapply an unapplied, or popped, patch using the
 	<command role="hg-ext-mq">qpush</command> command.  This
 	creates a new changeset to correspond to the patch, and the
 	patch's changes once again become present in the working
@@ -422,7 +422,7 @@
 	  role="hg-ext-mq">qpush</command> in action.</para>
 &interaction.mq.tutorial.qpop;
 
-      <para>Notice that once we have popped a patch or two patches,
+      <para id="x_3df">Notice that once we have popped a patch or two patches,
 	the output of <command role="hg-ext-mq">qseries</command>
 	remains the same, while that of <command
 	  role="hg-ext-mq">qapplied</command> has changed.</para>
@@ -432,7 +432,7 @@
     <sect2>
       <title>Pushing and popping many patches</title>
 
-      <para>While <command role="hg-ext-mq">qpush</command> and
+      <para id="x_3e0">While <command role="hg-ext-mq">qpush</command> and
 	<command role="hg-ext-mq">qpop</command> each operate on a
 	single patch at a time by default, you can push and pop many
 	patches in one go.  The <option
@@ -442,8 +442,7 @@
 	  role="hg-ext-mq-cmd-qpop-opt">-a</option> option to <command
 	  role="hg-ext-mq">qpop</command> causes it to pop all applied
 	patches.  (For some more ways to push and pop many patches,
-	see section <xref linkend="sec.mq.perf"/>
-	below.)</para>
+	see <xref linkend="sec:mq:perf"/> below.)</para>
 
 &interaction.mq.tutorial.qpush-a;
 
@@ -451,7 +450,7 @@
     <sect2>
       <title>Safety checks, and overriding them</title>
 
-      <para>Several MQ commands check the working directory before
+      <para id="x_3e1">Several MQ commands check the working directory before
 	they do anything, and fail if they find any modifications.
 	They do this to ensure that you won't lose any changes that
 	you have made, but not yet incorporated into a patch.  The
@@ -463,7 +462,7 @@
 
 &interaction.mq.tutorial.add;
 
-      <para>Commands that check the working directory all take an
+      <para id="x_3e2">Commands that check the working directory all take an
 	<quote>I know what I'm doing</quote> option, which is always
 	named <option>-f</option>.  The exact meaning of
 	<option>-f</option> depends on the command.  For example,
@@ -480,14 +479,14 @@
     <sect2>
       <title>Working on several patches at once</title>
 
-      <para>The <command role="hg-ext-mq">qrefresh</command> command
+      <para id="x_3e3">The <command role="hg-ext-mq">qrefresh</command> command
 	always refreshes the <emphasis>topmost</emphasis> applied
 	patch.  This means that you can suspend work on one patch (by
 	refreshing it), pop or push to make a different patch the top,
 	and work on <emphasis>that</emphasis> patch for a
 	while.</para>
 
-      <para>Here's an example that illustrates how you can use this
+      <para id="x_3e4">Here's an example that illustrates how you can use this
 	ability. Let's say you're developing a new feature as two
 	patches.  The first is a change to the core of your software,
 	and the second&emdash;layered on top of the
@@ -503,10 +502,10 @@
 
     </sect2>
   </sect1>
-  <sect1 id="sec.mq.adv-patch">
+  <sect1 id="sec:mq:adv-patch">
     <title>More about patches</title>
 
-    <para>MQ uses the GNU <command>patch</command> command to apply
+    <para id="x_3e5">MQ uses the GNU <command>patch</command> command to apply
       patches, so it's helpful to know a few more detailed aspects of
       how <command>patch</command> works, and about patches
       themselves.</para>
@@ -514,14 +513,14 @@
     <sect2>
       <title>The strip count</title>
 
-      <para>If you look at the file headers in a patch, you will
+      <para id="x_3e6">If you look at the file headers in a patch, you will
 	notice that the pathnames usually have an extra component on
 	the front that isn't present in the actual path name.  This is
 	a holdover from the way that people used to generate patches
 	(people still do this, but it's somewhat rare with modern
 	revision control tools).</para>
 
-      <para>Alice would unpack a tarball, edit her files, then decide
+      <para id="x_3e7">Alice would unpack a tarball, edit her files, then decide
 	that she wanted to create a patch.  So she'd rename her
 	working directory, unpack the tarball again (hence the need
 	for the rename), and use the <option
@@ -534,7 +533,7 @@
 	header, and the name of the modified directory would be at the
 	front of the right-hand path.</para>
 
-      <para>Since someone receiving a patch from the Alices of the net
+      <para id="x_3e8">Since someone receiving a patch from the Alices of the net
 	would be unlikely to have unmodified and modified directories
 	with exactly the same names, the <command>patch</command>
 	command has a <option role="cmd-opt-patch">-p</option> option
@@ -542,7 +541,7 @@
 	strip when trying to apply a patch.  This number is called the
 	<emphasis>strip count</emphasis>.</para>
 
-      <para>An option of <quote><literal>-p1</literal></quote> means
+      <para id="x_3e9">An option of <quote><literal>-p1</literal></quote> means
 	<quote>use a strip count of one</quote>.  If
 	<command>patch</command> sees a file name
 	<filename>foo/bar/baz</filename> in a file header, it will
@@ -555,7 +554,7 @@
 	but <filename>/foo/bar</filename> (notice the extra leading
 	slash) into <filename>foo/bar</filename>.)</para>
 
-      <para>The <quote>standard</quote> strip count for patches is
+      <para id="x_3ea">The <quote>standard</quote> strip count for patches is
 	one; almost all patches contain one leading path name
 	component that needs to be stripped. Mercurial's <command
 	  role="hg-cmd">hg diff</command> command generates path names
@@ -563,7 +562,7 @@
 	  import</command> command and MQ expect patches to have a
 	strip count of one.</para>
 
-      <para>If you receive a patch from someone that you want to add
+      <para id="x_3eb">If you receive a patch from someone that you want to add
 	to your patch queue, and the patch needs a strip count other
 	than one, you cannot just <command
 	  role="hg-ext-mq">qimport</command> the patch, because
@@ -584,14 +583,14 @@
     <sect2>
       <title>Strategies for applying a patch</title>
 
-      <para>When <command>patch</command> applies a hunk, it tries a
+      <para id="x_3ec">When <command>patch</command> applies a hunk, it tries a
 	handful of successively less accurate strategies to try to
 	make the hunk apply. This falling-back technique often makes
 	it possible to take a patch that was generated against an old
 	version of a file, and apply it against a newer version of
 	that file.</para>
 
-      <para>First, <command>patch</command> tries an exact match,
+      <para id="x_3ed">First, <command>patch</command> tries an exact match,
 	where the line numbers, the context, and the text to be
 	modified must apply exactly.  If it cannot make an exact
 	match, it tries to find an exact match for the context,
@@ -600,7 +599,7 @@
 	applied, but at some <emphasis>offset</emphasis> from the
 	original line number.</para>
 
-      <para>If a context-only match fails, <command>patch</command>
+      <para id="x_3ee">If a context-only match fails, <command>patch</command>
 	removes the first and last lines of the context, and tries a
 	<emphasis>reduced</emphasis> context-only match.  If the hunk
 	with reduced context succeeds, it prints a message saying that
@@ -609,7 +608,7 @@
 	context <command>patch</command> had to trim before the patch
 	applied).</para>
 
-      <para>When neither of these techniques works,
+      <para id="x_3ef">When neither of these techniques works,
 	<command>patch</command> prints a message saying that the hunk
 	in question was rejected.  It saves rejected hunks (also
 	simply called <quote>rejects</quote>) to a file with the same
@@ -629,36 +628,36 @@
     <sect2>
       <title>Some quirks of patch representation</title>
 
-      <para>There are a few useful things to know about how
+      <para id="x_3f0">There are a few useful things to know about how
 	<command>patch</command> works with files.</para>
       <itemizedlist>
-	<listitem><para>This should already be obvious, but
+	<listitem><para id="x_3f1">This should already be obvious, but
 	    <command>patch</command> cannot handle binary
 	    files.</para>
 	</listitem>
-	<listitem><para>Neither does it care about the executable bit;
+	<listitem><para id="x_3f2">Neither does it care about the executable bit;
 	    it creates new files as readable, but not
 	    executable.</para>
 	</listitem>
-	<listitem><para><command>patch</command> treats the removal of
+	<listitem><para id="x_3f3"><command>patch</command> treats the removal of
 	    a file as a diff between the file to be removed and the
 	    empty file.  So your idea of <quote>I deleted this
 	      file</quote> looks like <quote>every line of this file
 	      was deleted</quote> in a patch.</para>
 	</listitem>
-	<listitem><para>It treats the addition of a file as a diff
+	<listitem><para id="x_3f4">It treats the addition of a file as a diff
 	    between the empty file and the file to be added.  So in a
 	    patch, your idea of <quote>I added this file</quote> looks
 	    like <quote>every line of this file was
 	      added</quote>.</para>
 	</listitem>
-	<listitem><para>It treats a renamed file as the removal of the
+	<listitem><para id="x_3f5">It treats a renamed file as the removal of the
 	    old name, and the addition of the new name.  This means
 	    that renamed files have a big footprint in patches.  (Note
 	    also that Mercurial does not currently try to infer when
 	    files have been renamed or copied in a patch.)</para>
 	</listitem>
-	<listitem><para><command>patch</command> cannot represent
+	<listitem><para id="x_3f6"><command>patch</command> cannot represent
 	    empty files, so you cannot use a patch to represent the
 	    notion <quote>I added this empty file to the
 	      tree</quote>.</para>
@@ -667,7 +666,7 @@
     <sect2>
       <title>Beware the fuzz</title>
 
-      <para>While applying a hunk at an offset, or with a fuzz factor,
+      <para id="x_3f7">While applying a hunk at an offset, or with a fuzz factor,
 	will often be completely successful, these inexact techniques
 	naturally leave open the possibility of corrupting the patched
 	file.  The most common cases typically involve applying a
@@ -677,7 +676,7 @@
 	fuzz factor, you should make sure that the modified files are
 	correct afterwards.</para>
 
-      <para>It's often a good idea to refresh a patch that has applied
+      <para id="x_3f8">It's often a good idea to refresh a patch that has applied
 	with an offset or fuzz factor; refreshing the patch generates
 	new context information that will make it apply cleanly.  I
 	say <quote>often,</quote> not <quote>always,</quote> because
@@ -692,30 +691,29 @@
     <sect2>
       <title>Handling rejection</title>
 
-      <para>If <command role="hg-ext-mq">qpush</command> fails to
+      <para id="x_3f9">If <command role="hg-ext-mq">qpush</command> fails to
 	apply a patch, it will print an error message and exit.  If it
 	has left <filename role="special">.rej</filename> files
 	behind, it is usually best to fix up the rejected hunks before
 	you push more patches or do any further work.</para>
 
-      <para>If your patch <emphasis>used to</emphasis> apply cleanly,
+      <para id="x_3fa">If your patch <emphasis>used to</emphasis> apply cleanly,
 	and no longer does because you've changed the underlying code
 	that your patches are based on, Mercurial Queues can help; see
-	section <xref
-	  linkend="sec.mq.merge"/> for details.</para>
+	<xref linkend="sec:mq:merge"/> for details.</para>
 
-      <para>Unfortunately, there aren't any great techniques for
+      <para id="x_3fb">Unfortunately, there aren't any great techniques for
 	dealing with rejected hunks.  Most often, you'll need to view
 	the <filename role="special">.rej</filename> file and edit the
 	target file, applying the rejected hunks by hand.</para>
 
-      <para>If you're feeling adventurous, Neil Brown, a Linux kernel
+      <para id="x_3fc">If you're feeling adventurous, Neil Brown, a Linux kernel
 	hacker, wrote a tool called <command>wiggle</command>
 	<citation>web:wiggle</citation>, which is more vigorous than
 	<command>patch</command> in its attempts to make a patch
 	apply.</para>
 
-      <para>Another Linux kernel hacker, Chris Mason (the author of
+      <para id="x_3fd">Another Linux kernel hacker, Chris Mason (the author of
 	Mercurial Queues), wrote a similar tool called
 	<command>mpatch</command> <citation>web:mpatch</citation>,
 	which takes a simple approach to automating the application of
@@ -724,21 +722,21 @@
 	reasons that a hunk may be rejected:</para>
 
       <itemizedlist>
-	<listitem><para>The context in the middle of a hunk has
+	<listitem><para id="x_3fe">The context in the middle of a hunk has
 	    changed.</para>
 	</listitem>
-	<listitem><para>A hunk is missing some context at the
+	<listitem><para id="x_3ff">A hunk is missing some context at the
 	    beginning or end.</para>
 	</listitem>
-	<listitem><para>A large hunk might apply better&emdash;either
+	<listitem><para id="x_400">A large hunk might apply better&emdash;either
 	    entirely or in part&emdash;if it was broken up into
 	    smaller hunks.</para>
 	</listitem>
-	<listitem><para>A hunk removes lines with slightly different
+	<listitem><para id="x_401">A hunk removes lines with slightly different
 	    content than those currently present in the file.</para>
 	</listitem></itemizedlist>
 
-      <para>If you use <command>wiggle</command> or
+      <para id="x_402">If you use <command>wiggle</command> or
 	<command>mpatch</command>, you should be doubly careful to
 	check your results when you're done.  In fact,
 	<command>mpatch</command> enforces this method of
@@ -749,10 +747,10 @@
 
     </sect2>
   </sect1>
-  <sect1 id="sec.mq.perf">
+  <sect1 id="sec:mq:perf">
     <title>Getting the best performance out of MQ</title>
 
-    <para>MQ is very efficient at handling a large number of patches.
+    <para id="x_403">MQ is very efficient at handling a large number of patches.
       I ran some performance experiments in mid-2006 for a talk that I
       gave at the 2006 EuroPython conference
       <citation>web:europython</citation>.  I used as my data set the
@@ -761,7 +759,7 @@
       all 27,472 revisions between Linux 2.6.12-rc2 and Linux
       2.6.17.</para>
 
-    <para>On my old, slow laptop, I was able to <command
+    <para id="x_404">On my old, slow laptop, I was able to <command
 	role="hg-cmd">hg qpush <option
 	  role="hg-ext-mq-cmd-qpush-opt">hg -a</option></command> all
       1,738 patches in 3.5 minutes, and <command role="hg-cmd">hg qpop
@@ -772,11 +770,11 @@
       (which made 22,779 lines of changes to 287 files) in 6.6
       seconds.</para>
 
-    <para>Clearly, MQ is well suited to working in large trees, but
+    <para id="x_405">Clearly, MQ is well suited to working in large trees, but
       there are a few tricks you can use to get the best performance
       of it.</para>
 
-    <para>First of all, try to <quote>batch</quote> operations
+    <para id="x_406">First of all, try to <quote>batch</quote> operations
       together.  Every time you run <command
 	role="hg-ext-mq">qpush</command> or <command
 	role="hg-ext-mq">qpop</command>, these commands scan the
@@ -787,7 +785,7 @@
       medium-sized tree (containing tens of thousands of files), it
       can take a second or more.</para>
 
-    <para>The <command role="hg-ext-mq">qpush</command> and <command
+    <para id="x_407">The <command role="hg-ext-mq">qpush</command> and <command
 	role="hg-ext-mq">qpop</command> commands allow you to push and
       pop multiple patches at a time.  You can identify the
       <quote>destination patch</quote> that you want to end up at.
@@ -797,17 +795,17 @@
 	role="hg-ext-mq">qpop</command> to a destination, MQ will pop
       patches until the destination patch is at the top.</para>
 
-    <para>You can identify a destination patch using either the name
+    <para id="x_408">You can identify a destination patch using either the name
       of the patch, or by number.  If you use numeric addressing,
       patches are counted from zero; this means that the first patch
       is zero, the second is one, and so on.</para>
 
   </sect1>
-  <sect1 id="sec.mq.merge">
+  <sect1 id="sec:mq:merge">
     <title>Updating your patches when the underlying code
       changes</title>
 
-    <para>It's common to have a stack of patches on top of an
+    <para id="x_409">It's common to have a stack of patches on top of an
       underlying repository that you don't modify directly.  If you're
       working on changes to third-party code, or on a feature that is
       taking longer to develop than the rate of change of the code
@@ -816,7 +814,7 @@
       This is called <emphasis>rebasing</emphasis> your patch
       series.</para>
 
-    <para>The simplest way to do this is to <command role="hg-cmd">hg
+    <para id="x_40a">The simplest way to do this is to <command role="hg-cmd">hg
 	qpop <option role="hg-ext-mq-cmd-qpop-opt">hg
 	  -a</option></command> your patches, then <command
 	role="hg-cmd">hg pull</command> changes into the underlying
@@ -828,26 +826,26 @@
       affected patch, and continue pushing until you have fixed your
       entire stack.</para>
 
-    <para>This approach is easy to use and works well if you don't
+    <para id="x_40b">This approach is easy to use and works well if you don't
       expect changes to the underlying code to affect how well your
       patches apply. If your patch stack touches code that is modified
       frequently or invasively in the underlying repository, however,
       fixing up rejected hunks by hand quickly becomes
       tiresome.</para>
 
-    <para>It's possible to partially automate the rebasing process.
+    <para id="x_40c">It's possible to partially automate the rebasing process.
       If your patches apply cleanly against some revision of the
       underlying repo, MQ can use this information to help you to
       resolve conflicts between your patches and a different
       revision.</para>
 
-    <para>The process is a little involved.</para>
+    <para id="x_40d">The process is a little involved.</para>
     <orderedlist>
-      <listitem><para>To begin, <command role="hg-cmd">hg qpush
+      <listitem><para id="x_40e">To begin, <command role="hg-cmd">hg qpush
 	    -a</command> all of your patches on top of the revision
 	  where you know that they apply cleanly.</para>
       </listitem>
-      <listitem><para>Save a backup copy of your patch directory using
+      <listitem><para id="x_40f">Save a backup copy of your patch directory using
 	  <command role="hg-cmd">hg qsave <option
 	      role="hg-ext-mq-cmd-qsave-opt">hg -e</option> <option
 	      role="hg-ext-mq-cmd-qsave-opt">hg -c</option></command>.
@@ -861,17 +859,17 @@
 	  states of the <filename role="special">series</filename> and
 	  <filename role="special">status</filename> files.</para>
       </listitem>
-      <listitem><para>Use <command role="hg-cmd">hg pull</command> to
+      <listitem><para id="x_410">Use <command role="hg-cmd">hg pull</command> to
 	  bring new changes into the underlying repository.  (Don't
 	  run <command role="hg-cmd">hg pull -u</command>; see below
 	  for why.)</para>
       </listitem>
-      <listitem><para>Update to the new tip revision, using <command
+      <listitem><para id="x_411">Update to the new tip revision, using <command
 	    role="hg-cmd">hg update <option
 	      role="hg-opt-update">-C</option></command> to override
 	  the patches you have pushed.</para>
       </listitem>
-      <listitem><para>Merge all patches using <command>hg qpush -m
+      <listitem><para id="x_412">Merge all patches using <command>hg qpush -m
 	    -a</command>.  The <option
 	    role="hg-ext-mq-cmd-qpush-opt">-m</option> option to
 	  <command role="hg-ext-mq">qpush</command> tells MQ to
@@ -879,7 +877,7 @@
 	  apply.</para>
       </listitem></orderedlist>
 
-    <para>During the <command role="hg-cmd">hg qpush <option
+    <para id="x_413">During the <command role="hg-cmd">hg qpush <option
 	  role="hg-ext-mq-cmd-qpush-opt">hg -m</option></command>,
       each patch in the <filename role="special">series</filename>
       file is applied normally.  If a patch applies with fuzz or
@@ -889,10 +887,10 @@
       Mercurial's normal merge machinery, so it may pop up a GUI merge
       tool to help you to resolve problems.</para>
 
-    <para>When you finish resolving the effects of a patch, MQ
+    <para id="x_414">When you finish resolving the effects of a patch, MQ
       refreshes your patch based on the result of the merge.</para>
 
-    <para>At the end of this process, your repository will have one
+    <para id="x_415">At the end of this process, your repository will have one
       extra head from the old patch queue, and a copy of the old patch
       queue will be in <filename role="special"
 	class="directory">.hg/patches.N</filename>. You can remove the
@@ -906,26 +904,26 @@
   <sect1>
     <title>Identifying patches</title>
 
-    <para>MQ commands that work with patches let you refer to a patch
+    <para id="x_416">MQ commands that work with patches let you refer to a patch
       either by using its name or by a number.  By name is obvious
       enough; pass the name <filename>foo.patch</filename> to <command
 	role="hg-ext-mq">qpush</command>, for example, and it will
       push patches until <filename>foo.patch</filename> is
       applied.</para>
 
-    <para>As a shortcut, you can refer to a patch using both a name
+    <para id="x_417">As a shortcut, you can refer to a patch using both a name
       and a numeric offset; <literal>foo.patch-2</literal> means
       <quote>two patches before <literal>foo.patch</literal></quote>,
       while <literal>bar.patch+4</literal> means <quote>four patches
 	after <literal>bar.patch</literal></quote>.</para>
 
-    <para>Referring to a patch by index isn't much different.  The
+    <para id="x_418">Referring to a patch by index isn't much different.  The
       first patch printed in the output of <command
 	role="hg-ext-mq">qseries</command> is patch zero (yes, it's
       one of those start-at-zero counting systems); the second is
       patch one; and so on.</para>
 
-    <para>MQ also makes it easy to work with patches when you are
+    <para id="x_419">MQ also makes it easy to work with patches when you are
       using normal Mercurial commands.  Every command that accepts a
       changeset ID will also accept the name of an applied patch.  MQ
       augments the tags normally in the repository with an eponymous
@@ -935,28 +933,28 @@
       the <quote>bottom-most</quote> and topmost applied patches,
       respectively.</para>
 
-    <para>These additions to Mercurial's normal tagging capabilities
+    <para id="x_41a">These additions to Mercurial's normal tagging capabilities
       make dealing with patches even more of a breeze.</para>
     <itemizedlist>
-      <listitem><para>Want to patchbomb a mailing list with your
+      <listitem><para id="x_41b">Want to patchbomb a mailing list with your
 	  latest series of changes?</para>
 	<programlisting>hg email qbase:qtip</programlisting>
-	<para>  (Don't know what <quote>patchbombing</quote> is?  See
-	  section <xref linkend="sec.hgext.patchbomb"/>.)</para>
+	<para id="x_41c">  (Don't know what <quote>patchbombing</quote> is?  See
+	  <xref linkend="sec:hgext:patchbomb"/>.)</para>
       </listitem>
-      <listitem><para>Need to see all of the patches since
+      <listitem><para id="x_41d">Need to see all of the patches since
 	  <literal>foo.patch</literal> that have touched files in a
 	  subdirectory of your tree?</para>
 	<programlisting>hg log -r foo.patch:qtip subdir</programlisting>
       </listitem>
     </itemizedlist>
 
-    <para>Because MQ makes the names of patches available to the rest
+    <para id="x_41e">Because MQ makes the names of patches available to the rest
       of Mercurial through its normal internal tag machinery, you
       don't need to type in the entire name of a patch when you want
       to identify it by name.</para>
 
-    <para>Another nice consequence of representing patch names as tags
+    <para id="x_41f">Another nice consequence of representing patch names as tags
       is that when you run the <command role="hg-cmd">hg log</command>
       command, it will display a patch's name as a tag, simply as part
       of its normal output.  This makes it easy to visually
@@ -971,21 +969,21 @@
   <sect1>
     <title>Useful things to know about</title>
 
-    <para>There are a number of aspects of MQ usage that don't fit
+    <para id="x_420">There are a number of aspects of MQ usage that don't fit
       tidily into sections of their own, but that are good to know.
       Here they are, in one place.</para>
 
     <itemizedlist>
-      <listitem><para>Normally, when you <command
+      <listitem><para id="x_421">Normally, when you <command
 	    role="hg-ext-mq">qpop</command> a patch and <command
 	    role="hg-ext-mq">qpush</command> it again, the changeset
 	  that represents the patch after the pop/push will have a
 	  <emphasis>different identity</emphasis> than the changeset
-	  that represented the hash beforehand.  See section <xref
-	    linkend="sec.mqref.cmd.qpush"/> for
+	  that represented the hash beforehand.  See <xref
+	    linkend="sec:mqref:cmd:qpush"/> for
 	  information as to why this is.</para>
       </listitem>
-      <listitem><para>It's not a good idea to <command
+      <listitem><para id="x_422">It's not a good idea to <command
 	    role="hg-cmd">hg merge</command> changes from another
 	  branch with a patch changeset, at least if you want to
 	  maintain the <quote>patchiness</quote> of that changeset and
@@ -995,16 +993,16 @@
       </listitem></itemizedlist>
 
   </sect1>
-  <sect1 id="sec.mq.repo">
+  <sect1 id="sec:mq:repo">
     <title>Managing patches in a repository</title>
 
-    <para>Because MQ's <filename role="special"
+    <para id="x_423">Because MQ's <filename role="special"
 	class="directory">.hg/patches</filename> directory resides
       outside a Mercurial repository's working directory, the
       <quote>underlying</quote> Mercurial repository knows nothing
       about the management or presence of patches.</para>
 
-    <para>This presents the interesting possibility of managing the
+    <para id="x_424">This presents the interesting possibility of managing the
       contents of the patch directory as a Mercurial repository in its
       own right.  This can be a useful way to work.  For example, you
       can work on a patch for a while, <command
@@ -1013,7 +1011,7 @@
       patch.  This lets you <quote>roll back</quote> to that version
       of the patch later on.</para>
 
-    <para>You can then share different versions of the same patch
+    <para id="x_425">You can then share different versions of the same patch
       stack among multiple underlying repositories.  I use this when I
       am developing a Linux kernel feature.  I have a pristine copy of
       my kernel sources for each of several CPU architectures, and a
@@ -1023,7 +1021,7 @@
       associated with that kernel tree, pop and push all of my
       patches, and build and test that kernel.</para>
 
-    <para>Managing patches in a repository makes it possible for
+    <para id="x_426">Managing patches in a repository makes it possible for
       multiple developers to work on the same patch series without
       colliding with each other, all on top of an underlying source
       base that they may or may not control.</para>
@@ -1031,7 +1029,7 @@
     <sect2>
       <title>MQ support for patch repositories</title>
 
-      <para>MQ helps you to work with the <filename role="special"
+      <para id="x_427">MQ helps you to work with the <filename role="special"
 	  class="directory">.hg/patches</filename> directory as a
 	repository; when you prepare a repository for working with
 	patches using <command role="hg-ext-mq">qinit</command>, you
@@ -1041,7 +1039,7 @@
 	Mercurial repository.</para>
 
       <note>
-	<para>  If you forget to use the <option
+	<para id="x_428">  If you forget to use the <option
 	    role="hg-ext-mq-cmd-qinit-opt">hg -c</option> option, you
 	  can simply go into the <filename role="special"
 	    class="directory">.hg/patches</filename> directory at any
@@ -1050,25 +1048,25 @@
 	    role="special">status</filename> file to the <filename
 	    role="special">.hgignore</filename> file, though</para>
 
-	<para>  (<command role="hg-cmd">hg qinit <option
+	<para id="x_429">  (<command role="hg-cmd">hg qinit <option
 	      role="hg-ext-mq-cmd-qinit-opt">hg -c</option></command>
 	  does this for you automatically); you
 	  <emphasis>really</emphasis> don't want to manage the
 	  <filename role="special">status</filename> file.</para>
       </note>
 
-      <para>As a convenience, if MQ notices that the <filename
+      <para id="x_42a">As a convenience, if MQ notices that the <filename
 	  class="directory">.hg/patches</filename> directory is a
 	repository, it will automatically <command role="hg-cmd">hg
 	  add</command> every patch that you create and import.</para>
 
-      <para>MQ provides a shortcut command, <command
+      <para id="x_42b">MQ provides a shortcut command, <command
 	  role="hg-ext-mq">qcommit</command>, that runs <command
 	  role="hg-cmd">hg commit</command> in the <filename
 	  role="special" class="directory">.hg/patches</filename>
 	directory.  This saves some bothersome typing.</para>
 
-      <para>Finally, as a convenience to manage the patch directory,
+      <para id="x_42c">Finally, as a convenience to manage the patch directory,
 	you can define the alias <command>mq</command> on Unix
 	systems. For example, on Linux systems using the
 	<command>bash</command> shell, you can include the following
@@ -1077,17 +1075,17 @@
 
       <programlisting>alias mq=`hg -R $(hg root)/.hg/patches'</programlisting>
 
-      <para>You can then issue commands of the form <command>mq
+      <para id="x_42d">You can then issue commands of the form <command>mq
 	  pull</command> from the main repository.</para>
 
     </sect2>
     <sect2>
       <title>A few things to watch out for</title>
 
-      <para>MQ's support for working with a repository full of patches
+      <para id="x_42e">MQ's support for working with a repository full of patches
 	is limited in a few small respects.</para>
 
-      <para>MQ cannot automatically detect changes that you make to
+      <para id="x_42f">MQ cannot automatically detect changes that you make to
 	the patch directory.  If you <command role="hg-cmd">hg
 	  pull</command>, manually edit, or <command role="hg-cmd">hg
 	  update</command> changes to patches or the <filename
@@ -1102,14 +1100,14 @@
 
     </sect2>
   </sect1>
-  <sect1 id="sec.mq.tools">
+  <sect1 id="sec:mq:tools">
     <title>Third party tools for working with patches</title>
 
-    <para>Once you've been working with patches for a while, you'll
+    <para id="x_430">Once you've been working with patches for a while, you'll
       find yourself hungry for tools that will help you to understand
       and manipulate the patches you're dealing with.</para>
 
-    <para>The <command>diffstat</command> command
+    <para id="x_431">The <command>diffstat</command> command
       <citation>web:diffstat</citation> generates a histogram of the
       modifications made to each file in a patch.  It provides a good
       way to <quote>get a sense of</quote> a patch&emdash;which files
@@ -1123,7 +1121,7 @@
 
 &interaction.mq.tools.tools;
 
-    <para>The <literal role="package">patchutils</literal> package
+    <para id="x_432">The <literal role="package">patchutils</literal> package
       <citation>web:patchutils</citation> is invaluable. It provides a
       set of small utilities that follow the <quote>Unix
 	philosophy;</quote> each does one useful thing with a patch.
@@ -1133,21 +1131,21 @@
       hundreds of files across dozens of directories, a single
       invocation of <command>filterdiff</command> can generate a
       smaller patch that only touches files whose names match a
-      particular glob pattern.  See section <xref
-	linkend="mq-collab.tips.interdiff"/> for another
+      particular glob pattern.  See <xref
+	linkend="mq-collab:tips:interdiff"/> for another
       example.</para>
 
   </sect1>
   <sect1>
     <title>Good ways to work with patches</title>
 
-    <para>Whether you are working on a patch series to submit to a
+    <para id="x_433">Whether you are working on a patch series to submit to a
       free software or open source project, or a series that you
       intend to treat as a sequence of regular changesets when you're
       done, you can use some simple techniques to keep your work well
       organised.</para>
 
-    <para>Give your patches descriptive names.  A good name for a
+    <para id="x_434">Give your patches descriptive names.  A good name for a
       patch might be <filename>rework-device-alloc.patch</filename>,
       because it will immediately give you a hint what the purpose of
       the patch is.  Long names shouldn't be a problem; you won't be
@@ -1159,7 +1157,7 @@
       to work with, or if you are juggling a number of different tasks
       and your patches only get a fraction of your attention.</para>
 
-    <para>Be aware of what patch you're working on.  Use the <command
+    <para id="x_435">Be aware of what patch you're working on.  Use the <command
 	role="hg-ext-mq">qtop</command> command and skim over the text
       of your patches frequently&emdash;for example, using <command
 	role="hg-cmd">hg tip <option
@@ -1169,9 +1167,9 @@
       one I intended, and it's often tricky to migrate changes into
       the right patch after making them in the wrong one.</para>
 
-    <para>For this reason, it is very much worth investing a little
+    <para id="x_436">For this reason, it is very much worth investing a little
       time to learn how to use some of the third-party tools I
-      described in section <xref linkend="sec.mq.tools"/>,
+      described in <xref linkend="sec:mq:tools"/>,
       particularly
       <command>diffstat</command> and <command>filterdiff</command>.
       The former will give you a quick idea of what changes your patch
@@ -1185,28 +1183,28 @@
     <sect2>
       <title>Manage <quote>trivial</quote> patches</title>
 
-      <para>Because the overhead of dropping files into a new
+      <para id="x_437">Because the overhead of dropping files into a new
 	Mercurial repository is so low, it makes a lot of sense to
 	manage patches this way even if you simply want to make a few
 	changes to a source tarball that you downloaded.</para>
 
-      <para>Begin by downloading and unpacking the source tarball, and
+      <para id="x_438">Begin by downloading and unpacking the source tarball, and
 	turning it into a Mercurial repository.</para>
 
       &interaction.mq.tarball.download;
 
-      <para>Continue by creating a patch stack and making your
+      <para id="x_439">Continue by creating a patch stack and making your
 	changes.</para>
 
       &interaction.mq.tarball.qinit;
 
-      <para>Let's say a few weeks or months pass, and your package
+      <para id="x_43a">Let's say a few weeks or months pass, and your package
 	author releases a new version.  First, bring their changes
 	into the repository.</para>
 
       &interaction.mq.tarball.newsource;
 
-      <para>The pipeline starting with <command role="hg-cmd">hg
+      <para id="x_43b">The pipeline starting with <command role="hg-cmd">hg
 	  locate</command> above deletes all files in the working
 	directory, so that <command role="hg-cmd">hg
 	  commit</command>'s <option
@@ -1214,16 +1212,16 @@
 	actually tell which files have really been removed in the
 	newer version of the source.</para>
 
-      <para>Finally, you can apply your patches on top of the new
+      <para id="x_43c">Finally, you can apply your patches on top of the new
 	tree.</para>
 
       &interaction.mq.tarball.repush;
 
     </sect2>
-    <sect2 id="sec.mq.combine">
+    <sect2 id="sec:mq:combine">
       <title>Combining entire patches</title>
 
-      <para>MQ provides a command, <command
+      <para id="x_43d">MQ provides a command, <command
 	  role="hg-ext-mq">qfold</command> that lets you combine
 	entire patches.  This <quote>folds</quote> the patches you
 	name, in the order you name them, into the topmost applied
@@ -1231,7 +1229,7 @@
 	description.  The patches that you fold must be unapplied
 	before you fold them.</para>
 
-      <para>The order in which you fold patches matters.  If your
+      <para id="x_43e">The order in which you fold patches matters.  If your
 	topmost applied patch is <literal>foo</literal>, and you
 	<command role="hg-ext-mq">qfold</command>
 	<literal>bar</literal> and <literal>quux</literal> into it,
@@ -1244,11 +1242,11 @@
     <sect2>
       <title>Merging part of one patch into another</title>
 
-      <para>Merging <emphasis>part</emphasis> of one patch into
+      <para id="x_43f">Merging <emphasis>part</emphasis> of one patch into
 	another is more difficult than combining entire
 	patches.</para>
 
-      <para>If you want to move changes to entire files, you can use
+      <para id="x_440">If you want to move changes to entire files, you can use
 	<command>filterdiff</command>'s <option
 	  role="cmd-opt-filterdiff">-i</option> and <option
 	  role="cmd-opt-filterdiff">-x</option> options to choose the
@@ -1261,7 +1259,7 @@
 	<command role="hg-ext-mq">qrefresh</command> the patch to drop
 	the duplicate hunks.</para>
 
-      <para>If you have a patch that has multiple hunks modifying a
+      <para id="x_441">If you have a patch that has multiple hunks modifying a
 	file, and you only want to move a few of those hunks, the job
 	becomes more messy, but you can still partly automate it.  Use
 	<command>lsdiff -nvv</command> to print some metadata about
@@ -1269,21 +1267,21 @@
 
       &interaction.mq.tools.lsdiff;
 
-      <para>This command prints three different kinds of
+      <para id="x_442">This command prints three different kinds of
 	number:</para>
       <itemizedlist>
-	<listitem><para>(in the first column) a <emphasis>file
+	<listitem><para id="x_443">(in the first column) a <emphasis>file
 	      number</emphasis> to identify each file modified in the
 	    patch;</para>
 	</listitem>
-	<listitem><para>(on the next line, indented) the line number
+	<listitem><para id="x_444">(on the next line, indented) the line number
 	    within a modified file where a hunk starts; and</para>
 	</listitem>
-	<listitem><para>(on the same line) a <emphasis>hunk
+	<listitem><para id="x_445">(on the same line) a <emphasis>hunk
 	      number</emphasis> to identify that hunk.</para>
 	</listitem></itemizedlist>
 
-      <para>You'll have to use some visual inspection, and reading of
+      <para id="x_446">You'll have to use some visual inspection, and reading of
 	the patch, to identify the file and hunk numbers you'll want,
 	but you can then pass them to to
 	<command>filterdiff</command>'s <option
@@ -1291,20 +1289,20 @@
 	  role="cmd-opt-filterdiff">--hunks</option> options, to
 	select exactly the file and hunk you want to extract.</para>
 
-      <para>Once you have this hunk, you can concatenate it onto the
+      <para id="x_447">Once you have this hunk, you can concatenate it onto the
 	end of your destination patch and continue with the remainder
-	of section <xref linkend="sec.mq.combine"/>.</para>
+	of <xref linkend="sec:mq:combine"/>.</para>
 
     </sect2>
   </sect1>
   <sect1>
     <title>Differences between quilt and MQ</title>
 
-    <para>If you are already familiar with quilt, MQ provides a
+    <para id="x_448">If you are already familiar with quilt, MQ provides a
       similar command set.  There are a few differences in the way
       that it works.</para>
 
-    <para>You will already have noticed that most quilt commands have
+    <para id="x_449">You will already have noticed that most quilt commands have
       MQ counterparts that simply begin with a
       <quote><literal>q</literal></quote>.  The exceptions are quilt's
       <literal>add</literal> and <literal>remove</literal> commands,
--- a/en/ch12-mq-collab.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/ch12-mq-collab.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,6 +1,6 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<chapter id="chap.mq-collab">
+<chapter id="chap:mq-collab">
   <?dbhtml filename="advanced-uses-of-mercurial-queues.html"?>
   <title>Advanced uses of Mercurial Queues</title>
 
@@ -430,12 +430,12 @@
 	path separators.</para>
 
     </sect2>
-    <sect2 id="mq-collab.tips.interdiff">
+    <sect2 id="mq-collab:tips:interdiff">
       <title>Viewing the history of a patch</title>
 
       <para id="x_19a">If you're developing a set of patches over a long time,
 	it's a good idea to maintain them in a repository, as
-	discussed in section <xref linkend="sec.mq.repo"/>.  If you do
+	discussed in <xref linkend="sec:mq:repo"/>.  If you do
 	so, you'll quickly
 	discover that using the <command role="hg-cmd">hg
 	  diff</command> command to look at the history of changes to
@@ -504,8 +504,8 @@
 
       <para id="x_1a2">The <literal role="hg-ext">extdiff</literal> extension is
 	useful for more than merely improving the presentation of MQ
-	patches.  To read more about it, go to section <xref
-	  linkend="sec.hgext.extdiff"/>.</para>
+	patches.  To read more about it, go to <xref
+	  linkend="sec:hgext:extdiff"/>.</para>
 
     </sect2>
   </sect1>
--- a/en/ch13-hgext.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/ch13-hgext.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,27 +1,27 @@
 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
 
-<chapter id="chap.hgext">
+<chapter id="chap:hgext">
   <?dbhtml filename="adding-functionality-with-extensions.html"?>
   <title>Adding functionality with extensions</title>
 
-  <para>While the core of Mercurial is quite complete from a
+  <para id="x_4fe">While the core of Mercurial is quite complete from a
     functionality standpoint, it's deliberately shorn of fancy
     features.  This approach of preserving simplicity keeps the
     software easy to deal with for both maintainers and users.</para>
 
-  <para>However, Mercurial doesn't box you in with an inflexible
+  <para id="x_4ff">However, Mercurial doesn't box you in with an inflexible
     command set: you can add features to it as
     <emphasis>extensions</emphasis> (sometimes known as
     <emphasis>plugins</emphasis>).  We've already discussed a few of
     these extensions in earlier chapters.</para>
   <itemizedlist>
-    <listitem><para>Section <xref linkend="sec.tour-merge.fetch"/>
+    <listitem><para id="x_500"><xref linkend="sec:tour-merge:fetch"/>
 	covers the <literal role="hg-ext">fetch</literal> extension;
 	this combines pulling new changes and merging them with local
 	changes into a single command, <command
 	  role="hg-ext-fetch">fetch</command>.</para>
     </listitem>
-    <listitem><para>In chapter <xref linkend="chap.hook"/>, we covered
+    <listitem><para id="x_501">In <xref linkend="chap:hook"/>, we covered
 	several extensions that are useful for hook-related
 	functionality: <literal role="hg-ext">acl</literal> adds
 	access control lists; <literal
@@ -30,36 +30,36 @@
 	  role="hg-ext">notify</literal> sends notification emails on
 	new changes.</para>
     </listitem>
-    <listitem><para>The Mercurial Queues patch management extension is
+    <listitem><para id="x_502">The Mercurial Queues patch management extension is
 	so invaluable that it merits two chapters and an appendix all
-	to itself. Chapter <xref linkend="chap.mq"/> covers the
-	basics; chapter <xref
-	  linkend="chap.mq-collab"/> discusses advanced topics;
-	and appendix <xref linkend="chap.mqref"/> goes into detail on
+	to itself. <xref linkend="chap:mq"/> covers the
+	basics; <xref
+	  linkend="chap:mq-collab"/> discusses advanced topics;
+	and <xref linkend="chap:mqref"/> goes into detail on
 	each
 	command.</para>
     </listitem></itemizedlist>
 
-  <para>In this chapter, we'll cover some of the other extensions that
+  <para id="x_503">In this chapter, we'll cover some of the other extensions that
     are available for Mercurial, and briefly touch on some of the
     machinery you'll need to know about if you want to write an
     extension of your own.</para>
   <itemizedlist>
-    <listitem><para>In section <xref linkend="sec.hgext.inotify"/>,
+    <listitem><para id="x_504">In <xref linkend="sec:hgext:inotify"/>,
 	we'll discuss the possibility of <emphasis>huge</emphasis>
 	performance improvements using the <literal
 	  role="hg-ext">inotify</literal> extension.</para>
     </listitem></itemizedlist>
 
-  <sect1 id="sec.hgext.inotify">
+  <sect1 id="sec:hgext:inotify">
     <title>Improve performance with the <literal
 	role="hg-ext">inotify</literal> extension</title>
 
-    <para>Are you interested in having some of the most common
+    <para id="x_505">Are you interested in having some of the most common
       Mercurial operations run as much as a hundred times faster?
       Read on!</para>
 
-    <para>Mercurial has great performance under normal circumstances.
+    <para id="x_506">Mercurial has great performance under normal circumstances.
       For example, when you run the <command role="hg-cmd">hg
 	status</command> command, Mercurial has to scan almost every
       directory and file in your repository so that it can display
@@ -69,7 +69,7 @@
       machinery to avoid doing an expensive comparison operation on
       files that obviously haven't changed.</para>
 
-    <para>Because obtaining file status is crucial to good
+    <para id="x_507">Because obtaining file status is crucial to good
       performance, the authors of Mercurial have optimised this code
       to within an inch of its life.  However, there's no avoiding the
       fact that when you run <command role="hg-cmd">hg
@@ -79,20 +79,20 @@
       checked.  For a sufficiently large repository, this can take a
       long time.</para>
 
-    <para>To put a number on the magnitude of this effect, I created a
+    <para id="x_508">To put a number on the magnitude of this effect, I created a
       repository containing 150,000 managed files.  I timed <command
 	role="hg-cmd">hg status</command> as taking ten seconds to
       run, even when <emphasis>none</emphasis> of those files had been
       modified.</para>
 
-    <para>Many modern operating systems contain a file notification
+    <para id="x_509">Many modern operating systems contain a file notification
       facility. If a program signs up to an appropriate service, the
       operating system will notify it every time a file of interest is
       created, modified, or deleted.  On Linux systems, the kernel
       component that does this is called
       <literal>inotify</literal>.</para>
 
-    <para>Mercurial's <literal role="hg-ext">inotify</literal>
+    <para id="x_50a">Mercurial's <literal role="hg-ext">inotify</literal>
       extension talks to the kernel's <literal>inotify</literal>
       component to optimise <command role="hg-cmd">hg status</command>
       commands.  The extension has two components.  A daemon sits in
@@ -105,29 +105,29 @@
       with a result instantaneously, avoiding the need to scan every
       directory and file in the repository.</para>
 
-    <para>Recall the ten seconds that I measured plain Mercurial as
+    <para id="x_50b">Recall the ten seconds that I measured plain Mercurial as
       taking to run <command role="hg-cmd">hg status</command> on a
       150,000 file repository.  With the <literal
 	role="hg-ext">inotify</literal> extension enabled, the time
       dropped to 0.1 seconds, a factor of <emphasis>one
 	hundred</emphasis> faster.</para>
 
-    <para>Before we continue, please pay attention to some
+    <para id="x_50c">Before we continue, please pay attention to some
       caveats.</para>
     <itemizedlist>
-      <listitem><para>The <literal role="hg-ext">inotify</literal>
+      <listitem><para id="x_50d">The <literal role="hg-ext">inotify</literal>
 	  extension is Linux-specific.  Because it interfaces directly
 	  to the Linux kernel's <literal>inotify</literal> subsystem,
 	  it does not work on other operating systems.</para>
       </listitem>
-      <listitem><para>It should work on any Linux distribution that
+      <listitem><para id="x_50e">It should work on any Linux distribution that
 	  was released after early 2005.  Older distributions are
 	  likely to have a kernel that lacks
 	  <literal>inotify</literal>, or a version of
 	  <literal>glibc</literal> that does not have the necessary
 	  interfacing support.</para>
       </listitem>
-      <listitem><para>Not all filesystems are suitable for use with
+      <listitem><para id="x_50f">Not all filesystems are suitable for use with
 	  the <literal role="hg-ext">inotify</literal> extension.
 	  Network filesystems such as NFS are a non-starter, for
 	  example, particularly if you're running Mercurial on several
@@ -138,40 +138,40 @@
 	  fine.</para>
       </listitem></itemizedlist>
 
-    <para>The <literal role="hg-ext">inotify</literal> extension is
+    <para id="x_510">The <literal role="hg-ext">inotify</literal> extension is
       not yet shipped with Mercurial as of May 2007, so it's a little
       more involved to set up than other extensions.  But the
       performance improvement is worth it!</para>
 
-    <para>The extension currently comes in two parts: a set of patches
+    <para id="x_511">The extension currently comes in two parts: a set of patches
       to the Mercurial source code, and a library of Python bindings
       to the <literal>inotify</literal> subsystem.</para>
     <note>
-      <para>  There are <emphasis>two</emphasis> Python
+      <para id="x_512">  There are <emphasis>two</emphasis> Python
 	<literal>inotify</literal> binding libraries.  One of them is
 	called <literal>pyinotify</literal>, and is packaged by some
 	Linux distributions as <literal>python-inotify</literal>.
 	This is <emphasis>not</emphasis> the one you'll need, as it is
 	too buggy and inefficient to be practical.</para>
     </note>
-    <para>To get going, it's best to already have a functioning copy
+    <para id="x_513">To get going, it's best to already have a functioning copy
       of Mercurial installed.</para>
     <note>
-      <para>  If you follow the instructions below, you'll be
+      <para id="x_514">  If you follow the instructions below, you'll be
 	<emphasis>replacing</emphasis> and overwriting any existing
 	installation of Mercurial that you might already have, using
 	the latest <quote>bleeding edge</quote> Mercurial code. Don't
 	say you weren't warned!</para>
     </note>
     <orderedlist>
-      <listitem><para>Clone the Python <literal>inotify</literal>
+      <listitem><para id="x_515">Clone the Python <literal>inotify</literal>
 	  binding repository.  Build and install it.</para>
 	<programlisting>hg clone http://hg.kublai.com/python/inotify
 cd inotify
 python setup.py build --force
 sudo python setup.py install --skip-build</programlisting>
       </listitem>
-      <listitem><para>Clone the <filename
+      <listitem><para id="x_516">Clone the <filename
 	    class="directory">crew</filename> Mercurial repository.
 	  Clone the <literal role="hg-ext">inotify</literal> patch
 	  repository so that Mercurial Queues will be able to apply
@@ -181,13 +181,13 @@
 hg clone crew inotify
 hg clone http://hg.kublai.com/mercurial/patches/inotify inotify/.hg/patches</programlisting>
       </listitem>
-      <listitem><para>Make sure that you have the Mercurial Queues
+      <listitem><para id="x_517">Make sure that you have the Mercurial Queues
 	  extension, <literal role="hg-ext">mq</literal>, enabled.  If
-	  you've never used MQ, read section <xref
-	    linkend="sec.mq.start"/> to get started
+	  you've never used MQ, read <xref
+	    linkend="sec:mq:start"/> to get started
 	  quickly.</para>
       </listitem>
-      <listitem><para>Go into the <filename
+      <listitem><para id="x_518">Go into the <filename
 	    class="directory">inotify</filename> repo, and apply all
 	  of the <literal role="hg-ext">inotify</literal> patches
 	  using the <option role="hg-ext-mq-cmd-qpush-opt">hg
@@ -196,28 +196,28 @@
 	<programlisting>cd inotify
 hg qpush -a</programlisting>
       </listitem>
-      <listitem><para>  If you get an error message from <command
+      <listitem><para id="x_519">  If you get an error message from <command
 	    role="hg-ext-mq">qpush</command>, you should not continue.
 	  Instead, ask for help.</para>
       </listitem>
-      <listitem><para>Build and install the patched version of
+      <listitem><para id="x_51a">Build and install the patched version of
 	  Mercurial.</para>
 	<programlisting>python setup.py build --force
 sudo python setup.py install --skip-build</programlisting>
       </listitem>
     </orderedlist>
-    <para>Once you've build a suitably patched version of Mercurial,
+    <para id="x_51b">Once you've build a suitably patched version of Mercurial,
       all you need to do to enable the <literal
 	role="hg-ext">inotify</literal> extension is add an entry to
       your <filename role="special">~/.hgrc</filename>.</para>
     <programlisting>[extensions] inotify =</programlisting>
-    <para>When the <literal role="hg-ext">inotify</literal> extension
+    <para id="x_51c">When the <literal role="hg-ext">inotify</literal> extension
       is enabled, Mercurial will automatically and transparently start
       the status daemon the first time you run a command that needs
       status in a repository.  It runs one status daemon per
       repository.</para>
 
-    <para>The status daemon is started silently, and runs in the
+    <para id="x_51d">The status daemon is started silently, and runs in the
       background.  If you look at a list of running processes after
       you've enabled the <literal role="hg-ext">inotify</literal>
       extension and run a few commands in different repositories,
@@ -225,7 +225,7 @@
       around, waiting for updates from the kernel and queries from
       Mercurial.</para>
 
-    <para>The first time you run a Mercurial command in a repository
+    <para id="x_51e">The first time you run a Mercurial command in a repository
       when you have the <literal role="hg-ext">inotify</literal>
       extension enabled, it will run with about the same performance
       as a normal Mercurial command.  This is because the status
@@ -239,14 +239,14 @@
       status operations almost instantaneous on repositories of all
       sizes!</para>
 
-    <para>If you like, you can manually start a status daemon using
+    <para id="x_51f">If you like, you can manually start a status daemon using
       the <command role="hg-ext-inotify">inserve</command> command.
       This gives you slightly finer control over how the daemon ought
       to run.  This command will of course only be available when the
       <literal role="hg-ext">inotify</literal> extension is
       enabled.</para>
 
-    <para>When you're using the <literal
+    <para id="x_520">When you're using the <literal
 	role="hg-ext">inotify</literal> extension, you should notice
       <emphasis>no difference at all</emphasis> in Mercurial's
       behaviour, with the sole exception of status-related commands
@@ -256,28 +256,28 @@
       these situations occurs, please report a bug.</para>
 
   </sect1>
-  <sect1 id="sec.hgext.extdiff">
+  <sect1 id="sec:hgext:extdiff">
     <title>Flexible diff support with the <literal
 	role="hg-ext">extdiff</literal> extension</title>
 
-    <para>Mercurial's built-in <command role="hg-cmd">hg
+    <para id="x_521">Mercurial's built-in <command role="hg-cmd">hg
 	diff</command> command outputs plaintext unified diffs.</para>
 
     &interaction.extdiff.diff;
 
-    <para>If you would like to use an external tool to display
+    <para id="x_522">If you would like to use an external tool to display
       modifications, you'll want to use the <literal
 	role="hg-ext">extdiff</literal> extension.  This will let you
       use, for example, a graphical diff tool.</para>
 
-    <para>The <literal role="hg-ext">extdiff</literal> extension is
+    <para id="x_523">The <literal role="hg-ext">extdiff</literal> extension is
       bundled with Mercurial, so it's easy to set up.  In the <literal
 	role="rc-extensions">extensions</literal> section of your
       <filename role="special">~/.hgrc</filename>, simply add a
       one-line entry to enable the extension.</para>
     <programlisting>[extensions]
 extdiff =</programlisting>
-    <para>This introduces a command named <command
+    <para id="x_524">This introduces a command named <command
 	role="hg-ext-extdiff">extdiff</command>, which by default uses
       your system's <command>diff</command> command to generate a
       unified diff in the same form as the built-in <command
@@ -285,12 +285,12 @@
     
     &interaction.extdiff.extdiff;
 
-    <para>The result won't be exactly the same as with the built-in
+    <para id="x_525">The result won't be exactly the same as with the built-in
       <command role="hg-cmd">hg diff</command> variations, because the
       output of <command>diff</command> varies from one system to
       another, even when passed the same options.</para>
 
-    <para>As the <quote><literal>making snapshot</literal></quote>
+    <para id="x_526">As the <quote><literal>making snapshot</literal></quote>
       lines of output above imply, the <command
 	role="hg-ext-extdiff">extdiff</command> command works by
       creating two snapshots of your source tree.  The first snapshot
@@ -303,7 +303,7 @@
       directories and files that have changed between the two
       revisions.</para>
 
-    <para>Snapshot directory names have the same base name as your
+    <para id="x_527">Snapshot directory names have the same base name as your
       repository. If your repository path is <filename
 	class="directory">/quux/bar/foo</filename>, then <filename
 	class="directory">foo</filename> will be the name of each
@@ -319,7 +319,7 @@
       that the diff has the snapshot directory names embedded in its
       header.</para>
 
-    <para>The <command role="hg-ext-extdiff">extdiff</command> command
+    <para id="x_528">The <command role="hg-ext-extdiff">extdiff</command> command
       accepts two important options. The <option
 	role="hg-ext-extdiff-cmd-extdiff-opt">hg -p</option> option
       lets you choose a program to view differences with, instead of
@@ -336,7 +336,7 @@
       and arguments to specify the revisions you want, the files you
       want, and so on.</para>
 
-    <para>As an example, here's how to run the normal system
+    <para id="x_529">As an example, here's how to run the normal system
       <command>diff</command> command, getting it to generate context
       diffs (using the <option role="cmd-opt-diff">-c</option> option)
       instead of unified diffs, and five lines of context instead of
@@ -345,28 +345,28 @@
 
       &interaction.extdiff.extdiff-ctx;
 
-    <para>Launching a visual diff tool is just as easy.  Here's how to
+    <para id="x_52a">Launching a visual diff tool is just as easy.  Here's how to
       launch the <command>kdiff3</command> viewer.</para>
     <programlisting>hg extdiff -p kdiff3 -o</programlisting>
 
-    <para>If your diff viewing command can't deal with directories,
+    <para id="x_52b">If your diff viewing command can't deal with directories,
       you can easily work around this with a little scripting.  For an
       example of such scripting in action with the <literal
 	role="hg-ext">mq</literal> extension and the
-      <command>interdiff</command> command, see section <xref
-	linkend="mq-collab.tips.interdiff"/>.</para>
+      <command>interdiff</command> command, see <xref
+	linkend="mq-collab:tips:interdiff"/>.</para>
 
     <sect2>
       <title>Defining command aliases</title>
 
-      <para>It can be cumbersome to remember the options to both the
+      <para id="x_52c">It can be cumbersome to remember the options to both the
 	<command role="hg-ext-extdiff">extdiff</command> command and
 	the diff viewer you want to use, so the <literal
 	  role="hg-ext">extdiff</literal> extension lets you define
 	<emphasis>new</emphasis> commands that will invoke your diff
 	viewer with exactly the right options.</para>
 
-      <para>All you need to do is edit your <filename
+      <para id="x_52d">All you need to do is edit your <filename
 	  role="special">~/.hgrc</filename>, and add a section named
 	<literal role="rc-extdiff">extdiff</literal>.  Inside this
 	section, you can define multiple commands.  Here's how to add
@@ -376,7 +376,7 @@
 	will run <command>kdiff3</command> for you.</para>
       <programlisting>[extdiff]
 cmd.kdiff3 =</programlisting>
-      <para>If you leave the right hand side of the definition empty,
+      <para id="x_52e">If you leave the right hand side of the definition empty,
 	as above, the <literal role="hg-ext">extdiff</literal>
 	extension uses the name of the command you defined as the name
 	of the external program to run.  But these names don't have to
@@ -386,7 +386,7 @@
       <programlisting>[extdiff]
  cmd.wibble = kdiff3</programlisting>
 
-      <para>You can also specify the default options that you want to
+      <para id="x_52f">You can also specify the default options that you want to
 	invoke your diff viewing program with.  The prefix to use is
 	<quote><literal>opts.</literal></quote>, followed by the name
 	of the command to which the options apply.  This example
@@ -399,18 +399,18 @@
 
     </sect2>
   </sect1>
-  <sect1 id="sec.hgext.transplant">
+  <sect1 id="sec:hgext:transplant">
     <title>Cherrypicking changes with the <literal
 	role="hg-ext">transplant</literal> extension</title>
 
-    <para>Need to have a long chat with Brendan about this.</para>
+    <para id="x_530">Need to have a long chat with Brendan about this.</para>
 
   </sect1>
-  <sect1 id="sec.hgext.patchbomb">
+  <sect1 id="sec:hgext:patchbomb">
     <title>Send changes via email with the <literal
 	role="hg-ext">patchbomb</literal> extension</title>
 
-    <para>Many projects have a culture of <quote>change
+    <para id="x_531">Many projects have a culture of <quote>change
 	review</quote>, in which people send their modifications to a
       mailing list for others to read and comment on before they
       commit the final version to a shared repository.  Some projects
@@ -418,7 +418,7 @@
       other people to a repository to which those others don't have
       access.</para>
 
-    <para>Mercurial makes it easy to send changes over email for
+    <para id="x_532">Mercurial makes it easy to send changes over email for
       review or application, via its <literal
 	role="hg-ext">patchbomb</literal> extension.  The extension is
       so named because changes are formatted as patches, and it's usual
@@ -426,17 +426,17 @@
       of changes by email is thus much like <quote>bombing</quote> the
       recipient's inbox, hence <quote>patchbomb</quote>.</para>
 
-    <para>As usual, the basic configuration of the <literal
+    <para id="x_533">As usual, the basic configuration of the <literal
 	role="hg-ext">patchbomb</literal> extension takes just one or
       two lines in your <filename role="special">
 	/.hgrc</filename>.</para>
     <programlisting>[extensions]
 patchbomb =</programlisting>
-    <para>Once you've enabled the extension, you will have a new
+    <para id="x_534">Once you've enabled the extension, you will have a new
       command available, named <command
 	role="hg-ext-patchbomb">email</command>.</para>
 
-    <para>The safest and best way to invoke the <command
+    <para id="x_535">The safest and best way to invoke the <command
 	role="hg-ext-patchbomb">email</command> command is to
       <emphasis>always</emphasis> run it first with the <option
 	role="hg-ext-patchbomb-cmd-email-opt">hg -n</option> option.
@@ -447,12 +447,12 @@
 	role="hg-ext-patchbomb-cmd-email-opt">hg -n</option> option
       removed.</para>
 
-    <para>The <command role="hg-ext-patchbomb">email</command> command
+    <para id="x_536">The <command role="hg-ext-patchbomb">email</command> command
       accepts the same kind of revision syntax as every other
       Mercurial command.  For example, this command will send every
       revision between 7 and <literal>tip</literal>, inclusive.</para>
     <programlisting>hg email -n 7:tip</programlisting>
-    <para>You can also specify a <emphasis>repository</emphasis> to
+    <para id="x_537">You can also specify a <emphasis>repository</emphasis> to
       compare with.  If you provide a repository but no revisions, the
       <command role="hg-ext-patchbomb">email</command> command will
       send all revisions in the local repository that are not present
@@ -461,7 +461,7 @@
 	role="hg-ext-patchbomb-cmd-email-opt">hg -b</option> option),
       this will constrain the revisions sent.</para>
 
-    <para>It's perfectly safe to run the <command
+    <para id="x_538">It's perfectly safe to run the <command
 	role="hg-ext-patchbomb">email</command> command without the
       names of the people you want to send to: if you do this, it will
       just prompt you for those values interactively.  (If you're
@@ -469,12 +469,12 @@
       <literal>readline</literal>-style editing capabilities when
       entering those headers, too, which is useful.)</para>
 
-    <para>When you are sending just one revision, the <command
+    <para id="x_539">When you are sending just one revision, the <command
 	role="hg-ext-patchbomb">email</command> command will by
       default use the first line of the changeset description as the
       subject of the single email message it sends.</para>
 
-    <para>If you send multiple revisions, the <command
+    <para id="x_53a">If you send multiple revisions, the <command
 	role="hg-ext-patchbomb">email</command> command will usually
       send one message per changeset.  It will preface the series with
       an introductory message, in which you should describe the
@@ -483,39 +483,39 @@
     <sect2>
       <title>Changing the behaviour of patchbombs</title>
 
-      <para>Not every project has exactly the same conventions for
+      <para id="x_53b">Not every project has exactly the same conventions for
 	sending changes in email; the <literal
 	  role="hg-ext">patchbomb</literal> extension tries to
 	accommodate a number of variations through command line
 	options.</para>
       <itemizedlist>
-	<listitem><para>You can write a subject for the introductory
+	<listitem><para id="x_53c">You can write a subject for the introductory
 	    message on the command line using the <option
 	      role="hg-ext-patchbomb-cmd-email-opt">hg -s</option>
 	    option.  This takes one argument, the text of the subject
 	    to use.</para>
 	</listitem>
-	<listitem><para>To change the email address from which the
+	<listitem><para id="x_53d">To change the email address from which the
 	    messages originate, use the <option
 	      role="hg-ext-patchbomb-cmd-email-opt">hg -f</option>
 	    option.  This takes one argument, the email address to
 	    use.</para>
 	</listitem>
-	<listitem><para>The default behaviour is to send unified diffs
-	    (see section <xref linkend="sec.mq.patch"/> for a
+	<listitem><para id="x_53e">The default behaviour is to send unified diffs
+	    (see <xref linkend="sec:mq:patch"/> for a
 	    description of the
 	    format), one per message.  You can send a binary bundle
 	    instead with the <option
 	      role="hg-ext-patchbomb-cmd-email-opt">hg -b</option>
 	    option.</para>
 	</listitem>
-	<listitem><para>Unified diffs are normally prefaced with a
+	<listitem><para id="x_53f">Unified diffs are normally prefaced with a
 	    metadata header.  You can omit this, and send unadorned
 	    diffs, with the <option
 	      role="hg-ext-patchbomb-cmd-email-opt">hg
 	      --plain</option> option.</para>
 	</listitem>
-	<listitem><para>Diffs are normally sent <quote>inline</quote>,
+	<listitem><para id="x_540">Diffs are normally sent <quote>inline</quote>,
 	    in the same body part as the description of a patch.  This
 	    makes it easiest for the largest number of readers to
 	    quote and respond to parts of a diff, as some mail clients
@@ -525,14 +525,14 @@
 	      role="hg-ext-patchbomb-cmd-email-opt">hg -a</option>
 	    option.</para>
 	</listitem>
-	<listitem><para>Instead of sending mail messages, you can
+	<listitem><para id="x_541">Instead of sending mail messages, you can
 	    write them to an <literal>mbox</literal>-format mail
 	    folder using the <option
 	      role="hg-ext-patchbomb-cmd-email-opt">hg -m</option>
 	    option.  That option takes one argument, the name of the
 	    file to write to.</para>
 	</listitem>
-	<listitem><para>If you would like to add a
+	<listitem><para id="x_542">If you would like to add a
 	    <command>diffstat</command>-format summary to each patch,
 	    and one to the introductory message, use the <option
 	      role="hg-ext-patchbomb-cmd-email-opt">hg -d</option>
--- a/en/examples/auto-snippets.xml	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/examples/auto-snippets.xml	Mon Mar 30 16:23:33 2009 +0800
@@ -1,222 +1,225 @@
-<!ENTITY ch06-apache-config.lst SYSTEM "ch06/apache-config.lst">
-<!ENTITY ch10-bugzilla-config.lst SYSTEM "ch10/bugzilla-config.lst">
-<!ENTITY ch10-notify-config-mail.lst SYSTEM "ch10/notify-config-mail.lst">
-<!ENTITY ch10-notify-config.lst SYSTEM "ch10/notify-config.lst">
-<!ENTITY interaction.backout.init SYSTEM "results/backout.init.out">
-<!ENTITY interaction.backout.manual.backout SYSTEM "results/backout.manual.backout.out">
-<!ENTITY interaction.backout.manual.cat SYSTEM "results/backout.manual.cat.out">
-<!ENTITY interaction.backout.manual.clone SYSTEM "results/backout.manual.clone.out">
-<!ENTITY interaction.backout.manual.heads SYSTEM "results/backout.manual.heads.out">
-<!ENTITY interaction.backout.manual.log SYSTEM "results/backout.manual.log.out">
-<!ENTITY interaction.backout.manual.merge SYSTEM "results/backout.manual.merge.out">
-<!ENTITY interaction.backout.manual.parents SYSTEM "results/backout.manual.parents.out">
-<!ENTITY interaction.backout.non-tip.backout SYSTEM "results/backout.non-tip.backout.out">
-<!ENTITY interaction.backout.non-tip.cat SYSTEM "results/backout.non-tip.cat.out">
-<!ENTITY interaction.backout.non-tip.clone SYSTEM "results/backout.non-tip.clone.out">
-<!ENTITY interaction.backout.simple SYSTEM "results/backout.simple.out">
-<!ENTITY interaction.backout.simple.log SYSTEM "results/backout.simple.log.out">
-<!ENTITY interaction.bisect.commits SYSTEM "results/bisect.commits.out">
-<!ENTITY interaction.bisect.help SYSTEM "results/bisect.help.out">
-<!ENTITY interaction.bisect.init SYSTEM "results/bisect.init.out">
-<!ENTITY interaction.bisect.search.bad-init SYSTEM "results/bisect.search.bad-init.out">
-<!ENTITY interaction.bisect.search.good-init SYSTEM "results/bisect.search.good-init.out">
-<!ENTITY interaction.bisect.search.init SYSTEM "results/bisect.search.init.out">
-<!ENTITY interaction.bisect.search.mytest SYSTEM "results/bisect.search.mytest.out">
-<!ENTITY interaction.bisect.search.reset SYSTEM "results/bisect.search.reset.out">
-<!ENTITY interaction.bisect.search.rest SYSTEM "results/bisect.search.rest.out">
-<!ENTITY interaction.bisect.search.step1 SYSTEM "results/bisect.search.step1.out">
-<!ENTITY interaction.bisect.search.step2 SYSTEM "results/bisect.search.step2.out">
-<!ENTITY interaction.branch-named.branch SYSTEM "results/branch-named.branch.out">
-<!ENTITY interaction.branch-named.branches SYSTEM "results/branch-named.branches.out">
-<!ENTITY interaction.branch-named.commit SYSTEM "results/branch-named.commit.out">
-<!ENTITY interaction.branch-named.create SYSTEM "results/branch-named.create.out">
-<!ENTITY interaction.branch-named.foo-commit SYSTEM "results/branch-named.foo-commit.out">
-<!ENTITY interaction.branch-named.merge SYSTEM "results/branch-named.merge.out">
-<!ENTITY interaction.branch-named.parents SYSTEM "results/branch-named.parents.out">
-<!ENTITY interaction.branch-named.rebranch SYSTEM "results/branch-named.rebranch.out">
-<!ENTITY interaction.branch-named.status SYSTEM "results/branch-named.status.out">
-<!ENTITY interaction.branch-named.update-bar SYSTEM "results/branch-named.update-bar.out">
-<!ENTITY interaction.branch-named.update-nothing SYSTEM "results/branch-named.update-nothing.out">
-<!ENTITY interaction.branch-named.update-switchy SYSTEM "results/branch-named.update-switchy.out">
-<!ENTITY interaction.branch-repo.bugfix SYSTEM "results/branch-repo.bugfix.out">
-<!ENTITY interaction.branch-repo.clone SYSTEM "results/branch-repo.clone.out">
-<!ENTITY interaction.branch-repo.merge SYSTEM "results/branch-repo.merge.out">
-<!ENTITY interaction.branch-repo.new SYSTEM "results/branch-repo.new.out">
-<!ENTITY interaction.branch-repo.pull SYSTEM "results/branch-repo.pull.out">
-<!ENTITY interaction.branch-repo.tag SYSTEM "results/branch-repo.tag.out">
-<!ENTITY interaction.branching.clone SYSTEM "results/branching.clone.out">
-<!ENTITY interaction.branching.init SYSTEM "results/branching.init.out">
-<!ENTITY interaction.branching.main SYSTEM "results/branching.main.out">
-<!ENTITY interaction.branching.merge SYSTEM "results/branching.merge.out">
-<!ENTITY interaction.branching.stable SYSTEM "results/branching.stable.out">
-<!ENTITY interaction.branching.tag SYSTEM "results/branching.tag.out">
-<!ENTITY interaction.branching.update SYSTEM "results/branching.update.out">
-<!ENTITY interaction.cmdref.diff-p SYSTEM "results/cmdref.diff-p.out">
-<!ENTITY interaction.daily.copy.after SYSTEM "results/daily.copy.after.out">
-<!ENTITY interaction.daily.copy.cat SYSTEM "results/daily.copy.cat.out">
-<!ENTITY interaction.daily.copy.clone SYSTEM "results/daily.copy.clone.out">
-<!ENTITY interaction.daily.copy.copy SYSTEM "results/daily.copy.copy.out">
-<!ENTITY interaction.daily.copy.dir-dest SYSTEM "results/daily.copy.dir-dest.out">
-<!ENTITY interaction.daily.copy.dir-src SYSTEM "results/daily.copy.dir-src.out">
-<!ENTITY interaction.daily.copy.dir-src-dest SYSTEM "results/daily.copy.dir-src-dest.out">
-<!ENTITY interaction.daily.copy.init SYSTEM "results/daily.copy.init.out">
-<!ENTITY interaction.daily.copy.merge SYSTEM "results/daily.copy.merge.out">
-<!ENTITY interaction.daily.copy.other SYSTEM "results/daily.copy.other.out">
-<!ENTITY interaction.daily.copy.simple SYSTEM "results/daily.copy.simple.out">
-<!ENTITY interaction.daily.copy.status SYSTEM "results/daily.copy.status.out">
-<!ENTITY interaction.daily.copy.status-copy SYSTEM "results/daily.copy.status-copy.out">
-<!ENTITY interaction.daily.files.add SYSTEM "results/daily.files.add.out">
-<!ENTITY interaction.daily.files.add-dir SYSTEM "results/daily.files.add-dir.out">
-<!ENTITY interaction.daily.files.addremove SYSTEM "results/daily.files.addremove.out">
-<!ENTITY interaction.daily.files.commit-addremove SYSTEM "results/daily.files.commit-addremove.out">
-<!ENTITY interaction.daily.files.hidden SYSTEM "results/daily.files.hidden.out">
-<!ENTITY interaction.daily.files.missing SYSTEM "results/daily.files.missing.out">
-<!ENTITY interaction.daily.files.recover-missing SYSTEM "results/daily.files.recover-missing.out">
-<!ENTITY interaction.daily.files.remove SYSTEM "results/daily.files.remove.out">
-<!ENTITY interaction.daily.files.remove-after SYSTEM "results/daily.files.remove-after.out">
-<!ENTITY interaction.daily.rename.rename SYSTEM "results/daily.rename.rename.out">
-<!ENTITY interaction.daily.rename.status SYSTEM "results/daily.rename.status.out">
-<!ENTITY interaction.daily.rename.status-copy SYSTEM "results/daily.rename.status-copy.out">
-<!ENTITY interaction.daily.revert.add SYSTEM "results/daily.revert.add.out">
-<!ENTITY interaction.daily.revert.copy SYSTEM "results/daily.revert.copy.out">
-<!ENTITY interaction.daily.revert.missing SYSTEM "results/daily.revert.missing.out">
-<!ENTITY interaction.daily.revert.modify SYSTEM "results/daily.revert.modify.out">
-<!ENTITY interaction.daily.revert.remove SYSTEM "results/daily.revert.remove.out">
-<!ENTITY interaction.daily.revert.rename SYSTEM "results/daily.revert.rename.out">
-<!ENTITY interaction.daily.revert.rename-orig SYSTEM "results/daily.revert.rename-orig.out">
-<!ENTITY interaction.daily.revert.status SYSTEM "results/daily.revert.status.out">
-<!ENTITY interaction.daily.revert.unmodify SYSTEM "results/daily.revert.unmodify.out">
-<!ENTITY interaction.extdiff.diff SYSTEM "results/extdiff.diff.out">
-<!ENTITY interaction.extdiff.extdiff SYSTEM "results/extdiff.extdiff.out">
-<!ENTITY interaction.extdiff.extdiff-ctx SYSTEM "results/extdiff.extdiff-ctx.out">
-<!ENTITY interaction.filenames.dirs SYSTEM "results/filenames.dirs.out">
-<!ENTITY interaction.filenames.files SYSTEM "results/filenames.files.out">
-<!ENTITY interaction.filenames.filter.exclude SYSTEM "results/filenames.filter.exclude.out">
-<!ENTITY interaction.filenames.filter.include SYSTEM "results/filenames.filter.include.out">
-<!ENTITY interaction.filenames.glob.group SYSTEM "results/filenames.glob.group.out">
-<!ENTITY interaction.filenames.glob.question SYSTEM "results/filenames.glob.question.out">
-<!ENTITY interaction.filenames.glob.range SYSTEM "results/filenames.glob.range.out">
-<!ENTITY interaction.filenames.glob.star SYSTEM "results/filenames.glob.star.out">
-<!ENTITY interaction.filenames.glob.star-starstar SYSTEM "results/filenames.glob.star-starstar.out">
-<!ENTITY interaction.filenames.glob.starstar SYSTEM "results/filenames.glob.starstar.out">
-<!ENTITY interaction.filenames.wdir-relname SYSTEM "results/filenames.wdir-relname.out">
-<!ENTITY interaction.filenames.wdir-subdir SYSTEM "results/filenames.wdir-subdir.out">
-<!ENTITY interaction.hook.msglen.go SYSTEM "results/hook.msglen.go.out">
-<!ENTITY interaction.hook.simple.ext SYSTEM "results/hook.simple.ext.out">
-<!ENTITY interaction.hook.simple.init SYSTEM "results/hook.simple.init.out">
-<!ENTITY interaction.hook.simple.pretxncommit SYSTEM "results/hook.simple.pretxncommit.out">
-<!ENTITY interaction.hook.ws.better SYSTEM "results/hook.ws.better.out">
-<!ENTITY interaction.hook.ws.simple SYSTEM "results/hook.ws.simple.out">
-<!ENTITY interaction.issue29.go SYSTEM "results/issue29.go.out">
-<!ENTITY interaction.mq.dodiff.diff SYSTEM "results/mq.dodiff.diff.out">
-<!ENTITY interaction.mq.guards.init SYSTEM "results/mq.guards.init.out">
-<!ENTITY interaction.mq.guards.qguard SYSTEM "results/mq.guards.qguard.out">
-<!ENTITY interaction.mq.guards.qguard.neg SYSTEM "results/mq.guards.qguard.neg.out">
-<!ENTITY interaction.mq.guards.qguard.pos SYSTEM "results/mq.guards.qguard.pos.out">
-<!ENTITY interaction.mq.guards.qselect.cat SYSTEM "results/mq.guards.qselect.cat.out">
-<!ENTITY interaction.mq.guards.qselect.error SYSTEM "results/mq.guards.qselect.error.out">
-<!ENTITY interaction.mq.guards.qselect.foo SYSTEM "results/mq.guards.qselect.foo.out">
-<!ENTITY interaction.mq.guards.qselect.foobar SYSTEM "results/mq.guards.qselect.foobar.out">
-<!ENTITY interaction.mq.guards.qselect.qpush SYSTEM "results/mq.guards.qselect.qpush.out">
-<!ENTITY interaction.mq.guards.qselect.quux SYSTEM "results/mq.guards.qselect.quux.out">
-<!ENTITY interaction.mq.guards.series SYSTEM "results/mq.guards.series.out">
-<!ENTITY interaction.mq.id.output SYSTEM "results/mq.id.output.out">
-<!ENTITY interaction.mq.qinit-help.help SYSTEM "results/mq.qinit-help.help.out">
-<!ENTITY interaction.mq.tarball.download SYSTEM "results/mq.tarball.download.out">
-<!ENTITY interaction.mq.tarball.newsource SYSTEM "results/mq.tarball.newsource.out">
-<!ENTITY interaction.mq.tarball.qinit SYSTEM "results/mq.tarball.qinit.out">
-<!ENTITY interaction.mq.tarball.repush SYSTEM "results/mq.tarball.repush.out">
-<!ENTITY interaction.mq.tools.lsdiff SYSTEM "results/mq.tools.lsdiff.out">
-<!ENTITY interaction.mq.tools.tools SYSTEM "results/mq.tools.tools.out">
-<!ENTITY interaction.mq.tutorial.add SYSTEM "results/mq.tutorial.add.out">
-<!ENTITY interaction.mq.tutorial.qinit SYSTEM "results/mq.tutorial.qinit.out">
-<!ENTITY interaction.mq.tutorial.qnew SYSTEM "results/mq.tutorial.qnew.out">
-<!ENTITY interaction.mq.tutorial.qnew2 SYSTEM "results/mq.tutorial.qnew2.out">
-<!ENTITY interaction.mq.tutorial.qpop SYSTEM "results/mq.tutorial.qpop.out">
-<!ENTITY interaction.mq.tutorial.qpush-a SYSTEM "results/mq.tutorial.qpush-a.out">
-<!ENTITY interaction.mq.tutorial.qrefresh SYSTEM "results/mq.tutorial.qrefresh.out">
-<!ENTITY interaction.mq.tutorial.qrefresh2 SYSTEM "results/mq.tutorial.qrefresh2.out">
-<!ENTITY interaction.mq.tutorial.qseries SYSTEM "results/mq.tutorial.qseries.out">
-<!ENTITY interaction.rename.divergent.clone SYSTEM "results/rename.divergent.clone.out">
-<!ENTITY interaction.rename.divergent.merge SYSTEM "results/rename.divergent.merge.out">
-<!ENTITY interaction.rename.divergent.rename.anne SYSTEM "results/rename.divergent.rename.anne.out">
-<!ENTITY interaction.rename.divergent.rename.bob SYSTEM "results/rename.divergent.rename.bob.out">
-<!ENTITY interaction.rollback.add SYSTEM "results/rollback.add.out">
-<!ENTITY interaction.rollback.commit SYSTEM "results/rollback.commit.out">
-<!ENTITY interaction.rollback.rollback SYSTEM "results/rollback.rollback.out">
-<!ENTITY interaction.rollback.status SYSTEM "results/rollback.status.out">
-<!ENTITY interaction.rollback.tip SYSTEM "results/rollback.tip.out">
-<!ENTITY interaction.rollback.twice SYSTEM "results/rollback.twice.out">
-<!ENTITY interaction.tag.init SYSTEM "results/tag.init.out">
-<!ENTITY interaction.tag.log SYSTEM "results/tag.log.out">
-<!ENTITY interaction.tag.log.v1.0 SYSTEM "results/tag.log.v1.0.out">
-<!ENTITY interaction.tag.remove SYSTEM "results/tag.remove.out">
-<!ENTITY interaction.tag.replace SYSTEM "results/tag.replace.out">
-<!ENTITY interaction.tag.tag SYSTEM "results/tag.tag.out">
-<!ENTITY interaction.tag.tags SYSTEM "results/tag.tags.out">
-<!ENTITY interaction.tag.tip SYSTEM "results/tag.tip.out">
-<!ENTITY interaction.template.simple.changelog SYSTEM "results/template.simple.changelog.out">
-<!ENTITY interaction.template.simple.combine SYSTEM "results/template.simple.combine.out">
-<!ENTITY interaction.template.simple.compact SYSTEM "results/template.simple.compact.out">
-<!ENTITY interaction.template.simple.datekeyword SYSTEM "results/template.simple.datekeyword.out">
-<!ENTITY interaction.template.simple.keywords SYSTEM "results/template.simple.keywords.out">
-<!ENTITY interaction.template.simple.manyfilters SYSTEM "results/template.simple.manyfilters.out">
-<!ENTITY interaction.template.simple.normal SYSTEM "results/template.simple.normal.out">
-<!ENTITY interaction.template.simple.rev SYSTEM "results/template.simple.rev.out">
-<!ENTITY interaction.template.simple.simplest SYSTEM "results/template.simple.simplest.out">
-<!ENTITY interaction.template.simple.simplesub SYSTEM "results/template.simple.simplesub.out">
-<!ENTITY interaction.template.svnstyle.id SYSTEM "results/template.svnstyle.id.out">
-<!ENTITY interaction.template.svnstyle.result SYSTEM "results/template.svnstyle.result.out">
-<!ENTITY interaction.template.svnstyle.short SYSTEM "results/template.svnstyle.short.out">
-<!ENTITY interaction.template.svnstyle.simplest SYSTEM "results/template.svnstyle.simplest.out">
-<!ENTITY interaction.template.svnstyle.style SYSTEM "results/template.svnstyle.style.out">
-<!ENTITY interaction.template.svnstyle.syntax.error SYSTEM "results/template.svnstyle.syntax.error.out">
-<!ENTITY interaction.template.svnstyle.syntax.input SYSTEM "results/template.svnstyle.syntax.input.out">
-<!ENTITY interaction.template.svnstyle.template SYSTEM "results/template.svnstyle.template.out">
-<!ENTITY interaction.tour-merge-conflict.commit SYSTEM "results/tour-merge-conflict.commit.out">
-<!ENTITY interaction.tour-merge-conflict.cousin SYSTEM "results/tour-merge-conflict.cousin.out">
-<!ENTITY interaction.tour-merge-conflict.merge SYSTEM "results/tour-merge-conflict.merge.out">
-<!ENTITY interaction.tour-merge-conflict.pull SYSTEM "results/tour-merge-conflict.pull.out">
-<!ENTITY interaction.tour-merge-conflict.son SYSTEM "results/tour-merge-conflict.son.out">
-<!ENTITY interaction.tour-merge-conflict.wife SYSTEM "results/tour-merge-conflict.wife.out">
-<!ENTITY interaction.tour.clone SYSTEM "results/tour.clone.out">
-<!ENTITY interaction.tour.clone-pull SYSTEM "results/tour.clone-pull.out">
-<!ENTITY interaction.tour.clone-push SYSTEM "results/tour.clone-push.out">
-<!ENTITY interaction.tour.commit SYSTEM "results/tour.commit.out">
-<!ENTITY interaction.tour.diff SYSTEM "results/tour.diff.out">
-<!ENTITY interaction.tour.help SYSTEM "results/tour.help.out">
-<!ENTITY interaction.tour.incoming SYSTEM "results/tour.incoming.out">
-<!ENTITY interaction.tour.log SYSTEM "results/tour.log.out">
-<!ENTITY interaction.tour.log-r SYSTEM "results/tour.log-r.out">
-<!ENTITY interaction.tour.log-v SYSTEM "results/tour.log-v.out">
-<!ENTITY interaction.tour.log-vp SYSTEM "results/tour.log-vp.out">
-<!ENTITY interaction.tour.log.range SYSTEM "results/tour.log.range.out">
-<!ENTITY interaction.tour.ls SYSTEM "results/tour.ls.out">
-<!ENTITY interaction.tour.ls-a SYSTEM "results/tour.ls-a.out">
-<!ENTITY interaction.tour.merge.cat SYSTEM "results/tour.merge.cat.out">
-<!ENTITY interaction.tour.merge.clone SYSTEM "results/tour.merge.clone.out">
-<!ENTITY interaction.tour.merge.commit SYSTEM "results/tour.merge.commit.out">
-<!ENTITY interaction.tour.merge.dummy1 SYSTEM "results/tour.merge.dummy1.out">
-<!ENTITY interaction.tour.merge.dummy2 SYSTEM "results/tour.merge.dummy2.out">
-<!ENTITY interaction.tour.merge.dummy3 SYSTEM "results/tour.merge.dummy3.out">
-<!ENTITY interaction.tour.merge.dummy4 SYSTEM "results/tour.merge.dummy4.out">
-<!ENTITY interaction.tour.merge.heads SYSTEM "results/tour.merge.heads.out">
-<!ENTITY interaction.tour.merge.merge SYSTEM "results/tour.merge.merge.out">
-<!ENTITY interaction.tour.merge.parents SYSTEM "results/tour.merge.parents.out">
-<!ENTITY interaction.tour.merge.pull SYSTEM "results/tour.merge.pull.out">
-<!ENTITY interaction.tour.merge.tip SYSTEM "results/tour.merge.tip.out">
-<!ENTITY interaction.tour.merge.update SYSTEM "results/tour.merge.update.out">
-<!ENTITY interaction.tour.older SYSTEM "results/tour.older.out">
-<!ENTITY interaction.tour.outgoing SYSTEM "results/tour.outgoing.out">
-<!ENTITY interaction.tour.outgoing.net SYSTEM "results/tour.outgoing.net.out">
-<!ENTITY interaction.tour.parents SYSTEM "results/tour.parents.out">
-<!ENTITY interaction.tour.pull SYSTEM "results/tour.pull.out">
-<!ENTITY interaction.tour.push SYSTEM "results/tour.push.out">
-<!ENTITY interaction.tour.push.net SYSTEM "results/tour.push.net.out">
-<!ENTITY interaction.tour.push.nothing SYSTEM "results/tour.push.nothing.out">
-<!ENTITY interaction.tour.reclone SYSTEM "results/tour.reclone.out">
-<!ENTITY interaction.tour.sed SYSTEM "results/tour.sed.out">
-<!ENTITY interaction.tour.status SYSTEM "results/tour.status.out">
-<!ENTITY interaction.tour.tip SYSTEM "results/tour.tip.out">
-<!ENTITY interaction.tour.update SYSTEM "results/tour.update.out">
-<!ENTITY interaction.tour.version SYSTEM "results/tour.version.out">
+<!ENTITY ch06-apache-config.lst SYSTEM "results/ch06-apache-config.lst.lxo">
+<!ENTITY ch10-bugzilla-config.lst SYSTEM "results/ch10-bugzilla-config.lst.lxo">
+<!ENTITY ch10-notify-config-mail.lst SYSTEM "results/ch10-notify-config-mail.lst.lxo">
+<!ENTITY ch10-notify-config.lst SYSTEM "results/ch10-notify-config.lst.lxo">
+<!ENTITY interaction.backout.init SYSTEM "results/backout.init.lxo">
+<!ENTITY interaction.backout.manual.backout SYSTEM "results/backout.manual.backout.lxo">
+<!ENTITY interaction.backout.manual.cat SYSTEM "results/backout.manual.cat.lxo">
+<!ENTITY interaction.backout.manual.clone SYSTEM "results/backout.manual.clone.lxo">
+<!ENTITY interaction.backout.manual.heads SYSTEM "results/backout.manual.heads.lxo">
+<!ENTITY interaction.backout.manual.log SYSTEM "results/backout.manual.log.lxo">
+<!ENTITY interaction.backout.manual.merge SYSTEM "results/backout.manual.merge.lxo">
+<!ENTITY interaction.backout.manual.parents SYSTEM "results/backout.manual.parents.lxo">
+<!ENTITY interaction.backout.non-tip.backout SYSTEM "results/backout.non-tip.backout.lxo">
+<!ENTITY interaction.backout.non-tip.cat SYSTEM "results/backout.non-tip.cat.lxo">
+<!ENTITY interaction.backout.non-tip.clone SYSTEM "results/backout.non-tip.clone.lxo">
+<!ENTITY interaction.backout.simple SYSTEM "results/backout.simple.lxo">
+<!ENTITY interaction.backout.simple.log SYSTEM "results/backout.simple.log.lxo">
+<!ENTITY interaction.bisect.commits SYSTEM "results/bisect.commits.lxo">
+<!ENTITY interaction.bisect.help SYSTEM "results/bisect.help.lxo">
+<!ENTITY interaction.bisect.init SYSTEM "results/bisect.init.lxo">
+<!ENTITY interaction.bisect.search.bad-init SYSTEM "results/bisect.search.bad-init.lxo">
+<!ENTITY interaction.bisect.search.good-init SYSTEM "results/bisect.search.good-init.lxo">
+<!ENTITY interaction.bisect.search.init SYSTEM "results/bisect.search.init.lxo">
+<!ENTITY interaction.bisect.search.mytest SYSTEM "results/bisect.search.mytest.lxo">
+<!ENTITY interaction.bisect.search.reset SYSTEM "results/bisect.search.reset.lxo">
+<!ENTITY interaction.bisect.search.rest SYSTEM "results/bisect.search.rest.lxo">
+<!ENTITY interaction.bisect.search.step1 SYSTEM "results/bisect.search.step1.lxo">
+<!ENTITY interaction.bisect.search.step2 SYSTEM "results/bisect.search.step2.lxo">
+<!ENTITY interaction.branch-named.branch SYSTEM "results/branch-named.branch.lxo">
+<!ENTITY interaction.branch-named.branches SYSTEM "results/branch-named.branches.lxo">
+<!ENTITY interaction.branch-named.commit SYSTEM "results/branch-named.commit.lxo">
+<!ENTITY interaction.branch-named.create SYSTEM "results/branch-named.create.lxo">
+<!ENTITY interaction.branch-named.foo-commit SYSTEM "results/branch-named.foo-commit.lxo">
+<!ENTITY interaction.branch-named.merge SYSTEM "results/branch-named.merge.lxo">
+<!ENTITY interaction.branch-named.parents SYSTEM "results/branch-named.parents.lxo">
+<!ENTITY interaction.branch-named.rebranch SYSTEM "results/branch-named.rebranch.lxo">
+<!ENTITY interaction.branch-named.status SYSTEM "results/branch-named.status.lxo">
+<!ENTITY interaction.branch-named.update-bar SYSTEM "results/branch-named.update-bar.lxo">
+<!ENTITY interaction.branch-named.update-nothing SYSTEM "results/branch-named.update-nothing.lxo">
+<!ENTITY interaction.branch-named.update-switchy SYSTEM "results/branch-named.update-switchy.lxo">
+<!ENTITY interaction.branch-repo.bugfix SYSTEM "results/branch-repo.bugfix.lxo">
+<!ENTITY interaction.branch-repo.clone SYSTEM "results/branch-repo.clone.lxo">
+<!ENTITY interaction.branch-repo.merge SYSTEM "results/branch-repo.merge.lxo">
+<!ENTITY interaction.branch-repo.new SYSTEM "results/branch-repo.new.lxo">
+<!ENTITY interaction.branch-repo.pull SYSTEM "results/branch-repo.pull.lxo">
+<!ENTITY interaction.branch-repo.tag SYSTEM "results/branch-repo.tag.lxo">
+<!ENTITY interaction.branching.clone SYSTEM "results/branching.clone.lxo">
+<!ENTITY interaction.branching.init SYSTEM "results/branching.init.lxo">
+<!ENTITY interaction.branching.main SYSTEM "results/branching.main.lxo">
+<!ENTITY interaction.branching.merge SYSTEM "results/branching.merge.lxo">
+<!ENTITY interaction.branching.stable SYSTEM "results/branching.stable.lxo">
+<!ENTITY interaction.branching.tag SYSTEM "results/branching.tag.lxo">
+<!ENTITY interaction.branching.update SYSTEM "results/branching.update.lxo">
+<!ENTITY interaction.cmdref.diff-p SYSTEM "results/cmdref.diff-p.lxo">
+<!ENTITY interaction.daily.copy.after SYSTEM "results/daily.copy.after.lxo">
+<!ENTITY interaction.daily.copy.cat SYSTEM "results/daily.copy.cat.lxo">
+<!ENTITY interaction.daily.copy.clone SYSTEM "results/daily.copy.clone.lxo">
+<!ENTITY interaction.daily.copy.copy SYSTEM "results/daily.copy.copy.lxo">
+<!ENTITY interaction.daily.copy.dir-dest SYSTEM "results/daily.copy.dir-dest.lxo">
+<!ENTITY interaction.daily.copy.dir-src SYSTEM "results/daily.copy.dir-src.lxo">
+<!ENTITY interaction.daily.copy.dir-src-dest SYSTEM "results/daily.copy.dir-src-dest.lxo">
+<!ENTITY interaction.daily.copy.init SYSTEM "results/daily.copy.init.lxo">
+<!ENTITY interaction.daily.copy.merge SYSTEM "results/daily.copy.merge.lxo">
+<!ENTITY interaction.daily.copy.other SYSTEM "results/daily.copy.other.lxo">
+<!ENTITY interaction.daily.copy.simple SYSTEM "results/daily.copy.simple.lxo">
+<!ENTITY interaction.daily.copy.status SYSTEM "results/daily.copy.status.lxo">
+<!ENTITY interaction.daily.copy.status-copy SYSTEM "results/daily.copy.status-copy.lxo">
+<!ENTITY interaction.daily.files.add SYSTEM "results/daily.files.add.lxo">
+<!ENTITY interaction.daily.files.add-dir SYSTEM "results/daily.files.add-dir.lxo">
+<!ENTITY interaction.daily.files.addremove SYSTEM "results/daily.files.addremove.lxo">
+<!ENTITY interaction.daily.files.commit-addremove SYSTEM "results/daily.files.commit-addremove.lxo">
+<!ENTITY interaction.daily.files.hidden SYSTEM "results/daily.files.hidden.lxo">
+<!ENTITY interaction.daily.files.missing SYSTEM "results/daily.files.missing.lxo">
+<!ENTITY interaction.daily.files.recover-missing SYSTEM "results/daily.files.recover-missing.lxo">
+<!ENTITY interaction.daily.files.remove SYSTEM "results/daily.files.remove.lxo">
+<!ENTITY interaction.daily.files.remove-after SYSTEM "results/daily.files.remove-after.lxo">
+<!ENTITY interaction.daily.rename.rename SYSTEM "results/daily.rename.rename.lxo">
+<!ENTITY interaction.daily.rename.status SYSTEM "results/daily.rename.status.lxo">
+<!ENTITY interaction.daily.rename.status-copy SYSTEM "results/daily.rename.status-copy.lxo">
+<!ENTITY interaction.daily.revert.add SYSTEM "results/daily.revert.add.lxo">
+<!ENTITY interaction.daily.revert.copy SYSTEM "results/daily.revert.copy.lxo">
+<!ENTITY interaction.daily.revert.missing SYSTEM "results/daily.revert.missing.lxo">
+<!ENTITY interaction.daily.revert.modify SYSTEM "results/daily.revert.modify.lxo">
+<!ENTITY interaction.daily.revert.remove SYSTEM "results/daily.revert.remove.lxo">
+<!ENTITY interaction.daily.revert.rename SYSTEM "results/daily.revert.rename.lxo">
+<!ENTITY interaction.daily.revert.rename-orig SYSTEM "results/daily.revert.rename-orig.lxo">
+<!ENTITY interaction.daily.revert.status SYSTEM "results/daily.revert.status.lxo">
+<!ENTITY interaction.daily.revert.unmodify SYSTEM "results/daily.revert.unmodify.lxo">
+<!ENTITY interaction.extdiff.diff SYSTEM "results/extdiff.diff.lxo">
+<!ENTITY interaction.extdiff.extdiff SYSTEM "results/extdiff.extdiff.lxo">
+<!ENTITY interaction.extdiff.extdiff-ctx SYSTEM "results/extdiff.extdiff-ctx.lxo">
+<!ENTITY interaction.filenames.dirs SYSTEM "results/filenames.dirs.lxo">
+<!ENTITY interaction.filenames.files SYSTEM "results/filenames.files.lxo">
+<!ENTITY interaction.filenames.filter.exclude SYSTEM "results/filenames.filter.exclude.lxo">
+<!ENTITY interaction.filenames.filter.include SYSTEM "results/filenames.filter.include.lxo">
+<!ENTITY interaction.filenames.glob.group SYSTEM "results/filenames.glob.group.lxo">
+<!ENTITY interaction.filenames.glob.question SYSTEM "results/filenames.glob.question.lxo">
+<!ENTITY interaction.filenames.glob.range SYSTEM "results/filenames.glob.range.lxo">
+<!ENTITY interaction.filenames.glob.star SYSTEM "results/filenames.glob.star.lxo">
+<!ENTITY interaction.filenames.glob.star-starstar SYSTEM "results/filenames.glob.star-starstar.lxo">
+<!ENTITY interaction.filenames.glob.starstar SYSTEM "results/filenames.glob.starstar.lxo">
+<!ENTITY interaction.filenames.wdir-relname SYSTEM "results/filenames.wdir-relname.lxo">
+<!ENTITY interaction.filenames.wdir-subdir SYSTEM "results/filenames.wdir-subdir.lxo">
+<!ENTITY interaction.hook.msglen.go SYSTEM "results/hook.msglen.go.lxo">
+<!ENTITY interaction.hook.simple.ext SYSTEM "results/hook.simple.ext.lxo">
+<!ENTITY interaction.hook.simple.init SYSTEM "results/hook.simple.init.lxo">
+<!ENTITY interaction.hook.simple.pretxncommit SYSTEM "results/hook.simple.pretxncommit.lxo">
+<!ENTITY interaction.hook.ws.better SYSTEM "results/hook.ws.better.lxo">
+<!ENTITY interaction.hook.ws.simple SYSTEM "results/hook.ws.simple.lxo">
+<!ENTITY interaction.issue29.go SYSTEM "results/issue29.go.lxo">
+<!ENTITY interaction.mq.dodiff.diff SYSTEM "results/mq.dodiff.diff.lxo">
+<!ENTITY interaction.mq.guards.init SYSTEM "results/mq.guards.init.lxo">
+<!ENTITY interaction.mq.guards.qguard SYSTEM "results/mq.guards.qguard.lxo">
+<!ENTITY interaction.mq.guards.qguard.neg SYSTEM "results/mq.guards.qguard.neg.lxo">
+<!ENTITY interaction.mq.guards.qguard.pos SYSTEM "results/mq.guards.qguard.pos.lxo">
+<!ENTITY interaction.mq.guards.qselect.cat SYSTEM "results/mq.guards.qselect.cat.lxo">
+<!ENTITY interaction.mq.guards.qselect.error SYSTEM "results/mq.guards.qselect.error.lxo">
+<!ENTITY interaction.mq.guards.qselect.foo SYSTEM "results/mq.guards.qselect.foo.lxo">
+<!ENTITY interaction.mq.guards.qselect.foobar SYSTEM "results/mq.guards.qselect.foobar.lxo">
+<!ENTITY interaction.mq.guards.qselect.qpush SYSTEM "results/mq.guards.qselect.qpush.lxo">
+<!ENTITY interaction.mq.guards.qselect.quux SYSTEM "results/mq.guards.qselect.quux.lxo">
+<!ENTITY interaction.mq.guards.series SYSTEM "results/mq.guards.series.lxo">
+<!ENTITY interaction.mq.id.lxoput SYSTEM "results/mq.id.lxoput.lxo">
+<!ENTITY interaction.mq.id.output SYSTEM "results/mq.id.output.lxo">
+<!ENTITY interaction.mq.qinit-help.help SYSTEM "results/mq.qinit-help.help.lxo">
+<!ENTITY interaction.mq.tarball.download SYSTEM "results/mq.tarball.download.lxo">
+<!ENTITY interaction.mq.tarball.newsource SYSTEM "results/mq.tarball.newsource.lxo">
+<!ENTITY interaction.mq.tarball.qinit SYSTEM "results/mq.tarball.qinit.lxo">
+<!ENTITY interaction.mq.tarball.repush SYSTEM "results/mq.tarball.repush.lxo">
+<!ENTITY interaction.mq.tools.lsdiff SYSTEM "results/mq.tools.lsdiff.lxo">
+<!ENTITY interaction.mq.tools.tools SYSTEM "results/mq.tools.tools.lxo">
+<!ENTITY interaction.mq.tutorial.add SYSTEM "results/mq.tutorial.add.lxo">
+<!ENTITY interaction.mq.tutorial.qinit SYSTEM "results/mq.tutorial.qinit.lxo">
+<!ENTITY interaction.mq.tutorial.qnew SYSTEM "results/mq.tutorial.qnew.lxo">
+<!ENTITY interaction.mq.tutorial.qnew2 SYSTEM "results/mq.tutorial.qnew2.lxo">
+<!ENTITY interaction.mq.tutorial.qpop SYSTEM "results/mq.tutorial.qpop.lxo">
+<!ENTITY interaction.mq.tutorial.qpush-a SYSTEM "results/mq.tutorial.qpush-a.lxo">
+<!ENTITY interaction.mq.tutorial.qrefresh SYSTEM "results/mq.tutorial.qrefresh.lxo">
+<!ENTITY interaction.mq.tutorial.qrefresh2 SYSTEM "results/mq.tutorial.qrefresh2.lxo">
+<!ENTITY interaction.mq.tutorial.qseries SYSTEM "results/mq.tutorial.qseries.lxo">
+<!ENTITY interaction.rename.divergent.clone SYSTEM "results/rename.divergent.clone.lxo">
+<!ENTITY interaction.rename.divergent.merge SYSTEM "results/rename.divergent.merge.lxo">
+<!ENTITY interaction.rename.divergent.rename.anne SYSTEM "results/rename.divergent.rename.anne.lxo">
+<!ENTITY interaction.rename.divergent.rename.bob SYSTEM "results/rename.divergent.rename.bob.lxo">
+<!ENTITY interaction.rollback.add SYSTEM "results/rollback.add.lxo">
+<!ENTITY interaction.rollback.commit SYSTEM "results/rollback.commit.lxo">
+<!ENTITY interaction.rollback.rollback SYSTEM "results/rollback.rollback.lxo">
+<!ENTITY interaction.rollback.status SYSTEM "results/rollback.status.lxo">
+<!ENTITY interaction.rollback.tip SYSTEM "results/rollback.tip.lxo">
+<!ENTITY interaction.rollback.twice SYSTEM "results/rollback.twice.lxo">
+<!ENTITY interaction.tag.init SYSTEM "results/tag.init.lxo">
+<!ENTITY interaction.tag.log SYSTEM "results/tag.log.lxo">
+<!ENTITY interaction.tag.log.v1.0 SYSTEM "results/tag.log.v1.0.lxo">
+<!ENTITY interaction.tag.remove SYSTEM "results/tag.remove.lxo">
+<!ENTITY interaction.tag.replace SYSTEM "results/tag.replace.lxo">
+<!ENTITY interaction.tag.tag SYSTEM "results/tag.tag.lxo">
+<!ENTITY interaction.tag.tags SYSTEM "results/tag.tags.lxo">
+<!ENTITY interaction.tag.tip SYSTEM "results/tag.tip.lxo">
+<!ENTITY interaction.template.simple.changelog SYSTEM "results/template.simple.changelog.lxo">
+<!ENTITY interaction.template.simple.combine SYSTEM "results/template.simple.combine.lxo">
+<!ENTITY interaction.template.simple.compact SYSTEM "results/template.simple.compact.lxo">
+<!ENTITY interaction.template.simple.datekeyword SYSTEM "results/template.simple.datekeyword.lxo">
+<!ENTITY interaction.template.simple.keywords SYSTEM "results/template.simple.keywords.lxo">
+<!ENTITY interaction.template.simple.manyfilters SYSTEM "results/template.simple.manyfilters.lxo">
+<!ENTITY interaction.template.simple.normal SYSTEM "results/template.simple.normal.lxo">
+<!ENTITY interaction.template.simple.rev SYSTEM "results/template.simple.rev.lxo">
+<!ENTITY interaction.template.simple.simplest SYSTEM "results/template.simple.simplest.lxo">
+<!ENTITY interaction.template.simple.simplesub SYSTEM "results/template.simple.simplesub.lxo">
+<!ENTITY interaction.template.svnstyle.id SYSTEM "results/template.svnstyle.id.lxo">
+<!ENTITY interaction.template.svnstyle.result SYSTEM "results/template.svnstyle.result.lxo">
+<!ENTITY interaction.template.svnstyle.short SYSTEM "results/template.svnstyle.short.lxo">
+<!ENTITY interaction.template.svnstyle.simplest SYSTEM "results/template.svnstyle.simplest.lxo">
+<!ENTITY interaction.template.svnstyle.style SYSTEM "results/template.svnstyle.style.lxo">
+<!ENTITY interaction.template.svnstyle.syntax.error SYSTEM "results/template.svnstyle.syntax.error.lxo">
+<!ENTITY interaction.template.svnstyle.syntax.input SYSTEM "results/template.svnstyle.syntax.input.lxo">
+<!ENTITY interaction.template.svnstyle.template SYSTEM "results/template.svnstyle.template.lxo">
+<!ENTITY interaction.tour-merge-conflict.commit SYSTEM "results/tour-merge-conflict.commit.lxo">
+<!ENTITY interaction.tour-merge-conflict.cousin SYSTEM "results/tour-merge-conflict.cousin.lxo">
+<!ENTITY interaction.tour-merge-conflict.merge SYSTEM "results/tour-merge-conflict.merge.lxo">
+<!ENTITY interaction.tour-merge-conflict.pull SYSTEM "results/tour-merge-conflict.pull.lxo">
+<!ENTITY interaction.tour-merge-conflict.son SYSTEM "results/tour-merge-conflict.son.lxo">
+<!ENTITY interaction.tour-merge-conflict.wife SYSTEM "results/tour-merge-conflict.wife.lxo">
+<!ENTITY interaction.tour.clone SYSTEM "results/tour.clone.lxo">
+<!ENTITY interaction.tour.clone-pull SYSTEM "results/tour.clone-pull.lxo">
+<!ENTITY interaction.tour.clone-push SYSTEM "results/tour.clone-push.lxo">
+<!ENTITY interaction.tour.commit SYSTEM "results/tour.commit.lxo">
+<!ENTITY interaction.tour.diff SYSTEM "results/tour.diff.lxo">
+<!ENTITY interaction.tour.help SYSTEM "results/tour.help.lxo">
+<!ENTITY interaction.tour.incoming SYSTEM "results/tour.incoming.lxo">
+<!ENTITY interaction.tour.log SYSTEM "results/tour.log.lxo">
+<!ENTITY interaction.tour.log-r SYSTEM "results/tour.log-r.lxo">
+<!ENTITY interaction.tour.log-v SYSTEM "results/tour.log-v.lxo">
+<!ENTITY interaction.tour.log-vp SYSTEM "results/tour.log-vp.lxo">
+<!ENTITY interaction.tour.log.range SYSTEM "results/tour.log.range.lxo">
+<!ENTITY interaction.tour.ls SYSTEM "results/tour.ls.lxo">
+<!ENTITY interaction.tour.ls-a SYSTEM "results/tour.ls-a.lxo">
+<!ENTITY interaction.tour.lxogoing SYSTEM "results/tour.lxogoing.lxo">
+<!ENTITY interaction.tour.lxogoing.net SYSTEM "results/tour.lxogoing.net.lxo">
+<!ENTITY interaction.tour.merge.cat SYSTEM "results/tour.merge.cat.lxo">
+<!ENTITY interaction.tour.merge.clone SYSTEM "results/tour.merge.clone.lxo">
+<!ENTITY interaction.tour.merge.commit SYSTEM "results/tour.merge.commit.lxo">
+<!ENTITY interaction.tour.merge.dummy1 SYSTEM "results/tour.merge.dummy1.lxo">
+<!ENTITY interaction.tour.merge.dummy2 SYSTEM "results/tour.merge.dummy2.lxo">
+<!ENTITY interaction.tour.merge.dummy3 SYSTEM "results/tour.merge.dummy3.lxo">
+<!ENTITY interaction.tour.merge.dummy4 SYSTEM "results/tour.merge.dummy4.lxo">
+<!ENTITY interaction.tour.merge.heads SYSTEM "results/tour.merge.heads.lxo">
+<!ENTITY interaction.tour.merge.merge SYSTEM "results/tour.merge.merge.lxo">
+<!ENTITY interaction.tour.merge.parents SYSTEM "results/tour.merge.parents.lxo">
+<!ENTITY interaction.tour.merge.pull SYSTEM "results/tour.merge.pull.lxo">
+<!ENTITY interaction.tour.merge.tip SYSTEM "results/tour.merge.tip.lxo">
+<!ENTITY interaction.tour.merge.update SYSTEM "results/tour.merge.update.lxo">
+<!ENTITY interaction.tour.older SYSTEM "results/tour.older.lxo">
+<!ENTITY interaction.tour.outgoing SYSTEM "results/tour.outgoing.lxo">
+<!ENTITY interaction.tour.outgoing.net SYSTEM "results/tour.outgoing.net.lxo">
+<!ENTITY interaction.tour.parents SYSTEM "results/tour.parents.lxo">
+<!ENTITY interaction.tour.pull SYSTEM "results/tour.pull.lxo">
+<!ENTITY interaction.tour.push SYSTEM "results/tour.push.lxo">
+<!ENTITY interaction.tour.push.net SYSTEM "results/tour.push.net.lxo">
+<!ENTITY interaction.tour.push.nothing SYSTEM "results/tour.push.nothing.lxo">
+<!ENTITY interaction.tour.reclone SYSTEM "results/tour.reclone.lxo">
+<!ENTITY interaction.tour.sed SYSTEM "results/tour.sed.lxo">
+<!ENTITY interaction.tour.status SYSTEM "results/tour.status.lxo">
+<!ENTITY interaction.tour.tip SYSTEM "results/tour.tip.lxo">
+<!ENTITY interaction.tour.update SYSTEM "results/tour.update.lxo">
+<!ENTITY interaction.tour.version SYSTEM "results/tour.version.lxo">
--- a/en/examples/results/backout.init.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg init myrepo</userinput>
-<prompt>$</prompt> <userinput>cd myrepo</userinput>
-<prompt>$</prompt> <userinput>echo first change &gt;&gt; myfile</userinput>
-<prompt>$</prompt> <userinput>hg add myfile</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'first change'</userinput>
-<prompt>$</prompt> <userinput>echo second change &gt;&gt; myfile</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'second change'</userinput>
-</screen>
--- a/en/examples/results/backout.manual.backout.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<screen><prompt>$</prompt> <userinput>echo third change &gt;&gt; myfile</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'third change'</userinput>
-<prompt>$</prompt> <userinput>hg backout -m 'back out second change' 1</userinput>
-reverting myfile
-created new head
-changeset  backs out changeset 
-the backout changeset is a new head - do not forget to merge
-(use "backout --merge" if you want to auto-merge)
-</screen>
--- a/en/examples/results/backout.manual.cat.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat myfile</userinput>
-first change
-second change
-third change
-</screen>
--- a/en/examples/results/backout.manual.clone.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone -r1 myrepo newrepo</userinput>
-requesting all changes
-adding changesets
-adding manifests
-adding file changes
-added 2 changesets with 2 changes to 1 files
-updating working directory
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>cd newrepo</userinput>
-</screen>
--- a/en/examples/results/backout.manual.heads.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg heads</userinput>
-changeset:   
-tag:         tip
-parent:      
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     back out second change
-
-changeset:   
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     third change
-
-</screen>
--- a/en/examples/results/backout.manual.log.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg log --style compact</userinput>
-3[tip]:1      2009-03-10 04:37 +0000   bos
-  back out second change
-
-2      2009-03-10 04:37 +0000   bos
-  third change
-
-1      2009-03-10 04:37 +0000   bos
-  second change
-
-0      2009-03-10 04:37 +0000   bos
-  first change
-
-</screen>
--- a/en/examples/results/backout.manual.merge.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg merge</userinput>
-merging myfile
-0 files updated, 1 files merged, 0 files removed, 0 files unresolved
-(branch merge, don't forget to commit)
-<prompt>$</prompt> <userinput>hg commit -m 'merged backout with previous tip'</userinput>
-<prompt>$</prompt> <userinput>cat myfile</userinput>
-first change
-third change
-</screen>
--- a/en/examples/results/backout.manual.parents.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg parents</userinput>
-changeset:   
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     third change
-
-</screen>
--- a/en/examples/results/backout.non-tip.backout.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<screen><prompt>$</prompt> <userinput>echo third change &gt;&gt; myfile</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'third change'</userinput>
-<prompt>$</prompt> <userinput>hg backout --merge -m 'back out second change' 1</userinput>
-reverting myfile
-created new head
-changeset  backs out changeset 
-merging with changeset 
-merging myfile
-0 files updated, 1 files merged, 0 files removed, 0 files unresolved
-(branch merge, don't forget to commit)
-</screen>
--- a/en/examples/results/backout.non-tip.cat.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat myfile</userinput>
-first change
-third change
-</screen>
--- a/en/examples/results/backout.non-tip.clone.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone -r1 myrepo non-tip-repo</userinput>
-requesting all changes
-adding changesets
-adding manifests
-adding file changes
-added 2 changesets with 2 changes to 1 files
-updating working directory
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>cd non-tip-repo</userinput>
-</screen>
--- a/en/examples/results/backout.simple.log.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg log --style compact</userinput>
-2[tip]      2009-03-10 04:37 +0000   bos
-  back out second change
-
-1      2009-03-10 04:37 +0000   bos
-  second change
-
-0      2009-03-10 04:37 +0000   bos
-  first change
-
-</screen>
--- a/en/examples/results/backout.simple.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg backout -m 'back out second change' tip</userinput>
-reverting myfile
-changeset  backs out changeset 
-<prompt>$</prompt> <userinput>cat myfile</userinput>
-first change
-</screen>
--- a/en/examples/results/bisect.commits.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
--- a/en/examples/results/bisect.help.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- a/en/examples/results/bisect.init.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-
-
-
--- a/en/examples/results/bisect.search.bad-init.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-
-
-
--- a/en/examples/results/bisect.search.good-init.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-
-
-
-
-
--- a/en/examples/results/bisect.search.init.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-
-
-
--- a/en/examples/results/bisect.search.mytest.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
--- a/en/examples/results/bisect.search.reset.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-
-
-
--- a/en/examples/results/bisect.search.rest.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- a/en/examples/results/bisect.search.step1.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
--- a/en/examples/results/bisect.search.step2.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-
-
-
-
-
-
--- a/en/examples/results/branch-named.branch.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg branch</userinput>
-default
-</screen>
--- a/en/examples/results/branch-named.branches.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg tip</userinput>
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Initial commit
-
-<prompt>$</prompt> <userinput>hg branches</userinput>
-default                        
-</screen>
--- a/en/examples/results/branch-named.commit.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<screen><prompt>$</prompt> <userinput>echo 'hello again' &gt;&gt; myfile</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'Second commit'</userinput>
-<prompt>$</prompt> <userinput>hg tip</userinput>
-changeset:   
-branch:      foo
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Second commit
-
-</screen>
--- a/en/examples/results/branch-named.create.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg branch foo</userinput>
-marked working directory as branch foo
-<prompt>$</prompt> <userinput>hg branch</userinput>
-foo
-</screen>
--- a/en/examples/results/branch-named.foo-commit.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-<screen><prompt>$</prompt> <userinput>echo something &gt; somefile</userinput>
-<prompt>$</prompt> <userinput>hg commit -A -m 'New file'</userinput>
-adding somefile
-created new head
-<prompt>$</prompt> <userinput>hg heads</userinput>
-changeset:   
-branch:      foo
-tag:         tip
-parent:      
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     New file
-
-changeset:   
-branch:      bar
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Third commit
-
-</screen>
--- a/en/examples/results/branch-named.merge.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg branch</userinput>
-bar
-<prompt>$</prompt> <userinput>hg merge foo</userinput>
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-(branch merge, don't forget to commit)
-<prompt>$</prompt> <userinput>hg commit -m 'Merge'</userinput>
-<prompt>$</prompt> <userinput>hg tip</userinput>
-changeset:   
-branch:      bar
-tag:         tip
-parent:      
-parent:      
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Merge
-
-</screen>
--- a/en/examples/results/branch-named.parents.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg parents</userinput>
-changeset:   
-branch:      bar
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Third commit
-
-<prompt>$</prompt> <userinput>hg branches</userinput>
-bar                            
-foo                             (inactive)
-default                         (inactive)
-</screen>
--- a/en/examples/results/branch-named.rebranch.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg branch</userinput>
-foo
-<prompt>$</prompt> <userinput>hg branch bar</userinput>
-marked working directory as branch bar
-<prompt>$</prompt> <userinput>echo new file &gt; newfile</userinput>
-<prompt>$</prompt> <userinput>hg commit -A -m 'Third commit'</userinput>
-adding newfile
-<prompt>$</prompt> <userinput>hg tip</userinput>
-changeset:   
-branch:      bar
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Third commit
-
-</screen>
--- a/en/examples/results/branch-named.status.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status</userinput>
-<prompt>$</prompt> <userinput>hg tip</userinput>
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Initial commit
-
-</screen>
--- a/en/examples/results/branch-named.update-bar.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg update bar</userinput>
-1 files updated, 0 files merged, 1 files removed, 0 files unresolved
-</screen>
--- a/en/examples/results/branch-named.update-foo.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-$ \textbf{hg update foo}
-0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-$ \textbf{hg update}
-0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-$ \textbf{hg parents}
-changeset:   
-branch:      foo
-user:        Bryan O'Sullivan <bos@serpentine.com>
-
-summary:     Second commit
-
-$ \textbf{hg update bar}
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
--- a/en/examples/results/branch-named.update-nothing.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg update foo</userinput>
-0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>hg update</userinput>
-0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-</screen>
--- a/en/examples/results/branch-named.update-switchy.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg update foo</userinput>
-0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>hg parents</userinput>
-changeset:   
-branch:      foo
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Second commit
-
-<prompt>$</prompt> <userinput>hg update bar</userinput>
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>hg parents</userinput>
-changeset:   
-branch:      bar
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Third commit
-
-</screen>
--- a/en/examples/results/branch-named.update.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-$ \textbf{hg update foo}
-0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-$ \textbf{hg update}
-0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-$ \textbf{hg parent}
-changeset:   
-branch:      foo
-user:        Bryan O'Sullivan <bos@serpentine.com>
-
-summary:     Second commit
-
-$ \textbf{hg update bar}
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
--- a/en/examples/results/branch-repo.bugfix.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg clone myproject-1.0.1 my-1.0.1-bugfix</userinput>
-updating working directory
-2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>cd my-1.0.1-bugfix</userinput>
-<prompt>$</prompt> <userinput>echo 'I fixed a bug using only echo!' &gt;&gt; myfile</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'Important fix for 1.0.1'</userinput>
-<prompt>$</prompt> <userinput>hg push</userinput>
-pushing to 
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files
-</screen>
--- a/en/examples/results/branch-repo.clone.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone myproject myproject-1.0.1</userinput>
-updating working directory
-2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-</screen>
--- a/en/examples/results/branch-repo.merge.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg merge</userinput>
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-(branch merge, don't forget to commit)
-<prompt>$</prompt> <userinput>hg commit -m 'Merge bugfix from 1.0.1 branch'</userinput>
-<prompt>$</prompt> <userinput>hg push</userinput>
-pushing to 
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 2 changesets with 1 changes to 1 files
-</screen>
--- a/en/examples/results/branch-repo.new.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone myproject my-feature</userinput>
-updating working directory
-2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>cd my-feature</userinput>
-<prompt>$</prompt> <userinput>echo 'This sure is an exciting new feature!' &gt; mynewfile</userinput>
-<prompt>$</prompt> <userinput>hg commit -A -m 'New feature'</userinput>
-adding mynewfile
-<prompt>$</prompt> <userinput>hg push</userinput>
-pushing to 
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files
-</screen>
--- a/en/examples/results/branch-repo.pull.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone myproject myproject-merge</userinput>
-updating working directory
-3 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>cd myproject-merge</userinput>
-<prompt>$</prompt> <userinput>hg pull ../myproject-1.0.1</userinput>
-pulling from ../myproject-1.0.1
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files (+1 heads)
-(run 'hg heads' to see heads, 'hg merge' to merge)
-</screen>
--- a/en/examples/results/branch-repo.tag.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd myproject</userinput>
-<prompt>$</prompt> <userinput>hg tag v1.0</userinput>
-</screen>
--- a/en/examples/results/branching.clone.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone -rv1.0 main stable</userinput>
-requesting all changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files
-updating working directory
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-</screen>
--- a/en/examples/results/branching.init.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg init main</userinput>
-<prompt>$</prompt> <userinput>cd main</userinput>
-<prompt>$</prompt> <userinput>echo 'This is a boring feature.' &gt; myfile</userinput>
-<prompt>$</prompt> <userinput>hg commit -A -m 'We have reached an important milestone!'</userinput>
-adding myfile
-</screen>
--- a/en/examples/results/branching.main.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ../main</userinput>
-<prompt>$</prompt> <userinput>echo 'This is exciting and new!' &gt;&gt; myfile</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'Add a new feature'</userinput>
-<prompt>$</prompt> <userinput>cat myfile</userinput>
-This is a boring feature.
-This is exciting and new!
-</screen>
--- a/en/examples/results/branching.merge.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ../main</userinput>
-<prompt>$</prompt> <userinput>hg pull ../stable</userinput>
-pulling from ../stable
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files (+1 heads)
-(run 'hg heads' to see heads, 'hg merge' to merge)
-<prompt>$</prompt> <userinput>hg merge</userinput>
-merging myfile
-0 files updated, 1 files merged, 0 files removed, 0 files unresolved
-(branch merge, don't forget to commit)
-<prompt>$</prompt> <userinput>hg commit -m 'Bring in bugfix from stable branch'</userinput>
-<prompt>$</prompt> <userinput>cat myfile</userinput>
-This is a fix to a boring feature.
-This is exciting and new!
-</screen>
--- a/en/examples/results/branching.stable.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg clone stable stable-fix</userinput>
-updating working directory
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>cd stable-fix</userinput>
-<prompt>$</prompt> <userinput>echo 'This is a fix to a boring feature.' &gt; myfile</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'Fix a bug'</userinput>
-<prompt>$</prompt> <userinput>hg push</userinput>
-pushing to 
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files
-</screen>
--- a/en/examples/results/branching.tag.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg tag v1.0</userinput>
-<prompt>$</prompt> <userinput>hg tip</userinput>
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Added tag v1.0 for changeset 
-
-<prompt>$</prompt> <userinput>hg tags</userinput>
-tip                                
-v1.0                               
-</screen>
--- a/en/examples/results/branching.update.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone -U main main-old</userinput>
-<prompt>$</prompt> <userinput>cd main-old</userinput>
-<prompt>$</prompt> <userinput>hg update v1.0</userinput>
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>cat myfile</userinput>
-This is a boring feature.
-</screen>
--- a/en/examples/results/cmdref.diff-p.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-<screen><prompt>$</prompt> <userinput>echo '[diff]' &gt;&gt; $HGRC</userinput>
-<prompt>$</prompt> <userinput>echo 'showfunc = False' &gt;&gt; $HGRC</userinput>
-<prompt>$</prompt> <userinput>hg diff</userinput>
-diff -r  myfile.c
-
-
-@@ -1,4 +1,4 @@
- int myfunc()
- {
--    return 1;
-+    return 10;
- }
-<prompt>$</prompt> <userinput>hg diff -p</userinput>
-diff -r  myfile.c
-
-
-@@ -1,4 +1,4 @@
- int myfunc()
- {
--    return 1;
-+    return 10;
- }
-</screen>
--- a/en/examples/results/daily.copy.after.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cp a z</userinput>
-<prompt>$</prompt> <userinput>hg copy --after a z</userinput>
-</screen>
--- a/en/examples/results/daily.copy.cat.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat file</userinput>
-line
-new contents
-<prompt>$</prompt> <userinput>cat ../my-copy/new-file</userinput>
-line
-</screen>
--- a/en/examples/results/daily.copy.clone.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone my-copy your-copy</userinput>
-updating working directory
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-</screen>
--- a/en/examples/results/daily.copy.copy.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd my-copy</userinput>
-<prompt>$</prompt> <userinput>hg copy file new-file</userinput>
-</screen>
--- a/en/examples/results/daily.copy.dir-dest.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>mkdir d</userinput>
-<prompt>$</prompt> <userinput>hg copy a b d</userinput>
-<prompt>$</prompt> <userinput>ls d</userinput>
-a  b
-</screen>
--- a/en/examples/results/daily.copy.dir-src-dest.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg copy c d</userinput>
-copying c/a/c to d/c/a/c
-</screen>
--- a/en/examples/results/daily.copy.dir-src.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg copy c e</userinput>
-copying c/a/c to e/a/c
-</screen>
--- a/en/examples/results/daily.copy.init.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg init my-copy</userinput>
-<prompt>$</prompt> <userinput>cd my-copy</userinput>
-<prompt>$</prompt> <userinput>echo line &gt; file</userinput>
-<prompt>$</prompt> <userinput>hg add file</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'Added a file'</userinput>
-</screen>
--- a/en/examples/results/daily.copy.merge.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg pull ../my-copy</userinput>
-pulling from ../my-copy
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files (+1 heads)
-(run 'hg heads' to see heads, 'hg merge' to merge)
-<prompt>$</prompt> <userinput>hg merge</userinput>
-merging file and new-file to new-file
-0 files updated, 1 files merged, 0 files removed, 0 files unresolved
-(branch merge, don't forget to commit)
-<prompt>$</prompt> <userinput>cat new-file</userinput>
-line
-new contents
-</screen>
--- a/en/examples/results/daily.copy.other.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ../your-copy</userinput>
-<prompt>$</prompt> <userinput>echo 'new contents' &gt;&gt; file</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'Changed file'</userinput>
-</screen>
--- a/en/examples/results/daily.copy.simple.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>mkdir k</userinput>
-<prompt>$</prompt> <userinput>hg copy a k</userinput>
-<prompt>$</prompt> <userinput>ls k</userinput>
-a
-</screen>
--- a/en/examples/results/daily.copy.status-copy.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status -C</userinput>
-A new-file
-  file
-<prompt>$</prompt> <userinput>hg commit -m 'Copied file'</userinput>
-</screen>
--- a/en/examples/results/daily.copy.status.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status</userinput>
-A new-file
-</screen>
--- a/en/examples/results/daily.files.add-dir.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<screen><prompt>$</prompt> <userinput>mkdir b</userinput>
-<prompt>$</prompt> <userinput>echo b &gt; b/b</userinput>
-<prompt>$</prompt> <userinput>echo c &gt; b/c</userinput>
-<prompt>$</prompt> <userinput>mkdir b/d</userinput>
-<prompt>$</prompt> <userinput>echo d &gt; b/d/d</userinput>
-<prompt>$</prompt> <userinput>hg add b</userinput>
-adding b/b
-adding b/c
-adding b/d/d
-<prompt>$</prompt> <userinput>hg commit -m 'Added all files in subdirectory'</userinput>
-</screen>
--- a/en/examples/results/daily.files.add.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg init add-example</userinput>
-<prompt>$</prompt> <userinput>cd add-example</userinput>
-<prompt>$</prompt> <userinput>echo a &gt; a</userinput>
-<prompt>$</prompt> <userinput>hg status</userinput>
-? a
-<prompt>$</prompt> <userinput>hg add a</userinput>
-<prompt>$</prompt> <userinput>hg status</userinput>
-A a
-<prompt>$</prompt> <userinput>hg commit -m 'Added one file'</userinput>
-<prompt>$</prompt> <userinput>hg status</userinput>
-</screen>
--- a/en/examples/results/daily.files.addremove.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg init addremove-example</userinput>
-<prompt>$</prompt> <userinput>cd addremove-example</userinput>
-<prompt>$</prompt> <userinput>echo a &gt; a</userinput>
-<prompt>$</prompt> <userinput>echo b &gt; b</userinput>
-<prompt>$</prompt> <userinput>hg addremove</userinput>
-adding a
-adding b
-</screen>
--- a/en/examples/results/daily.files.commit-addremove.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>echo c &gt; c</userinput>
-<prompt>$</prompt> <userinput>hg commit -A -m 'Commit with addremove'</userinput>
-adding c
-</screen>
--- a/en/examples/results/daily.files.hidden.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg init hidden-example</userinput>
-<prompt>$</prompt> <userinput>cd hidden-example</userinput>
-<prompt>$</prompt> <userinput>mkdir empty</userinput>
-<prompt>$</prompt> <userinput>touch empty/.hidden</userinput>
-<prompt>$</prompt> <userinput>hg add empty/.hidden</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'Manage an empty-looking directory'</userinput>
-<prompt>$</prompt> <userinput>ls empty</userinput>
-<prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone hidden-example tmp</userinput>
-updating working directory
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>ls tmp</userinput>
-empty
-<prompt>$</prompt> <userinput>ls tmp/empty</userinput>
-</screen>
--- a/en/examples/results/daily.files.missing.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg init missing-example</userinput>
-<prompt>$</prompt> <userinput>cd missing-example</userinput>
-<prompt>$</prompt> <userinput>echo a &gt; a</userinput>
-<prompt>$</prompt> <userinput>hg add a</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'File about to be missing'</userinput>
-<prompt>$</prompt> <userinput>rm a</userinput>
-<prompt>$</prompt> <userinput>hg status</userinput>
-! a
-</screen>
--- a/en/examples/results/daily.files.recover-missing.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg revert a</userinput>
-<prompt>$</prompt> <userinput>cat a</userinput>
-a
-<prompt>$</prompt> <userinput>hg status</userinput>
-</screen>
--- a/en/examples/results/daily.files.remove-after.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg remove --after a</userinput>
-<prompt>$</prompt> <userinput>hg status</userinput>
-R a
-</screen>
--- a/en/examples/results/daily.files.remove.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg init remove-example</userinput>
-<prompt>$</prompt> <userinput>cd remove-example</userinput>
-<prompt>$</prompt> <userinput>echo a &gt; a</userinput>
-<prompt>$</prompt> <userinput>mkdir b</userinput>
-<prompt>$</prompt> <userinput>echo b &gt; b/b</userinput>
-<prompt>$</prompt> <userinput>hg add a b</userinput>
-adding b/b
-<prompt>$</prompt> <userinput>hg commit -m 'Small example for file removal'</userinput>
-<prompt>$</prompt> <userinput>hg remove a</userinput>
-<prompt>$</prompt> <userinput>hg status</userinput>
-R a
-<prompt>$</prompt> <userinput>hg remove b</userinput>
-removing b/b
-</screen>
--- a/en/examples/results/daily.rename.rename.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg rename a b</userinput>
-</screen>
--- a/en/examples/results/daily.rename.status-copy.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status -C</userinput>
-A b
-  a
-R a
-</screen>
--- a/en/examples/results/daily.rename.status.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status</userinput>
-A b
-R a
-</screen>
--- a/en/examples/results/daily.revert.add.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<screen><prompt>$</prompt> <userinput>echo oops &gt; oops</userinput>
-<prompt>$</prompt> <userinput>hg add oops</userinput>
-<prompt>$</prompt> <userinput>hg status oops</userinput>
-A oops
-<prompt>$</prompt> <userinput>hg revert oops</userinput>
-<prompt>$</prompt> <userinput>hg status</userinput>
-? oops
-</screen>
--- a/en/examples/results/daily.revert.copy.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg copy file new-file</userinput>
-<prompt>$</prompt> <userinput>hg revert new-file</userinput>
-<prompt>$</prompt> <userinput>hg status</userinput>
-? new-file
-</screen>
--- a/en/examples/results/daily.revert.missing.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<screen><prompt>$</prompt> <userinput>rm file</userinput>
-<prompt>$</prompt> <userinput>hg status</userinput>
-! file
-<prompt>$</prompt> <userinput>hg revert file</userinput>
-<prompt>$</prompt> <userinput>ls file</userinput>
-file
-</screen>
--- a/en/examples/results/daily.revert.modify.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat file</userinput>
-original content
-<prompt>$</prompt> <userinput>echo unwanted change &gt;&gt; file</userinput>
-<prompt>$</prompt> <userinput>hg diff file</userinput>
-diff -r  file
-
-
-@@ -1,1 +1,2 @@
- original content
-+unwanted change
-</screen>
--- a/en/examples/results/daily.revert.remove.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg remove file</userinput>
-<prompt>$</prompt> <userinput>hg status</userinput>
-R file
-<prompt>$</prompt> <userinput>hg revert file</userinput>
-<prompt>$</prompt> <userinput>hg status</userinput>
-<prompt>$</prompt> <userinput>ls file</userinput>
-file
-</screen>
--- a/en/examples/results/daily.revert.rename-orig.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg revert file</userinput>
-no changes needed to file
-<prompt>$</prompt> <userinput>hg status</userinput>
-? new-file
-</screen>
--- a/en/examples/results/daily.revert.rename.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg rename file new-file</userinput>
-<prompt>$</prompt> <userinput>hg revert new-file</userinput>
-<prompt>$</prompt> <userinput>hg status</userinput>
-? new-file
-</screen>
--- a/en/examples/results/daily.revert.status.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status</userinput>
-? file.orig
-<prompt>$</prompt> <userinput>cat file.orig</userinput>
-original content
-unwanted change
-</screen>
--- a/en/examples/results/daily.revert.unmodify.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status</userinput>
-M file
-<prompt>$</prompt> <userinput>hg revert file</userinput>
-<prompt>$</prompt> <userinput>cat file</userinput>
-original content
-</screen>
--- a/en/examples/results/extdiff.diff.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg diff</userinput>
-diff -r  myfile
-
-
-@@ -1,1 +1,2 @@
- The first line.
-+The second line.
-</screen>
--- a/en/examples/results/extdiff.extdiff-ctx.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg extdiff -o -NprcC5</userinput>
-
-
-***************
-*** 1 ****
-
-  The first line.
-+ The second line.
-</screen>
--- a/en/examples/results/extdiff.extdiff.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg extdiff</userinput>
-
-
-@@ -1 +1,2 @@
- The first line.
-+The second line.
-</screen>
--- a/en/examples/results/filenames.dirs.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status src</userinput>
-? src/main.py
-? src/watcher/_watcher.c
-? src/watcher/watcher.py
-? src/xyzzy.txt
-</screen>
--- a/en/examples/results/filenames.files.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg add COPYING README examples/simple.py</userinput>
-</screen>
--- a/en/examples/results/filenames.filter.exclude.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status -X '**.py' src</userinput>
-? src/watcher/_watcher.c
-? src/xyzzy.txt
-</screen>
--- a/en/examples/results/filenames.filter.include.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status -I '*.in'</userinput>
-? MANIFEST.in
-</screen>
--- a/en/examples/results/filenames.glob.group.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status 'glob:*.{in,py}'</userinput>
-? MANIFEST.in
-? setup.py
-</screen>
--- a/en/examples/results/filenames.glob.question.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status 'glob:**.?'</userinput>
-? src/watcher/_watcher.c
-</screen>
--- a/en/examples/results/filenames.glob.range.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status 'glob:**[nr-t]'</userinput>
-? MANIFEST.in
-? src/xyzzy.txt
-</screen>
--- a/en/examples/results/filenames.glob.star-starstar.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status 'glob:*.py'</userinput>
-? setup.py
-<prompt>$</prompt> <userinput>hg status 'glob:**.py'</userinput>
-A examples/simple.py
-A src/main.py
-? examples/performant.py
-? setup.py
-? src/watcher/watcher.py
-</screen>
--- a/en/examples/results/filenames.glob.star.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg add 'glob:*.py'</userinput>
-adding main.py
-</screen>
--- a/en/examples/results/filenames.glob.starstar.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg status 'glob:**.py'</userinput>
-A examples/simple.py
-A src/main.py
-? examples/performant.py
-? setup.py
-? src/watcher/watcher.py
-</screen>
--- a/en/examples/results/filenames.wdir-relname.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status</userinput>
-A COPYING
-A README
-A examples/simple.py
-? MANIFEST.in
-? examples/performant.py
-? setup.py
-? src/main.py
-? src/watcher/_watcher.c
-? src/watcher/watcher.py
-? src/xyzzy.txt
-<prompt>$</prompt> <userinput>hg status `hg root`</userinput>
-A ../COPYING
-A ../README
-A ../examples/simple.py
-? ../MANIFEST.in
-? ../examples/performant.py
-? ../setup.py
-? main.py
-? watcher/_watcher.c
-? watcher/watcher.py
-? xyzzy.txt
-</screen>
--- a/en/examples/results/filenames.wdir-subdir.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd src</userinput>
-<prompt>$</prompt> <userinput>hg add -n</userinput>
-adding ../MANIFEST.in
-adding ../examples/performant.py
-adding ../setup.py
-adding main.py
-adding watcher/_watcher.c
-adding watcher/watcher.py
-adding xyzzy.txt
-<prompt>$</prompt> <userinput>hg add -n .</userinput>
-adding main.py
-adding watcher/_watcher.c
-adding watcher/watcher.py
-adding xyzzy.txt
-</screen>
--- a/en/examples/results/hook.msglen.go.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat .hg/hgrc</userinput>
-[hooks]
-pretxncommit.msglen = test `hg tip --template {desc} | wc -c` -ge 10
-<prompt>$</prompt> <userinput>echo a &gt; a</userinput>
-<prompt>$</prompt> <userinput>hg add a</userinput>
-<prompt>$</prompt> <userinput>hg commit -A -m 'too short'</userinput>
-transaction abort!
-rollback completed
-abort: pretxncommit.msglen hook exited with status 1
-<prompt>$</prompt> <userinput>hg commit -A -m 'long enough'</userinput>
-</screen>
--- a/en/examples/results/hook.msglen.run.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-$ \textbf{cat .hg/hgrc}
-[hooks]
-pretxncommit.msglen = test `hg tip --template \{desc\} | wc -c` -ge 10
-$ \textbf{echo a > a}
-$ \textbf{hg add a}
-$ \textbf{hg commit -A -m 'too short'}
-abort: pretxncommit.msglen hook exited with status 1
-transaction abort!
-rollback completed
-$ \textbf{hg commit -A -m 'long enough'}
--- a/en/examples/results/hook.simple.ext.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<screen><prompt>$</prompt> <userinput>echo 'commit.when = echo -n "date of commit: "; date' &gt;&gt; .hg/hgrc</userinput>
-<prompt>$</prompt> <userinput>echo a &gt;&gt; a</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'i have two hooks'</userinput>
-committed 
-
-</screen>
--- a/en/examples/results/hook.simple.init.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg init hook-test</userinput>
-<prompt>$</prompt> <userinput>cd hook-test</userinput>
-<prompt>$</prompt> <userinput>echo '[hooks]' &gt;&gt; .hg/hgrc</userinput>
-<prompt>$</prompt> <userinput>echo 'commit = echo committed $HG_NODE' &gt;&gt; .hg/hgrc</userinput>
-<prompt>$</prompt> <userinput>cat .hg/hgrc</userinput>
-[hooks]
-commit = echo committed $HG_NODE
-<prompt>$</prompt> <userinput>echo a &gt; a</userinput>
-<prompt>$</prompt> <userinput>hg add a</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'testing commit hook'</userinput>
-committed 
-</screen>
--- a/en/examples/results/hook.simple.pretxncommit.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat check_bug_id</userinput>
-#!/bin/sh
-# check that a commit comment mentions a numeric bug id
-hg log -r $1 --template {desc} | grep -q "\&lt;bug *[0-9]"
-<prompt>$</prompt> <userinput>echo 'pretxncommit.bug_id_required = ./check_bug_id $HG_NODE' &gt;&gt; .hg/hgrc</userinput>
-<prompt>$</prompt> <userinput>echo a &gt;&gt; a</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'i am not mentioning a bug id'</userinput>
-transaction abort!
-rollback completed
-abort: pretxncommit.bug_id_required hook exited with status 1
-<prompt>$</prompt> <userinput>hg commit -m 'i refer you to bug 666'</userinput>
-committed 
-
-</screen>
--- a/en/examples/results/hook.ws.better.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat .hg/hgrc</userinput>
-[hooks]
-pretxncommit.whitespace = .hg/check_whitespace.py
-<prompt>$</prompt> <userinput>echo 'a ' &gt;&gt; a</userinput>
-<prompt>$</prompt> <userinput>hg commit -A -m 'add new line with trailing whitespace'</userinput>
-a, line 2: trailing whitespace added
-commit message saved to .hg/commit.save
-transaction abort!
-rollback completed
-abort: pretxncommit.whitespace hook exited with status 1
-<prompt>$</prompt> <userinput>sed -i 's, *$,,' a</userinput>
-<prompt>$</prompt> <userinput>hg commit -A -m 'trimmed trailing whitespace'</userinput>
-a, line 2: trailing whitespace added
-commit message saved to .hg/commit.save
-transaction abort!
-rollback completed
-abort: pretxncommit.whitespace hook exited with status 1
-</screen>
--- a/en/examples/results/hook.ws.simple.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat .hg/hgrc</userinput>
-[hooks]
-pretxncommit.whitespace = hg export tip | (! egrep -q '^\+.*[ \t]$')
-<prompt>$</prompt> <userinput>echo 'a ' &gt; a</userinput>
-<prompt>$</prompt> <userinput>hg commit -A -m 'test with trailing whitespace'</userinput>
-adding a
-transaction abort!
-rollback completed
-abort: pretxncommit.whitespace hook exited with status 1
-<prompt>$</prompt> <userinput>echo 'a' &gt; a</userinput>
-<prompt>$</prompt> <userinput>hg commit -A -m 'drop trailing whitespace and try again'</userinput>
-</screen>
--- a/en/examples/results/issue29.go.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg init issue29</userinput>
-<prompt>$</prompt> <userinput>cd issue29</userinput>
-<prompt>$</prompt> <userinput>echo a &gt; a</userinput>
-<prompt>$</prompt> <userinput>hg ci -Ama</userinput>
-adding a
-<prompt>$</prompt> <userinput>echo b &gt; b</userinput>
-<prompt>$</prompt> <userinput>hg ci -Amb</userinput>
-adding b
-<prompt>$</prompt> <userinput>hg up 0</userinput>
-0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>mkdir b</userinput>
-<prompt>$</prompt> <userinput>echo b &gt; b/b</userinput>
-<prompt>$</prompt> <userinput>hg ci -Amc</userinput>
-adding b/b
-created new head
-<prompt>$</prompt> <userinput>hg merge</userinput>
-
-</screen>
--- a/en/examples/results/mq.dodiff.diff.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<screen><prompt>$</prompt> <userinput>echo 'this is my original thought' &gt; oldfile</userinput>
-<prompt>$</prompt> <userinput>echo 'i have changed my mind' &gt; newfile</userinput>
-<prompt>$</prompt> <userinput>diff -u oldfile newfile &gt; tiny.patch</userinput>
-<prompt>$</prompt> <userinput>cat tiny.patch</userinput>
-
-
-@@ -1 +1 @@
--this is my original thought
-+i have changed my mind
-<prompt>$</prompt> <userinput>patch &lt; tiny.patch</userinput>
-patching file oldfile
-<prompt>$</prompt> <userinput>cat oldfile</userinput>
-i have changed my mind
-</screen>
--- a/en/examples/results/mq.guards.init.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg qinit</userinput>
-<prompt>$</prompt> <userinput>hg qnew hello.patch</userinput>
-<prompt>$</prompt> <userinput>echo hello &gt; hello</userinput>
-<prompt>$</prompt> <userinput>hg add hello</userinput>
-<prompt>$</prompt> <userinput>hg qrefresh</userinput>
-<prompt>$</prompt> <userinput>hg qnew goodbye.patch</userinput>
-<prompt>$</prompt> <userinput>echo goodbye &gt; goodbye</userinput>
-<prompt>$</prompt> <userinput>hg add goodbye</userinput>
-<prompt>$</prompt> <userinput>hg qrefresh</userinput>
-</screen>
--- a/en/examples/results/mq.guards.qguard.neg.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg qguard hello.patch -quux</userinput>
-<prompt>$</prompt> <userinput>hg qguard hello.patch</userinput>
-hello.patch: -quux
-</screen>
--- a/en/examples/results/mq.guards.qguard.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg qguard</userinput>
-goodbye.patch: unguarded
-</screen>
--- a/en/examples/results/mq.guards.qguard.pos.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg qguard +foo</userinput>
-<prompt>$</prompt> <userinput>hg qguard</userinput>
-goodbye.patch: +foo
-</screen>
--- a/en/examples/results/mq.guards.qselect.cat.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat .hg/patches/guards</userinput>
-foo
-</screen>
--- a/en/examples/results/mq.guards.qselect.error.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg qselect +foo</userinput>
-abort: guard '+foo' starts with invalid character: '+'
-</screen>
--- a/en/examples/results/mq.guards.qselect.foo.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg qpop -a</userinput>
-patch queue now empty
-<prompt>$</prompt> <userinput>hg qselect</userinput>
-no active guards
-<prompt>$</prompt> <userinput>hg qselect foo</userinput>
-number of unguarded, unapplied patches has changed from 1 to 2
-<prompt>$</prompt> <userinput>hg qselect</userinput>
-foo
-</screen>
--- a/en/examples/results/mq.guards.qselect.foobar.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg qselect foo bar</userinput>
-number of unguarded, unapplied patches has changed from 0 to 2
-<prompt>$</prompt> <userinput>hg qpop -a</userinput>
-no patches applied
-<prompt>$</prompt> <userinput>hg qpush -a</userinput>
-applying hello.patch
-applying goodbye.patch
-now at: goodbye.patch
-</screen>
--- a/en/examples/results/mq.guards.qselect.qpush.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg qpush -a</userinput>
-applying hello.patch
-applying goodbye.patch
-now at: goodbye.patch
-</screen>
--- a/en/examples/results/mq.guards.qselect.quux.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg qselect quux</userinput>
-number of guarded, applied patches has changed from 0 to 2
-<prompt>$</prompt> <userinput>hg qpop -a</userinput>
-patch queue now empty
-<prompt>$</prompt> <userinput>hg qpush -a</userinput>
-patch series already fully applied
-</screen>
--- a/en/examples/results/mq.guards.series.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat .hg/patches/series</userinput>
-hello.patch #-quux
-goodbye.patch #+foo
-</screen>
--- a/en/examples/results/mq.id.out.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-$ \textbf{hg qapplied}
-first.patch
-second.patch
-$ \textbf{hg log -r qbase:qtip}
-changeset:   
-tag:         first.patch
-tag:         qbase
-user:        Bryan O'Sullivan <bos@serpentine.com>
-
-summary:     patch queue: first.patch
-
-changeset:   
-tag:         second.patch
-tag:         qtip
-tag:         tip
-user:        Bryan O'Sullivan <bos@serpentine.com>
-
-summary:     patch queue: second.patch
-
-$ \textbf{hg export second.patch}
-# HG changeset patch
-# User Bryan O'Sullivan <bos@serpentine.com>
-
-# Node ID 
-# Parent  
-patch queue: second.patch
-
-diff -r  -r  other.c
-
-
-@@ -0,0 +1,1 @@
-+double u;
--- a/en/examples/results/mq.id.output.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg qapplied</userinput>
-first.patch
-second.patch
-<prompt>$</prompt> <userinput>hg log -r qbase:qtip</userinput>
-changeset:   
-tag:         first.patch
-tag:         qbase
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     [mq]: first.patch
-
-changeset:   
-tag:         qtip
-tag:         second.patch
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     [mq]: second.patch
-
-<prompt>$</prompt> <userinput>hg export second.patch</userinput>
-# HG changeset patch
-# User Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-# Node ID 
-# Parent  
-[mq]: second.patch
-
-diff -r  -r  other.c
-
-
-@@ -0,0 +1,1 @@
-+double u;
-</screen>
--- a/en/examples/results/mq.qinit-help.help.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg help qinit</userinput>
-hg qinit [-c]
-
-init a new queue repository
-
-    The queue repository is unversioned by default. If -c is
-    specified, qinit will create a separate nested repository
-    for patches (qinit -c may also be run later to convert
-    an unversioned patch repository into a versioned one).
-    You can use qcommit to commit changes to this queue repository.
-
-options:
-
- -c --create-repo  create queue repository
-
-use "hg -v help qinit" to show global options
-</screen>
--- a/en/examples/results/mq.tarball.download.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<screen><prompt>$</prompt> <userinput>download netplug-1.2.5.tar.bz2</userinput>
-<prompt>$</prompt> <userinput>tar jxf netplug-1.2.5.tar.bz2</userinput>
-<prompt>$</prompt> <userinput>cd netplug-1.2.5</userinput>
-<prompt>$</prompt> <userinput>hg init</userinput>
-<prompt>$</prompt> <userinput>hg commit -q --addremove --message netplug-1.2.5</userinput>
-<prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone netplug-1.2.5 netplug</userinput>
-updating working directory
-18 files updated, 0 files merged, 0 files removed, 0 files unresolved
-</screen>
--- a/en/examples/results/mq.tarball.newsource.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg qpop -a</userinput>
-patch queue now empty
-<prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>download netplug-1.2.8.tar.bz2</userinput>
-<prompt>$</prompt> <userinput>hg clone netplug-1.2.5 netplug-1.2.8</userinput>
-updating working directory
-18 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>cd netplug-1.2.8</userinput>
-<prompt>$</prompt> <userinput>hg locate -0 | xargs -0 rm</userinput>
-<prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>tar jxf netplug-1.2.8.tar.bz2</userinput>
-<prompt>$</prompt> <userinput>cd netplug-1.2.8</userinput>
-<prompt>$</prompt> <userinput>hg commit --addremove --message netplug-1.2.8</userinput>
-</screen>
--- a/en/examples/results/mq.tarball.qinit.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd netplug</userinput>
-<prompt>$</prompt> <userinput>hg qinit</userinput>
-<prompt>$</prompt> <userinput>hg qnew -m 'fix build problem with gcc 4' build-fix.patch</userinput>
-<prompt>$</prompt> <userinput>perl -pi -e 's/int addr_len/socklen_t addr_len/' netlink.c</userinput>
-<prompt>$</prompt> <userinput>hg qrefresh</userinput>
-<prompt>$</prompt> <userinput>hg tip -p</userinput>
-changeset:   
-tag:         qtip
-tag:         build-fix.patch
-tag:         tip
-tag:         qbase
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     fix build problem with gcc 4
-
-diff -r  -r  netlink.c
-
-
-@@ -275,7 +275,7 @@
-         exit(1);
-     }
- 
--    int addr_len = sizeof(addr);
-+    socklen_t addr_len = sizeof(addr);
- 
-     if (getsockname(fd, (struct sockaddr *) &amp;addr, &amp;addr_len) == -1) {
-         do_log(LOG_ERR, "Could not get socket details: %m");
-
-</screen>
--- a/en/examples/results/mq.tarball.repush.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ../netplug</userinput>
-<prompt>$</prompt> <userinput>hg pull ../netplug-1.2.8</userinput>
-pulling from ../netplug-1.2.8
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 12 changes to 12 files
-(run 'hg update' to get a working copy)
-<prompt>$</prompt> <userinput>hg qpush -a</userinput>
-(working directory not at tip)
-applying build-fix.patch
-now at: build-fix.patch
-</screen>
--- a/en/examples/results/mq.tools.lsdiff.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<screen><prompt>$</prompt> <userinput>lsdiff -nvv remove-redundant-null-checks.patch</userinput>
-22	File #1  	a/drivers/char/agp/sgi-agp.c
-	24	Hunk #1	static int __devinit agp_sgi_init(void)
-37	File #2  	a/drivers/char/hvcs.c
-	39	Hunk #1	static struct tty_operations hvcs_ops = 
-	53	Hunk #2	static int hvcs_alloc_index_list(int n)
-69	File #3  	a/drivers/message/fusion/mptfc.c
-	71	Hunk #1	mptfc_GetFcDevPage0(MPT_ADAPTER *ioc, in
-85	File #4  	a/drivers/message/fusion/mptsas.c
-	87	Hunk #1	mptsas_probe_hba_phys(MPT_ADAPTER *ioc)
-98	File #5  	a/drivers/net/fs_enet/fs_enet-mii.c
-	100	Hunk #1	static struct fs_enet_mii_bus *create_bu
-111	File #6  	a/drivers/net/wireless/ipw2200.c
-	113	Hunk #1	static struct ipw_fw_error *ipw_alloc_er
-	126	Hunk #2	static ssize_t clear_error(struct device
-	140	Hunk #3	static void ipw_irq_tasklet(struct ipw_p
-	150	Hunk #4	static void ipw_pci_remove(struct pci_de
-164	File #7  	a/drivers/scsi/libata-scsi.c
-	166	Hunk #1	int ata_cmd_ioctl(struct scsi_device *sc
-178	File #8  	a/drivers/video/au1100fb.c
-	180	Hunk #1	void __exit au1100fb_cleanup(void)
-</screen>
--- a/en/examples/results/mq.tools.tools.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-<screen><prompt>$</prompt> <userinput>diffstat -p1 remove-redundant-null-checks.patch</userinput>
- drivers/char/agp/sgi-agp.c        |    5 ++---
- drivers/char/hvcs.c               |   11 +++++------
- drivers/message/fusion/mptfc.c    |    6 ++----
- drivers/message/fusion/mptsas.c   |    3 +--
- drivers/net/fs_enet/fs_enet-mii.c |    3 +--
- drivers/net/wireless/ipw2200.c    |   22 ++++++----------------
- drivers/scsi/libata-scsi.c        |    4 +---
- drivers/video/au1100fb.c          |    3 +--
- 8 files changed, 19 insertions(+), 38 deletions(-)
-<prompt>$</prompt> <userinput>filterdiff -i '*/video/*' remove-redundant-null-checks.patch</userinput>
-
-
-@@ -743,8 +743,7 @@ void __exit au1100fb_cleanup(void)
- {
- 	driver_unregister(&amp;au1100fb_driver);
- 
--	if (drv_info.opt_mode)
--		kfree(drv_info.opt_mode);
-+	kfree(drv_info.opt_mode);
- }
- 
- module_init(au1100fb_init);
-</screen>
--- a/en/examples/results/mq.tutorial.add.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>echo 'file 3, line 1' &gt;&gt; file3</userinput>
-<prompt>$</prompt> <userinput>hg qnew add-file3.patch</userinput>
-<prompt>$</prompt> <userinput>hg qnew -f add-file3.patch</userinput>
-abort: patch "add-file3.patch" already exists
-</screen>
--- a/en/examples/results/mq.tutorial.qinit.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg init mq-sandbox</userinput>
-<prompt>$</prompt> <userinput>cd mq-sandbox</userinput>
-<prompt>$</prompt> <userinput>echo 'line 1' &gt; file1</userinput>
-<prompt>$</prompt> <userinput>echo 'another line 1' &gt; file2</userinput>
-<prompt>$</prompt> <userinput>hg add file1 file2</userinput>
-<prompt>$</prompt> <userinput>hg commit -m'first change'</userinput>
-<prompt>$</prompt> <userinput>hg qinit</userinput>
-</screen>
--- a/en/examples/results/mq.tutorial.qnew.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg tip</userinput>
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     first change
-
-<prompt>$</prompt> <userinput>hg qnew first.patch</userinput>
-<prompt>$</prompt> <userinput>hg tip</userinput>
-changeset:   
-tag:         qtip
-tag:         first.patch
-tag:         tip
-tag:         qbase
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     [mq]: first.patch
-
-<prompt>$</prompt> <userinput>ls .hg/patches</userinput>
-first.patch  series  status
-</screen>
--- a/en/examples/results/mq.tutorial.qnew2.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg qnew second.patch</userinput>
-<prompt>$</prompt> <userinput>hg log --style=compact --limit=2</userinput>
-2[qtip,second.patch,tip]      2009-03-10 04:38 +0000   bos
-  [mq]: second.patch
-
-1[first.patch,qbase]      2009-03-10 04:38 +0000   bos
-  [mq]: first.patch
-
-<prompt>$</prompt> <userinput>echo 'line 4' &gt;&gt; file1</userinput>
-<prompt>$</prompt> <userinput>hg qrefresh</userinput>
-<prompt>$</prompt> <userinput>hg tip --style=compact --patch</userinput>
-2[qtip,second.patch,tip]      2009-03-10 04:38 +0000   bos
-  [mq]: second.patch
-
-diff -r  -r  file1
-
-
-@@ -1,3 +1,4 @@
- line 1
- line 2
- line 3
-+line 4
-
-<prompt>$</prompt> <userinput>hg annotate file1</userinput>
-0: line 1
-1: line 2
-1: line 3
-2: line 4
-</screen>
--- a/en/examples/results/mq.tutorial.qpop.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg qapplied</userinput>
-first.patch
-second.patch
-<prompt>$</prompt> <userinput>hg qpop</userinput>
-now at: first.patch
-<prompt>$</prompt> <userinput>hg qseries</userinput>
-first.patch
-second.patch
-<prompt>$</prompt> <userinput>hg qapplied</userinput>
-first.patch
-<prompt>$</prompt> <userinput>cat file1</userinput>
-line 1
-line 2
-line 3
-</screen>
--- a/en/examples/results/mq.tutorial.qpush-a.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg qpush -a</userinput>
-applying second.patch
-now at: second.patch
-<prompt>$</prompt> <userinput>cat file1</userinput>
-line 1
-line 2
-line 3
-line 4
-</screen>
--- a/en/examples/results/mq.tutorial.qrefresh.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<screen><prompt>$</prompt> <userinput>echo 'line 2' &gt;&gt; file1</userinput>
-<prompt>$</prompt> <userinput>hg diff</userinput>
-diff -r  file1
-
-
-@@ -1,1 +1,2 @@
- line 1
-+line 2
-<prompt>$</prompt> <userinput>hg qrefresh</userinput>
-<prompt>$</prompt> <userinput>hg diff</userinput>
-<prompt>$</prompt> <userinput>hg tip --style=compact --patch</userinput>
-1[qtip,first.patch,tip,qbase]      2009-03-10 04:38 +0000   bos
-  [mq]: first.patch
-
-diff -r  -r  file1
-
-
-@@ -1,1 +1,2 @@
- line 1
-+line 2
-
-</screen>
--- a/en/examples/results/mq.tutorial.qrefresh2.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<screen><prompt>$</prompt> <userinput>echo 'line 3' &gt;&gt; file1</userinput>
-<prompt>$</prompt> <userinput>hg status</userinput>
-M file1
-<prompt>$</prompt> <userinput>hg qrefresh</userinput>
-<prompt>$</prompt> <userinput>hg tip --style=compact --patch</userinput>
-1[qtip,first.patch,tip,qbase]      2009-03-10 04:38 +0000   bos
-  [mq]: first.patch
-
-diff -r  -r  file1
-
-
-@@ -1,1 +1,3 @@
- line 1
-+line 2
-+line 3
-
-</screen>
--- a/en/examples/results/mq.tutorial.qseries.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg qseries</userinput>
-first.patch
-second.patch
-<prompt>$</prompt> <userinput>hg qapplied</userinput>
-first.patch
-second.patch
-</screen>
--- a/en/examples/results/rename.divergent.clone.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg clone orig anne</userinput>
-updating working directory
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>hg clone orig bob</userinput>
-updating working directory
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-</screen>
--- a/en/examples/results/rename.divergent.merge.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-<screen># See http://www.selenic.com/mercurial/bts/issue455
-<prompt>$</prompt> <userinput>cd ../orig</userinput>
-<prompt>$</prompt> <userinput>hg pull -u ../anne</userinput>
-pulling from ../anne
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files
-1 files updated, 0 files merged, 1 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>hg pull ../bob</userinput>
-pulling from ../bob
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files (+1 heads)
-(run 'hg heads' to see heads, 'hg merge' to merge)
-<prompt>$</prompt> <userinput>hg merge</userinput>
-warning: detected divergent renames of foo to:
- bar
- quux
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-(branch merge, don't forget to commit)
-<prompt>$</prompt> <userinput>ls</userinput>
-bar  quux
-</screen>
--- a/en/examples/results/rename.divergent.rename.anne.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd anne</userinput>
-<prompt>$</prompt> <userinput>hg mv foo bar</userinput>
-<prompt>$</prompt> <userinput>hg ci -m 'Rename foo to bar'</userinput>
-</screen>
--- a/en/examples/results/rename.divergent.rename.bob.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ../bob</userinput>
-<prompt>$</prompt> <userinput>hg mv foo quux</userinput>
-<prompt>$</prompt> <userinput>hg ci -m 'Rename foo to quux'</userinput>
-</screen>
--- a/en/examples/results/rollback.add.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg add b</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'Add file b, this time for real'</userinput>
-</screen>
--- a/en/examples/results/rollback.commit.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status</userinput>
-M a
-<prompt>$</prompt> <userinput>echo b &gt; b</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'Add file b'</userinput>
-</screen>
--- a/en/examples/results/rollback.rollback.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg rollback</userinput>
-rolling back last transaction
-<prompt>$</prompt> <userinput>hg tip</userinput>
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     First commit
-
-<prompt>$</prompt> <userinput>hg status</userinput>
-M a
-? b
-</screen>
--- a/en/examples/results/rollback.status.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg status</userinput>
-? b
-<prompt>$</prompt> <userinput>hg tip</userinput>
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Add file b
-
-</screen>
--- a/en/examples/results/rollback.tip.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-<screen></screen>
--- a/en/examples/results/rollback.twice.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg rollback</userinput>
-rolling back last transaction
-<prompt>$</prompt> <userinput>hg rollback</userinput>
-no rollback information available
-</screen>
--- a/en/examples/results/tag.init.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg init mytag</userinput>
-<prompt>$</prompt> <userinput>cd mytag</userinput>
-<prompt>$</prompt> <userinput>echo hello &gt; myfile</userinput>
-<prompt>$</prompt> <userinput>hg commit -A -m 'Initial commit'</userinput>
-adding myfile
-</screen>
--- a/en/examples/results/tag.log.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg log</userinput>
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Added tag v1.0 for changeset 
-
-changeset:   
-tag:         v1.0
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Initial commit
-
-</screen>
--- a/en/examples/results/tag.log.v1.0.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<screen><prompt>$</prompt> <userinput>echo goodbye &gt; myfile2</userinput>
-<prompt>$</prompt> <userinput>hg commit -A -m 'Second commit'</userinput>
-adding myfile2
-<prompt>$</prompt> <userinput>hg log -r v1.0</userinput>
-changeset:   
-tag:         v1.0
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Initial commit
-
-</screen>
--- a/en/examples/results/tag.remove.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg tag --remove v1.0</userinput>
-<prompt>$</prompt> <userinput>hg tags</userinput>
-tip                                
-</screen>
--- a/en/examples/results/tag.replace.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg tag -r 1 v1.1</userinput>
-<prompt>$</prompt> <userinput>hg tags</userinput>
-tip                                
-v1.1                               
-<prompt>$</prompt> <userinput>hg tag -r 2 v1.1</userinput>
-abort: tag 'v1.1' already exists (use -f to force)
-<prompt>$</prompt> <userinput>hg tag -f -r 2 v1.1</userinput>
-<prompt>$</prompt> <userinput>hg tags</userinput>
-tip                                
-v1.1                               
-</screen>
--- a/en/examples/results/tag.tag.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg tag v1.0</userinput>
-</screen>
--- a/en/examples/results/tag.tags.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg tags</userinput>
-tip                                
-v1.0                               
-</screen>
--- a/en/examples/results/tag.tip.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg tip</userinput>
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Added tag v1.1 for changeset 
-
-</screen>
--- a/en/examples/results/template.simple.changelog.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- a/en/examples/results/template.simple.combine.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
--- a/en/examples/results/template.simple.compact.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- a/en/examples/results/template.simple.datekeyword.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-
-
-
-
-
--- a/en/examples/results/template.simple.keywords.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- a/en/examples/results/template.simple.manyfilters.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- a/en/examples/results/template.simple.normal.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
--- a/en/examples/results/template.simple.rev.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-
-
-
-
--- a/en/examples/results/template.simple.simplest.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-
-
-
--- a/en/examples/results/template.simple.simplesub.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
--- a/en/examples/results/template.svnstyle.id.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg log -r0 --template '{node}'</userinput>
-</screen>
--- a/en/examples/results/template.svnstyle.result.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg log -r1 --style svn.style</userinput>
-------------------------------------------------------------------------
-
-r1 | bos | 
-
-added line to end of &lt;&lt;hello&gt;&gt; file.
-
-in addition, added a file with the helpful name (at least i hope that some
-might consider it so) of goodbye.
-
-------------------------------------------------------------------------
-</screen>
--- a/en/examples/results/template.svnstyle.short.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<screen><prompt>$</prompt> <userinput>svn log -r9653</userinput>
-------------------------------------------------------------------------
-r9653 | sean.hefty | 2006-09-27 14:39:55 -0700 (Wed, 27 Sep 2006) | 5 lines
-
-On reporting a route error, also include the status for the error,
-rather than indicating a status of 0 when an error has occurred.
-
-Signed-off-by: Sean Hefty &lt;sean.hefty@intel.com&gt;
-
-------------------------------------------------------------------------
-</screen>
--- a/en/examples/results/template.svnstyle.simplest.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat svn.style</userinput>
-changeset = "{node|short}\n"
-<prompt>$</prompt> <userinput>hg log -r1 --style svn.style</userinput>
-
-</screen>
--- a/en/examples/results/template.svnstyle.style.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat svn.style</userinput>
-header = '------------------------------------------------------------------------\n\n'
-changeset = svn.template
-</screen>
--- a/en/examples/results/template.svnstyle.syntax.error.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg log -r1 --style broken.style</userinput>
-abort: broken.style:1: parse error
-</screen>
--- a/en/examples/results/template.svnstyle.syntax.input.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat broken.style</userinput>
-changeset =
-</screen>
--- a/en/examples/results/template.svnstyle.template.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat svn.template</userinput>
-r{rev} | {author|user} | {date|isodate} ({date|rfc822date})
-
-{desc|strip|fill76}
-
-------------------------------------------------------------------------
-</screen>
--- a/en/examples/results/tour-merge-conflict.commit.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat &gt; letter.txt &lt;&lt;EOF</userinput>
-<prompt>></prompt> <userinput>Greetings!</userinput>
-<prompt>></prompt> <userinput>I am Bryan O'Sullivan, no relation of the former</userinput>
-<prompt>></prompt> <userinput>Nigerian dictator Sani Abacha.</userinput>
-<prompt>></prompt> <userinput>EOF</userinput>
-<prompt>$</prompt> <userinput>hg resolve -m letter.txt</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'Send me your money'</userinput>
-<prompt>$</prompt> <userinput>hg tip</userinput>
-changeset:   
-tag:         tip
-parent:      
-parent:      
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Send me your money
-
-</screen>
--- a/en/examples/results/tour-merge-conflict.cousin.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone scam scam-cousin</userinput>
-updating working directory
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>cd scam-cousin</userinput>
-<prompt>$</prompt> <userinput>cat &gt; letter.txt &lt;&lt;EOF</userinput>
-<prompt>></prompt> <userinput>Greetings!</userinput>
-<prompt>></prompt> <userinput>I am Shehu Musa Abacha, cousin to the former</userinput>
-<prompt>></prompt> <userinput>Nigerian dictator Sani Abacha.</userinput>
-<prompt>></prompt> <userinput>EOF</userinput>
-<prompt>$</prompt> <userinput>hg commit -m '419 scam, with cousin'</userinput>
-</screen>
--- a/en/examples/results/tour-merge-conflict.merge.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-<screen><prompt>$</prompt> <userinput>export HGMERGE=merge</userinput>
-<prompt>$</prompt> <userinput>echo 'XXX this is broken and must be fixed'</userinput>
-XXX this is broken and must be fixed
-<prompt>$</prompt> <userinput>hg merge</userinput>
-merging letter.txt
-merge: warning: conflicts during merge
-merging letter.txt failed!
-0 files updated, 0 files merged, 0 files removed, 1 files unresolved
-use 'hg resolve' to retry unresolved file merges
-<prompt>$</prompt> <userinput>cat letter.txt</userinput>
-Greetings!
-&lt;&lt;&lt;&lt;&lt;&lt;&lt; /tmp/tour-merge-conflictBrdfE0/scam-merge/letter.txt
-I am Shehu Musa Abacha, cousin to the former
-=======
-I am Alhaji Abba Abacha, son of the former
-&gt;&gt;&gt;&gt;&gt;&gt;&gt; /tmp/letter.txt~other.1ctEYy
-Nigerian dictator Sani Abacha.
-</screen>
--- a/en/examples/results/tour-merge-conflict.pull.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone scam-cousin scam-merge</userinput>
-updating working directory
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>cd scam-merge</userinput>
-<prompt>$</prompt> <userinput>hg pull -u ../scam-son</userinput>
-pulling from ../scam-son
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files (+1 heads)
-not updating, since new heads added
-(run 'hg heads' to see heads, 'hg merge' to merge)
-</screen>
--- a/en/examples/results/tour-merge-conflict.son.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone scam scam-son</userinput>
-updating working directory
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>cd scam-son</userinput>
-<prompt>$</prompt> <userinput>cat &gt; letter.txt &lt;&lt;EOF</userinput>
-<prompt>></prompt> <userinput>Greetings!</userinput>
-<prompt>></prompt> <userinput>I am Alhaji Abba Abacha, son of the former</userinput>
-<prompt>></prompt> <userinput>Nigerian dictator Sani Abacha.</userinput>
-<prompt>></prompt> <userinput>EOF</userinput>
-<prompt>$</prompt> <userinput>hg commit -m '419 scam, with son'</userinput>
-</screen>
--- a/en/examples/results/tour-merge-conflict.wife.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat &gt; letter.txt &lt;&lt;EOF</userinput>
-<prompt>></prompt> <userinput>Greetings!</userinput>
-<prompt>></prompt> <userinput>I am Mariam Abacha, the wife of former</userinput>
-<prompt>></prompt> <userinput>Nigerian dictator Sani Abacha.</userinput>
-<prompt>></prompt> <userinput>EOF</userinput>
-<prompt>$</prompt> <userinput>hg add letter.txt</userinput>
-<prompt>$</prompt> <userinput>hg commit -m '419 scam, first draft'</userinput>
-</screen>
--- a/en/examples/results/tour.clone-pull.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone hello hello-pull</userinput>
-updating working directory
-2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-</screen>
--- a/en/examples/results/tour.clone-push.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone hello hello-push</userinput>
-updating working directory
-2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-</screen>
--- a/en/examples/results/tour.clone.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg clone http://hg.serpentine.com/tutorial/hello</userinput>
-destination directory: hello
-requesting all changes
-adding changesets
-adding manifests
-adding file changes
-added 5 changesets with 5 changes to 2 files
-updating working directory
-2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-</screen>
--- a/en/examples/results/tour.commit.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg commit</userinput>
-</screen>
--- a/en/examples/results/tour.diff.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg diff</userinput>
-diff -r  hello.c
-
-
-@@ -8,5 +8,6 @@
- int main(int argc, char **argv)
- {
- 	printf("hello, world!\");
-+	printf("hello again!\n");
- 	return 0;
- }
-</screen>
--- a/en/examples/results/tour.help.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg help init</userinput>
-hg init [-e CMD] [--remotecmd CMD] [DEST]
-
-create a new repository in the given directory
-
-    Initialize a new repository in the given directory. If the given
-    directory does not exist, it is created.
-
-    If no directory is given, the current directory is used.
-
-    It is possible to specify an ssh:// URL as the destination.
-    See 'hg help urls' for more information.
-
-options:
-
- -e --ssh        specify ssh command to use
-    --remotecmd  specify hg command to run on the remote side
-
-use "hg -v help init" to show global options
-</screen>
--- a/en/examples/results/tour.incoming.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd hello-pull</userinput>
-<prompt>$</prompt> <userinput>hg incoming ../my-hello</userinput>
-comparing with ../my-hello
-searching for changes
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Added an extra line of output
-
-</screen>
--- a/en/examples/results/tour.log-r.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg log -r 3</userinput>
-changeset:   
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Get make to generate the final binary from a .o file.
-
-<prompt>$</prompt> <userinput>hg log -r </userinput>
-changeset:   
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Get make to generate the final binary from a .o file.
-
-<prompt>$</prompt> <userinput>hg log -r 1 -r 4</userinput>
-changeset:   
-user:        mpm@selenic.com
-
-summary:     Create a makefile
-
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Trim comments.
-
-</screen>
--- a/en/examples/results/tour.log-v.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg log -v -r 3</userinput>
-changeset:   
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-files:       Makefile
-description:
-Get make to generate the final binary from a .o file.
-
-
-</screen>
--- a/en/examples/results/tour.log-vp.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg log -v -p -r 2</userinput>
-changeset:   
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-files:       hello.c
-description:
-Introduce a typo into hello.c.
-
-
-diff -r  -r  hello.c
-
-
-@@ -11,6 +11,6 @@
- 
- int main(int argc, char **argv)
- {
--	printf("hello, world!\n");
-+	printf("hello, world!\");
- 	return 0;
- }
-
-</screen>
--- a/en/examples/results/tour.log.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg log</userinput>
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Trim comments.
-
-changeset:   
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Get make to generate the final binary from a .o file.
-
-changeset:   
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Introduce a typo into hello.c.
-
-changeset:   
-user:        mpm@selenic.com
-
-summary:     Create a makefile
-
-changeset:   
-user:        mpm@selenic.com
-
-summary:     Create a standard "hello, world" program
-
-</screen>
--- a/en/examples/results/tour.log.range.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg log -r 2:4</userinput>
-changeset:   
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Introduce a typo into hello.c.
-
-changeset:   
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Get make to generate the final binary from a .o file.
-
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Trim comments.
-
-</screen>
--- a/en/examples/results/tour.ls-a.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd hello</userinput>
-<prompt>$</prompt> <userinput>ls -a</userinput>
-.  ..  .hg  Makefile  hello.c
-</screen>
--- a/en/examples/results/tour.ls.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<screen><prompt>$</prompt> <userinput>ls -l</userinput>
-
-
-<prompt>$</prompt> <userinput>ls hello</userinput>
-Makefile  hello.c
-</screen>
--- a/en/examples/results/tour.merge.cat.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cat hello.c</userinput>
-/*
- * Placed in the public domain by Bryan O'Sullivan.  This program is
- * not covered by patents in the United States or other countries.
- */
-
-#include &lt;stdio.h&gt;
-
-int main(int argc, char **argv)
-{
-	printf("once more, hello.\n");
-	printf("hello, world!\");
-	return 0;
-}
-<prompt>$</prompt> <userinput>cat ../my-hello/hello.c</userinput>
-/*
- * Placed in the public domain by Bryan O'Sullivan.  This program is
- * not covered by patents in the United States or other countries.
- */
-
-#include &lt;stdio.h&gt;
-
-int main(int argc, char **argv)
-{
-	printf("hello, world!\");
-	printf("hello again!\n");
-	return 0;
-}
-</screen>
--- a/en/examples/results/tour.merge.clone.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone hello my-new-hello</userinput>
-updating working directory
-2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>cd my-new-hello</userinput>
-<prompt>$</prompt> <userinput>sed -i '/printf/i\\tprintf("once more, hello.\\n");' hello.c</userinput>
-<prompt>$</prompt> <userinput>hg commit -m 'A new hello for a new day.'</userinput>
-</screen>
--- a/en/examples/results/tour.merge.commit.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg commit -m 'Merged changes'</userinput>
-</screen>
--- a/en/examples/results/tour.merge.heads.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg heads</userinput>
-changeset:   
-tag:         tip
-parent:      
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Added an extra line of output
-
-changeset:   
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     A new hello for a new day.
-
-</screen>
--- a/en/examples/results/tour.merge.merge.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg merge</userinput>
-merging hello.c
-0 files updated, 1 files merged, 0 files removed, 0 files unresolved
-(branch merge, don't forget to commit)
-</screen>
--- a/en/examples/results/tour.merge.parents.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg parents</userinput>
-changeset:   
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     A new hello for a new day.
-
-changeset:   
-tag:         tip
-parent:      
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Added an extra line of output
-
-<prompt>$</prompt> <userinput>cat hello.c</userinput>
-/*
- * Placed in the public domain by Bryan O'Sullivan.  This program is
- * not covered by patents in the United States or other countries.
- */
-
-#include &lt;stdio.h&gt;
-
-int main(int argc, char **argv)
-{
-	printf("once more, hello.\n");
-	printf("hello, world!\");
-	printf("hello again!\n");
-	return 0;
-}
-</screen>
--- a/en/examples/results/tour.merge.pull.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg pull ../my-hello</userinput>
-pulling from ../my-hello
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files (+1 heads)
-(run 'hg heads' to see heads, 'hg merge' to merge)
-</screen>
--- a/en/examples/results/tour.merge.tip.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg tip</userinput>
-changeset:   
-tag:         tip
-parent:      
-parent:      
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Merged changes
-
-</screen>
--- a/en/examples/results/tour.merge.update.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg update</userinput>
-abort: crosses branches (use 'hg merge' or 'hg update -C')
-</screen>
--- a/en/examples/results/tour.older.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg update 2</userinput>
-2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>hg parents</userinput>
-changeset:   
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Introduce a typo into hello.c.
-
-<prompt>$</prompt> <userinput>hg update</userinput>
-2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-</screen>
--- a/en/examples/results/tour.outgoing.net.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg outgoing http://hg.serpentine.com/tutorial/hello</userinput>
-comparing with http://hg.serpentine.com/tutorial/hello
-searching for changes
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Added an extra line of output
-
-</screen>
--- a/en/examples/results/tour.outgoing.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd my-hello</userinput>
-<prompt>$</prompt> <userinput>hg outgoing ../hello-push</userinput>
-comparing with ../hello-push
-searching for changes
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Added an extra line of output
-
-</screen>
--- a/en/examples/results/tour.parents.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg parents</userinput>
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Added an extra line of output
-
-</screen>
--- a/en/examples/results/tour.pull.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg tip</userinput>
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Trim comments.
-
-<prompt>$</prompt> <userinput>hg pull ../my-hello</userinput>
-pulling from ../my-hello
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files
-(run 'hg update' to get a working copy)
-<prompt>$</prompt> <userinput>hg tip</userinput>
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-summary:     Added an extra line of output
-
-</screen>
--- a/en/examples/results/tour.push.net.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg push http://hg.serpentine.com/tutorial/hello</userinput>
-pushing to http://hg.serpentine.com/tutorial/hello
-searching for changes
-ssl required
-</screen>
--- a/en/examples/results/tour.push.nothing.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg push ../hello-push</userinput>
-pushing to ../hello-push
-searching for changes
-no changes found
-</screen>
--- a/en/examples/results/tour.push.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg push ../hello-push</userinput>
-pushing to ../hello-push
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files
-</screen>
--- a/en/examples/results/tour.reclone.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<screen><prompt>$</prompt> <userinput>cd ..</userinput>
-<prompt>$</prompt> <userinput>hg clone hello my-hello</userinput>
-updating working directory
-2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>cd my-hello</userinput>
-</screen>
--- a/en/examples/results/tour.sed.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<screen><prompt>$</prompt> <userinput>sed -i '/printf/a\\tprintf("hello again!\\n");' hello.c</userinput>
-</screen>
--- a/en/examples/results/tour.status.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<screen><prompt>$</prompt> <userinput>ls</userinput>
-Makefile  hello.c
-<prompt>$</prompt> <userinput>hg status</userinput>
-M hello.c
-</screen>
--- a/en/examples/results/tour.tip.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg tip -vp</userinput>
-changeset:   
-tag:         tip
-user:        Bryan O'Sullivan &lt;bos@serpentine.com&gt;
-
-files:       hello.c
-description:
-Added an extra line of output
-
-
-diff -r  -r  hello.c
-
-
-@@ -8,5 +8,6 @@
- int main(int argc, char **argv)
- {
- 	printf("hello, world!\");
-+	printf("hello again!\n");
- 	return 0;
- }
-
-</screen>
--- a/en/examples/results/tour.update.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<screen><prompt>$</prompt> <userinput>grep printf hello.c</userinput>
-	printf("hello, world!\");
-<prompt>$</prompt> <userinput>hg update tip</userinput>
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-<prompt>$</prompt> <userinput>grep printf hello.c</userinput>
-	printf("hello, world!\");
-	printf("hello again!\n");
-</screen>
--- a/en/examples/results/tour.version.out	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<screen><prompt>$</prompt> <userinput>hg version</userinput>
-Mercurial Distributed SCM (version )
-
-Copyright (C) 2005-2008 Matt Mackall &lt;mpm@selenic.com&gt; and others
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-</screen>
--- a/en/examples/run-example	Fri Mar 20 17:17:55 2009 +0800
+++ b/en/examples/run-example	Mon Mar 30 16:23:33 2009 +0800
@@ -134,7 +134,7 @@
         self.rename_output(self.name)
         norm = self.name.replace(os.sep, '-')
         example.entities[
-            '<!ENTITY %s SYSTEM "results/%s.out">' % (norm, norm)] = 1
+            '<!ENTITY %s SYSTEM "results/%s.lxo">' % (norm, norm)] = 1
 
 
 class shell_example(example):
@@ -316,7 +316,7 @@
                                 norm = os.path.normpath(ofp_basename)
                                 example.entities[
                                     '<!ENTITY interaction.%s '
-                                    'SYSTEM "results/%s.out">'
+                                    'SYSTEM "results/%s.lxo">'
                                     % (norm, norm)] = 1
                                 read_hint = ofp_basename + ' '
                                 ofp = wopen(result_name(ofp_basename + '.tmp'))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/feature-branches.dot	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,8 @@
+digraph feature_branches {
+	master -> crypto;
+	master -> filesystems;
+	master -> ipc;
+	master -> memory;
+	master -> network;
+	master -> security;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/filelog.svg	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,373 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docname="filelog.svg"
+   sodipodi:docbase="/home/arun/hgbook/en"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path3128"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180) translate(10,0)" />
+    </marker>
+    <linearGradient
+       id="linearGradient2887">
+      <stop
+         style="stop-color:#91cfcf;stop-opacity:1;"
+         offset="0"
+         id="stop2889" />
+      <stop
+         style="stop-color:aqua;stop-opacity:0;"
+         offset="1"
+         id="stop2891" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2795">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1;"
+         offset="0"
+         id="stop2797" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:0;"
+         offset="1"
+         id="stop2799" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2795"
+       id="linearGradient3170"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(121.2183,94.95434)"
+       x1="81.322357"
+       y1="404.34424"
+       x2="201.52036"
+       y2="373.03967" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2887"
+       id="linearGradient3172"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,12)"
+       x1="62.634491"
+       y1="503.3392"
+       x2="248.49242"
+       y2="462.94327" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2795"
+       id="linearGradient3174"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.001035,0,0,0.653159,236.7075,153.0415)"
+       x1="81.322357"
+       y1="404.34424"
+       x2="201.52036"
+       y2="373.03967" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2887"
+       id="linearGradient3176"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,12)"
+       x1="62.634491"
+       y1="503.3392"
+       x2="248.49242"
+       y2="462.94327" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2795"
+       id="linearGradient3208"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.001035,0,0,0.653159,236.7075,153.0415)"
+       x1="81.322357"
+       y1="404.34424"
+       x2="201.52036"
+       y2="373.03967" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2887"
+       id="linearGradient3210"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,12)"
+       x1="62.634491"
+       y1="503.3392"
+       x2="248.49242"
+       y2="462.94327" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2795"
+       id="linearGradient3212"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(121.2183,94.95434)"
+       x1="81.322357"
+       y1="404.34424"
+       x2="201.52036"
+       y2="373.03967" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2887"
+       id="linearGradient3214"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,12)"
+       x1="62.634491"
+       y1="503.3392"
+       x2="248.49242"
+       y2="462.94327" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2795"
+       id="linearGradient3256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2343775,0,0,0.9981848,103.25588,95.681888)"
+       x1="74.301666"
+       y1="431.67441"
+       x2="260.05884"
+       y2="369.95322" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2887"
+       id="linearGradient3258"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.228929,0,0,0.9972824,-62.037003,13.312997)"
+       x1="62.634491"
+       y1="503.3392"
+       x2="248.49242"
+       y2="462.94327" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2795"
+       id="linearGradient3260"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2300738,0,0,0.6517275,219.97511,153.61527)"
+       x1="74.387527"
+       y1="431.80576"
+       x2="259.97339"
+       y2="369.82224" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2887"
+       id="linearGradient3262"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2289272,0,0,0.9972824,-62.036756,13.312985)"
+       x1="62.634491"
+       y1="503.3392"
+       x2="248.49242"
+       y2="462.94327" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="455.8122"
+     inkscape:cy="520"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1680"
+     inkscape:window-height="970"
+     inkscape:window-x="0"
+     inkscape:window-y="54" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="opacity:1;fill:#abadf8;fill-opacity:1;stroke:#595959;stroke-width:0.93760371;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3180"
+       width="273.81375"
+       height="199.06245"
+       x="369.1796"
+       y="351.79019" />
+    <rect
+       style="opacity:1;fill:#a2f69c;fill-opacity:1;stroke:#595959;stroke-width:0.93760341;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3178"
+       width="273.81339"
+       height="199.06233"
+       x="72.699799"
+       y="351.78983" />
+    <g
+       id="g3144"
+       transform="translate(80.467048,0.71578)">
+      <g
+         id="g2940">
+        <rect
+           style="fill:url(#linearGradient3260);fill-opacity:1;stroke:#000000;stroke-width:0.89536202;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect2914"
+           width="227.38896"
+           height="39.500999"
+           x="311.92496"
+           y="395.08627" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="323.72824"
+           y="416.7626"
+           id="text2918"><tspan
+             sodipodi:role="line"
+             id="tspan2920"
+             x="323.72824"
+             y="416.7626"
+             style="font-family:Courier">.hg/store/data/README.i</tspan></text>
+      </g>
+      <g
+         transform="translate(3.79093e-5,-80.1853)"
+         id="g2945">
+        <g
+           id="g2955">
+          <rect
+             y="475.4968"
+             x="15.550935"
+             height="39.500999"
+             width="227.17694"
+             id="rect2947"
+             style="fill:url(#linearGradient3262);fill-opacity:1;stroke:#000000;stroke-width:1.10706258;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+          <text
+             id="text2949"
+             y="498.35123"
+             x="31.230644"
+             style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+             xml:space="preserve"><tspan
+               style="font-family:Courier"
+               y="498.35123"
+               x="31.230644"
+               id="tspan2951"
+               sodipodi:role="line">README</tspan></text>
+        </g>
+      </g>
+      <path
+         inkscape:connector-type="polyline"
+         id="path2960"
+         d="M 242.94685,414.91115 C 242.94685,414.91115 293.61127,415.26754 310.16269,415.38633"
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.02046943px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+         sodipodi:nodetypes="cz" />
+    </g>
+    <g
+       id="g3156"
+       transform="translate(80.467048,0.71578)">
+      <g
+         transform="translate(116,0)"
+         id="g2831">
+        <rect
+           style="fill:url(#linearGradient3256);fill-opacity:1;stroke:#000000;stroke-width:1.11001658;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect1906"
+           width="228.18446"
+           height="60.499123"
+           x="195.52719"
+           y="465.51859" />
+        <g
+           id="g2803"
+           transform="translate(-0.893671,1.833581)">
+          <text
+             id="text1884"
+             y="483.92801"
+             x="208.95944"
+             style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+             xml:space="preserve"><tspan
+               style="font-family:Courier"
+               y="483.92801"
+               x="208.95944"
+               id="tspan1886"
+               sodipodi:role="line">.hg/store/data/src/hello.c.d</tspan></text>
+          <text
+             id="text1888"
+             y="507.79309"
+             x="208.95944"
+             style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+             xml:space="preserve"><tspan
+               style="font-family:Courier"
+               y="507.79309"
+               x="208.95944"
+               id="tspan1890"
+               sodipodi:role="line">.hg/store/data/src/hello.c.i</tspan></text>
+        </g>
+      </g>
+      <g
+         id="g2907">
+        <rect
+           style="fill:url(#linearGradient3258);fill-opacity:1;stroke:#000000;stroke-width:1.10706329;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect2843"
+           width="227.17728"
+           height="39.500999"
+           x="15.550805"
+           y="475.4968" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="31.230644"
+           y="498.35123"
+           id="text2847"><tspan
+             sodipodi:role="line"
+             id="tspan2849"
+             x="31.230644"
+             y="498.35123"
+             style="font-family:Courier">src/hello.c</tspan></text>
+      </g>
+      <path
+         inkscape:connection-end="#g2831"
+         inkscape:connection-start="#g2907"
+         inkscape:connector-type="polyline"
+         id="path2962"
+         d="M 242.4315,495.88043 C 242.4315,495.88043 292.8861,495.99942 310.04102,496.03909"
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+         sodipodi:nodetypes="cs" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="98.496666"
+       y="373.96353"
+       id="text3216"><tspan
+         sodipodi:role="line"
+         id="tspan3218"
+         x="98.496666"
+         y="373.96353">Working directory</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="391.39197"
+       y="373.96353"
+       id="text3228"><tspan
+         sodipodi:role="line"
+         id="tspan3230"
+         x="391.39197"
+         y="373.96353">Repository</tspan></text>
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/metadata.svg	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,328 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   sodipodi:docname="metadata.svg"
+   sodipodi:docbase="/home/bos/hg/hgbook/en">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path2944"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180) translate(10,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="232.14286"
+     inkscape:cy="490.68696"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="906"
+     inkscape:window-height="620"
+     inkscape:window-x="181"
+     inkscape:window-y="58" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a7a7a7;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+       d="M 326.94646,467.18359 L 326.94646,510.98123"
+       id="path1910"
+       inkscape:connector-type="polyline"
+       inkscape:connection-end="#rect2962"
+       inkscape:connection-start="#rect2764" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a7a7a7;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+       d="M 326.94646,531.98123 L 326.94646,591.77887"
+       id="path1912"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#rect2962"
+       inkscape:connection-end="#rect3000" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a7a7a7;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+       d="M 316.1622,531.98123 L 192.30212,652.57648"
+       id="path1916"
+       inkscape:connector-type="polyline"
+       inkscape:connection-end="#rect3038"
+       inkscape:connection-start="#rect2962" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#484848;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4.5, 1.5;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 254.23217,467.18359 L 254.23216,510.98123"
+       id="path3088"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#rect1872"
+       inkscape:connection-end="#rect2960" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#484848;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4.5, 1.5;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 254.23215,531.98123 L 254.23215,591.77887"
+       id="path3090"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#rect2960"
+       inkscape:connection-end="#rect2998" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#484848;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4.5, 1.5;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 248.84002,531.98123 L 186.90999,652.57648"
+       id="path3092"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#rect2960"
+       inkscape:connection-end="#rect3038" />
+    <rect
+       style="fill:#7b7df5;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect1872"
+       width="51.42857"
+       height="20"
+       x="228.51788"
+       y="446.68359" />
+    <rect
+       style="fill:#cacbfb;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2764"
+       width="51.42857"
+       height="20"
+       x="301.23218"
+       y="446.68359" />
+    <rect
+       style="fill:#cacbfb;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2766"
+       width="51.42857"
+       height="20"
+       x="155.80359"
+       y="446.68359" />
+    <rect
+       style="fill:#cacbfb;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2768"
+       width="51.42857"
+       height="20"
+       x="83.089294"
+       y="446.68359" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 135.01786,456.68359 L 155.30359,456.68359"
+       id="path2770"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#rect2768"
+       inkscape:connection-end="#rect2766" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 207.73216,456.68359 L 228.01788,456.68359"
+       id="path2772"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#rect2766"
+       inkscape:connection-end="#rect1872" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 280.44645,456.68359 L 300.73218,456.68359"
+       id="path2774"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#rect1872"
+       inkscape:connection-end="#rect2764" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 62.303571,456.68359 L 82.589294,456.68359"
+       id="path2778"
+       inkscape:connector-type="polyline"
+       inkscape:connection-end="#rect2768" />
+    <rect
+       style="fill:#84f57b;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2960"
+       width="51.42857"
+       height="20"
+       x="228.51787"
+       y="511.48123" />
+    <rect
+       style="fill:#cefbca;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2962"
+       width="51.42857"
+       height="20"
+       x="301.23218"
+       y="511.48123" />
+    <rect
+       style="fill:#cefbca;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2964"
+       width="51.42857"
+       height="20"
+       x="155.80357"
+       y="511.48123" />
+    <rect
+       style="fill:#cefbca;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2966"
+       width="51.42857"
+       height="20"
+       x="83.089287"
+       y="511.48123" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 135.01786,521.48121 L 155.30359,521.48121"
+       id="path2968"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 207.73216,521.48121 L 228.01788,521.48121"
+       id="path2970"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 280.44645,521.48121 L 300.73218,521.48121"
+       id="path2972"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 62.30358,521.48121 L 82.5893,521.48121"
+       id="path2974"
+       inkscape:connector-type="polyline" />
+    <rect
+       style="fill:#f57b8f;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2998"
+       width="51.42857"
+       height="20"
+       x="228.51787"
+       y="592.27887" />
+    <rect
+       style="fill:#fbcad2;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3000"
+       width="51.42857"
+       height="20"
+       x="301.23218"
+       y="592.27887" />
+    <rect
+       style="fill:#fbcad2;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3002"
+       width="51.42857"
+       height="20"
+       x="155.80357"
+       y="592.27887" />
+    <rect
+       style="fill:#fbcad2;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3004"
+       width="51.42857"
+       height="20"
+       x="83.089287"
+       y="592.27887" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 135.01786,602.27884 L 155.30359,602.27884"
+       id="path3006"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 207.73216,602.27884 L 228.01788,602.27884"
+       id="path3008"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 280.44645,602.27884 L 300.73218,602.27884"
+       id="path3010"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 62.30358,602.27884 L 82.5893,602.27884"
+       id="path3012"
+       inkscape:connector-type="polyline" />
+    <rect
+       style="fill:#ffced6;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3034"
+       width="51.42857"
+       height="20"
+       x="228.51787"
+       y="653.07648" />
+    <rect
+       style="fill:#f57b8f;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3038"
+       width="51.42857"
+       height="20"
+       x="155.80357"
+       y="653.07648" />
+    <rect
+       style="fill:#fbcad2;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3040"
+       width="51.42857"
+       height="20"
+       x="83.089287"
+       y="653.07648" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 135.01786,663.07646 L 155.30359,663.07646"
+       id="path3042"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 207.73216,663.07646 L 228.01788,663.07646"
+       id="path3044"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 62.30358,663.07646 L 82.5893,663.07646"
+       id="path3048"
+       inkscape:connector-type="polyline" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="82.072548"
+       y="432.64789"
+       id="text3094"><tspan
+         sodipodi:role="line"
+         id="tspan3096"
+         x="82.072548"
+         y="432.64789">Changelog</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="82.306923"
+       y="498.97327"
+       id="text3098"><tspan
+         sodipodi:role="line"
+         id="tspan3100"
+         x="82.306923"
+         y="498.97327">Manifest</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="82.14286"
+       y="580.08569"
+       id="text3102"><tspan
+         sodipodi:role="line"
+         id="tspan3104"
+         x="82.14286"
+         y="580.08569">Filelogs</tspan></text>
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/mq-stack.svg	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.43"
+   sodipodi:docname="mq-stack.svg"
+   sodipodi:docbase="/home/bos/hg/hgbook/en">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4142136"
+     inkscape:cx="299.33323"
+     inkscape:cy="815.646"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1014"
+     inkscape:window-height="689"
+     inkscape:window-x="0"
+     inkscape:window-y="25" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#3c3c3c;stroke-width:1.05063355px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="rect1307"
+       width="202.93683"
+       height="24.243662"
+       x="230.01944"
+       y="221.70146" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="237.89606"
+       y="237.13383"
+       id="text1309"><tspan
+         sodipodi:role="line"
+         id="tspan1311"
+         x="237.89606"
+         y="237.13383">prevent-compiler-reorder.patch</tspan></text>
+    <rect
+       style="fill:#7979ff;fill-opacity:0.875;fill-rule:evenodd;stroke:#3c3c3c;stroke-width:1.05063355px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="rect1320"
+       width="202.93683"
+       height="24.243662"
+       x="230.01936"
+       y="251.34325" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="237.89598"
+       y="266.77563"
+       id="text1322"><tspan
+         sodipodi:role="line"
+         id="tspan1324"
+         x="237.89598"
+         y="266.77563">namespace-cleanup.patch</tspan></text>
+    <rect
+       style="fill:#7979ff;fill-opacity:0.875;fill-rule:evenodd;stroke:#3c3c3c;stroke-width:1.05063355px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="rect2217"
+       width="202.93683"
+       height="24.243662"
+       x="230.01936"
+       y="280.98505" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="237.89598"
+       y="296.41742"
+       id="text2219"><tspan
+         sodipodi:role="line"
+         id="tspan2221"
+         x="237.89598"
+         y="296.41742">powerpc-port-fixes.patch</tspan></text>
+    <rect
+       style="fill:#7979ff;fill-opacity:0.875;fill-rule:evenodd;stroke:#3c3c3c;stroke-width:1.05063355px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="rect3114"
+       width="202.93683"
+       height="24.243662"
+       x="230.01936"
+       y="310.6268" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="237.89598"
+       y="326.05917"
+       id="text3116"><tspan
+         sodipodi:role="line"
+         id="tspan3118"
+         x="237.89598"
+         y="326.05917">report-devinfo-correctly.patch</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="200.01021"
+       y="191.68094"
+       id="text3170"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3172"
+         x="200.01021"
+         y="191.68094"
+         style="font-size:48px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">{</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:15.25329685px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="255.26627"
+       y="248.79449"
+       id="text3190"
+       sodipodi:linespacing="125%"
+       transform="scale(0.786716,1.271107)"><tspan
+         sodipodi:role="line"
+         id="tspan3192"
+         x="255.26627"
+         y="248.79449"
+         style="font-size:61.01318741px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">{</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="195.86807"
+       y="173.17117"
+       id="text4085"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4087"
+         x="195.86807"
+         y="173.17117"
+         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;font-family:Bitstream Vera Sans">present in series,</tspan><tspan
+         sodipodi:role="line"
+         x="195.86807"
+         y="188.17117"
+         id="tspan4089"
+         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;font-family:Bitstream Vera Sans">but not applied</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="195.0712"
+       y="288.91745"
+       id="text4091"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4093"
+         x="195.0712"
+         y="288.91745"
+         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;font-family:Bitstream Vera Sans">patches applied,</tspan><tspan
+         sodipodi:role="line"
+         x="195.0712"
+         y="303.91745"
+         id="tspan4111"
+         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;font-family:Bitstream Vera Sans">changesets present</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="195.0712"
+       y="229.28813"
+       id="text4095"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4097"
+         x="195.0712"
+         y="229.28813"
+         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;font-family:Bitstream Vera Sans">topmost</tspan><tspan
+         sodipodi:role="line"
+         x="195.0712"
+         y="244.28813"
+         id="tspan4109"
+         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;font-family:Bitstream Vera Sans">applied patch</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;opacity:1;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="450.4975"
+       y="238.29692"
+       id="text4137"><tspan
+         sodipodi:role="line"
+         id="tspan4139"
+         x="450.4975"
+         y="238.29692">201ad3209902</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;opacity:1;fill:#989898;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="450.05804"
+       y="267.93872"
+       id="text4141"><tspan
+         sodipodi:role="line"
+         id="tspan4143"
+         x="450.05804"
+         y="267.93872">126b84e593ae</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;opacity:1;fill:#989898;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="450.6557"
+       y="297.58051"
+       id="text4145"><tspan
+         sodipodi:role="line"
+         id="tspan4147"
+         x="450.6557"
+         y="297.58051">a655daf15409</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;opacity:1;fill:#989898;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="450.71429"
+       y="327.22226"
+       id="text4149"><tspan
+         sodipodi:role="line"
+         id="tspan4151"
+         x="450.71429"
+         y="327.22226">e50d59aaea3a</tspan></text>
+    <rect
+       style="fill:#d7d7ff;fill-opacity:0.875;fill-rule:evenodd;stroke:#a6a6a6;stroke-width:1.05063355px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="rect3106"
+       width="202.93683"
+       height="24.243662"
+       x="230.01936"
+       y="150.41792" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="237.89598"
+       y="165.8503"
+       id="text3108"><tspan
+         sodipodi:role="line"
+         id="tspan3110"
+         x="237.89598"
+         y="165.8503">forbid-illegal-params.patch</tspan></text>
+    <rect
+       style="fill:#d7d7ff;fill-opacity:0.875;fill-rule:evenodd;stroke:#a6a6a6;stroke-width:1.05063355px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="rect2241"
+       width="202.93683"
+       height="24.243662"
+       x="230.16466"
+       y="180.05968" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="238.04128"
+       y="195.49205"
+       id="text2243"><tspan
+         sodipodi:role="line"
+         id="tspan2245"
+         x="238.04128"
+         y="195.49205">fix-memory-leak.patch</tspan></text>
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/revlog.svg	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,1155 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   sodipodi:docbase="/home/bos/hg/hgbook/en"
+   sodipodi:docname="revlog.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path4852"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180) translate(10,0)" />
+    </marker>
+    <linearGradient
+       id="linearGradient3092">
+      <stop
+         style="stop-color:#44436f;stop-opacity:1;"
+         offset="0"
+         id="stop3094" />
+      <stop
+         style="stop-color:#abade5;stop-opacity:1;"
+         offset="1"
+         id="stop3096" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3092"
+       id="linearGradient3118"
+       gradientUnits="userSpaceOnUse"
+       x1="176.16635"
+       y1="405.21934"
+       x2="417.11935"
+       y2="405.21934" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3092"
+       id="linearGradient3120"
+       gradientUnits="userSpaceOnUse"
+       x1="176.16635"
+       y1="405.21934"
+       x2="417.11935"
+       y2="405.21934" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3092"
+       id="linearGradient3129"
+       gradientUnits="userSpaceOnUse"
+       x1="176.16635"
+       y1="405.21934"
+       x2="417.11935"
+       y2="405.21934"
+       gradientTransform="translate(-0.928574,-1.428574)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3092"
+       id="linearGradient3133"
+       gradientUnits="userSpaceOnUse"
+       x1="176.16635"
+       y1="405.21934"
+       x2="417.11935"
+       y2="405.21934"
+       gradientTransform="translate(-0.928574,-1.428574)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3092"
+       id="linearGradient3708"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.423343,0,0,0.423343,138.874,-67.01732)"
+       x1="175.23776"
+       y1="509.98154"
+       x2="416.29077"
+       y2="297.49997" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3092"
+       id="linearGradient5164"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.423343,0,0,0.423343,198.249,247.4358)"
+       x1="175.23776"
+       y1="509.98154"
+       x2="416.29077"
+       y2="297.49997" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3092"
+       id="linearGradient5584"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.423343,0,0,0.423343,143.9081,371.2915)"
+       x1="175.23776"
+       y1="509.98154"
+       x2="416.29077"
+       y2="297.49997" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3092"
+       id="linearGradient5784"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.423343,0,0,0.423343,76.37397,152.137)"
+       x1="175.23776"
+       y1="509.98154"
+       x2="416.29077"
+       y2="297.49997" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3092"
+       id="linearGradient5786"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.423343,0,0,0.423343,198.249,152.137)"
+       x1="175.23776"
+       y1="509.98154"
+       x2="416.29077"
+       y2="297.49997" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3092"
+       id="linearGradient5895"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.423343,0,0,0.423343,198.0215,261.7142)"
+       x1="175.23776"
+       y1="509.98154"
+       x2="416.29077"
+       y2="297.49997" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3092"
+       id="linearGradient5958"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.423343,0,0,0.423343,137.1978,42.55987)"
+       x1="175.23776"
+       y1="509.98154"
+       x2="416.29077"
+       y2="297.49997" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.64"
+     inkscape:cx="566.02368"
+     inkscape:cy="688.16826"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="906"
+     inkscape:window-height="620"
+     inkscape:window-x="29"
+     inkscape:window-y="79"
+     inkscape:connector-spacing="11" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       y="168.74846"
+       x="211.58516"
+       height="89.506805"
+       width="101.60232"
+       id="rect3068"
+       style="fill:url(#linearGradient5958);fill-opacity:1;stroke:black;stroke-width:0.48811448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <g
+       id="g3215"
+       transform="matrix(0.423343,0,0,0.423343,137.1977,42.55985)">
+      <rect
+         y="447.71451"
+         x="299.67859"
+         height="48.571426"
+         width="103.14286"
+         id="rect2899"
+         style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text2903"
+         y="464.8139"
+         x="308.89639"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           y="464.8139"
+           x="308.89639"
+           sodipodi:role="line"
+           id="tspan2905">Second parent</tspan></text>
+      <text
+         id="text2907"
+         y="485.50256"
+         x="308.20175"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="font-family:Courier"
+           y="485.50256"
+           x="308.20175"
+           id="tspan2909"
+           sodipodi:role="line">32bf9a5f22c0</tspan></text>
+    </g>
+    <g
+       id="g3250"
+       transform="matrix(0.423343,0,0,0.423343,137.1977,42.55986)">
+      <rect
+         y="311.28598"
+         x="188.6071"
+         height="48.571426"
+         width="103.14286"
+         id="rect2936"
+         style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text2940"
+         y="328.38538"
+         x="197.82495"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           y="328.38538"
+           x="197.82495"
+           sodipodi:role="line"
+           id="tspan2942">Revision hash</tspan></text>
+      <text
+         id="text2944"
+         y="349.07404"
+         x="197.13031"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="font-family:Courier"
+           y="349.07404"
+           x="197.13031"
+           id="tspan2946"
+           sodipodi:role="line">34b8b7a15ea1</tspan></text>
+    </g>
+    <g
+       id="g3243"
+       transform="matrix(0.423343,0,0,0.423343,137.6664,43.91853)">
+      <rect
+         y="363.07654"
+         x="187.5"
+         height="75"
+         width="213.85715"
+         id="rect2950"
+         style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text2958"
+         y="400.86459"
+         x="196.02321"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="fill:black;fill-opacity:1;font-family:Courier"
+           y="400.86459"
+           x="196.02321"
+           id="tspan2960"
+           sodipodi:role="line">...</tspan></text>
+      <text
+         id="text2954"
+         y="380.17593"
+         x="196.71785"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           y="380.17593"
+           x="196.71785"
+           sodipodi:role="line"
+           id="tspan2956"
+           style="fill:black;fill-opacity:1">Revision data (delta or snapshot)</tspan></text>
+    </g>
+    <g
+       id="g5529"
+       transform="translate(-6.710312,-8.165836e-6)">
+      <rect
+         style="fill:url(#linearGradient5584);fill-opacity:1;stroke:black;stroke-width:0.48811448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect3509"
+         width="101.60232"
+         height="89.506805"
+         x="218.29547"
+         y="497.4801" />
+      <g
+         transform="matrix(0.423343,0,0,0.423343,143.908,371.2915)"
+         id="g3513">
+        <g
+           id="g3515">
+          <rect
+             y="447.72418"
+             x="188.6071"
+             height="48.571426"
+             width="103.14286"
+             id="rect3517"
+             style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+          <text
+             id="text3519"
+             y="464.82358"
+             x="197.82495"
+             style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+             xml:space="preserve"><tspan
+               y="464.82358"
+               x="197.82495"
+               sodipodi:role="line"
+               id="tspan3521">First parent</tspan></text>
+          <text
+             id="text3523"
+             y="485.51224"
+             x="197.13031"
+             style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+             xml:space="preserve"><tspan
+               style="font-family:Courier"
+               y="485.51224"
+               x="197.13031"
+               id="tspan3525"
+               sodipodi:role="line">000000000000</tspan></text>
+        </g>
+        <g
+           id="g3527">
+          <rect
+             y="447.71451"
+             x="299.67859"
+             height="48.571426"
+             width="103.14286"
+             id="rect3529"
+             style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+          <text
+             id="text3531"
+             y="464.8139"
+             x="308.89639"
+             style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+             xml:space="preserve"><tspan
+               y="464.8139"
+               x="308.89639"
+               sodipodi:role="line"
+               id="tspan3533">Second parent</tspan></text>
+          <text
+             id="text3535"
+             y="485.50256"
+             x="308.20175"
+             style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+             xml:space="preserve"><tspan
+               style="font-family:Courier"
+               y="485.50256"
+               x="308.20175"
+               id="tspan3537"
+               sodipodi:role="line">000000000000</tspan></text>
+        </g>
+      </g>
+      <g
+         transform="matrix(0.423343,0,0,0.423343,143.908,371.2915)"
+         id="g3539">
+        <rect
+           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3541"
+           width="103.14286"
+           height="48.571426"
+           x="188.6071"
+           y="311.28598" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="197.82495"
+           y="328.38538"
+           id="text3543"><tspan
+             id="tspan3545"
+             sodipodi:role="line"
+             x="197.82495"
+             y="328.38538">Revision hash</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="197.13031"
+           y="349.07404"
+           id="text3547"><tspan
+             sodipodi:role="line"
+             id="tspan3549"
+             x="197.13031"
+             y="349.07404"
+             style="font-family:Courier">ff9dc8bc2a8b</tspan></text>
+      </g>
+      <g
+         transform="matrix(0.423343,0,0,0.423343,144.3767,372.6502)"
+         id="g3551">
+        <rect
+           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3553"
+           width="213.85715"
+           height="75"
+           x="187.5"
+           y="363.07654" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="196.02321"
+           y="400.86459"
+           id="text3555"><tspan
+             sodipodi:role="line"
+             id="tspan3557"
+             x="196.02321"
+             y="400.86459"
+             style="fill:black;fill-opacity:1;font-family:Courier">...</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="196.71785"
+           y="380.17593"
+           id="text3559"><tspan
+             style="fill:black;fill-opacity:1"
+             id="tspan3561"
+             sodipodi:role="line"
+             x="196.71785"
+             y="380.17593">Revision data (delta or snapshot)</tspan></text>
+      </g>
+    </g>
+    <g
+       id="g4868"
+       transform="translate(-1.676208,-2.342463e-5)">
+      <rect
+         style="fill:url(#linearGradient3708);fill-opacity:1;stroke:black;stroke-width:0.48811448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect3567"
+         width="101.60232"
+         height="89.506805"
+         x="213.26137"
+         y="59.171272" />
+      <g
+         transform="matrix(0.423343,0,0,0.423343,138.8739,-67.01734)"
+         id="g3573">
+        <rect
+           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3575"
+           width="103.14286"
+           height="48.571426"
+           x="188.6071"
+           y="447.72418" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="197.82495"
+           y="464.82358"
+           id="text3577"><tspan
+             id="tspan3579"
+             sodipodi:role="line"
+             x="197.82495"
+             y="464.82358">First parent</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="197.13031"
+           y="485.51224"
+           id="text3581"><tspan
+             sodipodi:role="line"
+             id="tspan3583"
+             x="197.13031"
+             y="485.51224"
+             style="font-family:Courier">34b8b7a15ea1</tspan></text>
+      </g>
+      <g
+         transform="matrix(0.423343,0,0,0.423343,138.8739,-67.01734)"
+         id="g3585">
+        <rect
+           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3587"
+           width="103.14286"
+           height="48.571426"
+           x="299.67859"
+           y="447.71451" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="308.89639"
+           y="464.8139"
+           id="text3589"><tspan
+             id="tspan3591"
+             sodipodi:role="line"
+             x="308.89639"
+             y="464.8139">Second parent</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="308.20175"
+           y="485.50256"
+           id="text3593"><tspan
+             sodipodi:role="line"
+             id="tspan3595"
+             x="308.20175"
+             y="485.50256"
+             style="font-family:Courier">000000000000</tspan></text>
+      </g>
+      <g
+         transform="matrix(0.423343,0,0,0.423343,138.8739,-67.01733)"
+         id="g3597">
+        <rect
+           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3599"
+           width="103.14286"
+           height="48.571426"
+           x="188.6071"
+           y="311.28598" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="197.82495"
+           y="328.38538"
+           id="text3601"><tspan
+             id="tspan3603"
+             sodipodi:role="line"
+             x="197.82495"
+             y="328.38538">Revision hash</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="197.13031"
+           y="349.07404"
+           id="text3605"><tspan
+             sodipodi:role="line"
+             id="tspan3607"
+             x="197.13031"
+             y="349.07404"
+             style="font-family:Courier">1b67dc96f27a</tspan></text>
+      </g>
+      <g
+         transform="matrix(0.423343,0,0,0.423343,139.3426,-65.65866)"
+         id="g3609">
+        <rect
+           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3611"
+           width="213.85715"
+           height="75"
+           x="187.5"
+           y="363.07654" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="196.02321"
+           y="400.86459"
+           id="text3613"><tspan
+             sodipodi:role="line"
+             id="tspan3615"
+             x="196.02321"
+             y="400.86459"
+             style="fill:black;fill-opacity:1;font-family:Courier">...</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="196.71785"
+           y="380.17593"
+           id="text3617"><tspan
+             style="fill:black;fill-opacity:1"
+             id="tspan3619"
+             sodipodi:role="line"
+             x="196.71785"
+             y="380.17593">Revision data (delta or snapshot)</tspan></text>
+      </g>
+    </g>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)"
+       d="M 240.78255,143.08593 L 241.42595,171.75349"
+       id="path3801"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#g3573"
+       inkscape:connection-end="#g3250" />
+    <g
+       id="g5677">
+      <rect
+         style="fill:url(#linearGradient5784);fill-opacity:1;stroke:black;stroke-width:0.48811448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect3393"
+         width="101.60232"
+         height="89.506805"
+         x="150.76137"
+         y="278.32565" />
+      <g
+         transform="matrix(0.423343,0,0,0.423343,76.37397,152.137)"
+         id="g3399">
+        <rect
+           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3401"
+           width="103.14286"
+           height="48.571426"
+           x="188.6071"
+           y="447.72418" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="197.82495"
+           y="464.82358"
+           id="text3403"><tspan
+             id="tspan3405"
+             sodipodi:role="line"
+             x="197.82495"
+             y="464.82358">First parent</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="197.13031"
+           y="485.51224"
+           id="text3407"><tspan
+             sodipodi:role="line"
+             id="tspan3409"
+             x="197.13031"
+             y="485.51224"
+             style="font-family:Courier">ff9dc8bc2a8b</tspan></text>
+      </g>
+      <g
+         transform="matrix(0.423343,0,0,0.423343,76.37397,152.137)"
+         id="g3411">
+        <rect
+           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3413"
+           width="103.14286"
+           height="48.571426"
+           x="299.67859"
+           y="447.71451" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="308.89639"
+           y="464.8139"
+           id="text3415"><tspan
+             id="tspan3417"
+             sodipodi:role="line"
+             x="308.89639"
+             y="464.8139">Second parent</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="308.20175"
+           y="485.50256"
+           id="text3419"><tspan
+             sodipodi:role="line"
+             id="tspan3421"
+             x="308.20175"
+             y="485.50256"
+             style="font-family:Courier">000000000000</tspan></text>
+      </g>
+      <g
+         transform="matrix(0.423343,0,0,0.423343,76.37397,152.137)"
+         id="g3423">
+        <rect
+           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3425"
+           width="103.14286"
+           height="48.571426"
+           x="188.6071"
+           y="311.28598" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="197.82495"
+           y="328.38538"
+           id="text3427"><tspan
+             id="tspan3429"
+             sodipodi:role="line"
+             x="197.82495"
+             y="328.38538">Revision hash</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="197.13031"
+           y="349.07404"
+           id="text3431"><tspan
+             sodipodi:role="line"
+             id="tspan3433"
+             x="197.13031"
+             y="349.07404"
+             style="font-family:Courier">5b80c922ebdd</tspan></text>
+      </g>
+      <g
+         transform="matrix(0.423343,0,0,0.423343,76.84265,153.4957)"
+         id="g3435">
+        <rect
+           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3437"
+           width="213.85715"
+           height="75"
+           x="187.5"
+           y="363.07654" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="196.02321"
+           y="400.86459"
+           id="text3439"><tspan
+             sodipodi:role="line"
+             id="tspan3441"
+             x="196.02321"
+             y="400.86459"
+             style="fill:black;fill-opacity:1;font-family:Courier">...</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="196.71785"
+           y="380.17593"
+           id="text3443"><tspan
+             style="fill:black;fill-opacity:1"
+             id="tspan3445"
+             sodipodi:role="line"
+             x="196.71785"
+             y="380.17593">Revision data (delta or snapshot)</tspan></text>
+      </g>
+    </g>
+    <g
+       id="g5646"
+       transform="translate(-0.227432,0)">
+      <rect
+         style="fill:url(#linearGradient5786);fill-opacity:1;stroke:black;stroke-width:0.48811448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect3451"
+         width="101.60232"
+         height="89.506805"
+         x="272.63638"
+         y="278.32565" />
+      <g
+         transform="matrix(0.423343,0,0,0.423343,198.2489,152.137)"
+         id="g3457">
+        <rect
+           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3459"
+           width="103.14286"
+           height="48.571426"
+           x="188.6071"
+           y="447.72418" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="197.82495"
+           y="464.82358"
+           id="text3461"><tspan
+             id="tspan3463"
+             sodipodi:role="line"
+             x="197.82495"
+             y="464.82358">First parent</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="197.13031"
+           y="485.51224"
+           id="text3465"><tspan
+             sodipodi:role="line"
+             id="tspan3467"
+             x="197.13031"
+             y="485.51224"
+             style="font-family:Courier">ecacb6b4c9fd</tspan></text>
+      </g>
+      <g
+         transform="matrix(0.423343,0,0,0.423343,198.2489,152.137)"
+         id="g3469">
+        <rect
+           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3471"
+           width="103.14286"
+           height="48.571426"
+           x="299.67859"
+           y="447.71451" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="308.89639"
+           y="464.8139"
+           id="text3473"><tspan
+             id="tspan3475"
+             sodipodi:role="line"
+             x="308.89639"
+             y="464.8139">Second parent</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="308.20175"
+           y="485.50256"
+           id="text3477"><tspan
+             sodipodi:role="line"
+             id="tspan3479"
+             x="308.20175"
+             y="485.50256"
+             style="font-family:Courier">000000000000</tspan></text>
+      </g>
+      <g
+         transform="matrix(0.423343,0,0,0.423343,198.2489,152.137)"
+         id="g3481">
+        <rect
+           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3483"
+           width="103.14286"
+           height="48.571426"
+           x="188.6071"
+           y="311.28598" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="197.82495"
+           y="328.38538"
+           id="text3485"><tspan
+             id="tspan3487"
+             sodipodi:role="line"
+             x="197.82495"
+             y="328.38538">Revision hash</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="197.13031"
+           y="349.07404"
+           id="text3489"><tspan
+             sodipodi:role="line"
+             id="tspan3491"
+             x="197.13031"
+             y="349.07404"
+             style="font-family:Courier">32bf9a5f22c0</tspan></text>
+      </g>
+      <g
+         transform="matrix(0.423343,0,0,0.423343,198.7176,153.4957)"
+         id="g3493">
+        <rect
+           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3495"
+           width="213.85715"
+           height="75"
+           x="187.5"
+           y="363.07654" />
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="196.02321"
+           y="400.86459"
+           id="text3497"><tspan
+             sodipodi:role="line"
+             id="tspan3499"
+             x="196.02321"
+             y="400.86459"
+             style="fill:black;fill-opacity:1;font-family:Courier">...</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           x="196.71785"
+           y="380.17593"
+           id="text3501"><tspan
+             style="fill:black;fill-opacity:1"
+             id="tspan3503"
+             sodipodi:role="line"
+             x="196.71785"
+             y="380.17593">Revision data (delta or snapshot)</tspan></text>
+      </g>
+    </g>
+    <rect
+       y="387.90286"
+       x="272.40894"
+       height="89.506805"
+       width="101.60232"
+       id="rect5081"
+       style="fill:url(#linearGradient5895);fill-opacity:1;stroke:black;stroke-width:0.48811448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <g
+       id="g5087"
+       transform="matrix(0.423343,0,0,0.423343,198.0214,261.7142)">
+      <rect
+         y="447.72418"
+         x="188.6071"
+         height="48.571426"
+         width="103.14286"
+         id="rect5089"
+         style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text5091"
+         y="464.82358"
+         x="197.82495"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           y="464.82358"
+           x="197.82495"
+           sodipodi:role="line"
+           id="tspan5093">First parent</tspan></text>
+      <text
+         id="text5095"
+         y="485.51224"
+         x="197.13031"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="font-family:Courier"
+           y="485.51224"
+           x="197.13031"
+           id="tspan5097"
+           sodipodi:role="line">ff9dc8bc2a8b</tspan></text>
+    </g>
+    <g
+       id="g5099"
+       transform="matrix(0.423343,0,0,0.423343,198.0214,261.7142)">
+      <rect
+         y="447.71451"
+         x="299.67859"
+         height="48.571426"
+         width="103.14286"
+         id="rect5101"
+         style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text5103"
+         y="464.8139"
+         x="308.89639"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           y="464.8139"
+           x="308.89639"
+           sodipodi:role="line"
+           id="tspan5105">Second parent</tspan></text>
+      <text
+         id="text5107"
+         y="485.50256"
+         x="308.20175"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="font-family:Courier"
+           y="485.50256"
+           x="308.20175"
+           id="tspan5109"
+           sodipodi:role="line">000000000000</tspan></text>
+    </g>
+    <g
+       id="g5111"
+       transform="matrix(0.423343,0,0,0.423343,198.0214,261.7142)">
+      <rect
+         y="311.28598"
+         x="188.6071"
+         height="48.571426"
+         width="103.14286"
+         id="rect5113"
+         style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text5115"
+         y="328.38538"
+         x="197.82495"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           y="328.38538"
+           x="197.82495"
+           sodipodi:role="line"
+           id="tspan5117">Revision hash</tspan></text>
+      <text
+         id="text5119"
+         y="349.07404"
+         x="197.13031"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="font-family:Courier"
+           y="349.07404"
+           x="197.13031"
+           id="tspan5121"
+           sodipodi:role="line">ecacb6b4c9fd</tspan></text>
+    </g>
+    <g
+       id="g5123"
+       transform="matrix(0.423343,0,0,0.423343,198.4901,263.0729)">
+      <rect
+         y="363.07654"
+         x="187.5"
+         height="75"
+         width="213.85715"
+         id="rect5125"
+         style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text5127"
+         y="400.86459"
+         x="196.02321"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="fill:black;fill-opacity:1;font-family:Courier"
+           y="400.86459"
+           x="196.02321"
+           id="tspan5129"
+           sodipodi:role="line">...</tspan></text>
+      <text
+         id="text5131"
+         y="380.17593"
+         x="196.71785"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           y="380.17593"
+           x="196.71785"
+           sodipodi:role="line"
+           id="tspan5133"
+           style="fill:black;fill-opacity:1">Revision data (delta or snapshot)</tspan></text>
+    </g>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
+       d="M 299.69935,362.24027 L 299.69931,393.49494"
+       id="path5203"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#g3457"
+       inkscape:connection-end="#g5111" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 182.35357,362.22647 L 241.2842,503.07224"
+       id="path5271"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#g3399"
+       inkscape:connection-end="#g3539" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
+       d="M 287.63109,471.81747 L 250.9438,503.07223"
+       id="path5285"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#g5087"
+       inkscape:connection-end="#g3539" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+       d="M 290.80419,250.07192 L 297.80065,283.90394"
+       id="path5077"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#g3215"
+       inkscape:connection-end="#g3481" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+       d="M 229.63373,250.07601 L 190.07484,283.90394"
+       id="path5075"
+       inkscape:connector-type="polyline"
+       inkscape:connection-end="#g3423" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="131.5625"
+       y="100.79968"
+       id="text5897"><tspan
+         sodipodi:role="line"
+         id="tspan5899"
+         x="131.5625"
+         y="100.79968"
+         style="text-align:end;text-anchor:end">Head revision</tspan><tspan
+         sodipodi:role="line"
+         x="131.5625"
+         y="115.79968"
+         id="tspan5901"
+         style="text-align:end;text-anchor:end">(no children)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="131.5625"
+       y="207.04968"
+       id="text5903"><tspan
+         sodipodi:role="line"
+         id="tspan5905"
+         x="131.5625"
+         y="207.04968"
+         style="text-align:end;text-anchor:end">Merge revision</tspan><tspan
+         sodipodi:role="line"
+         x="131.5625"
+         y="222.04968"
+         id="tspan5907"
+         style="text-align:end;text-anchor:end">(two parents)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="131.92578"
+       y="451.58093"
+       id="text5909"><tspan
+         sodipodi:role="line"
+         id="tspan5911"
+         x="131.92578"
+         y="451.58093"
+         style="text-align:end;text-anchor:end">Branches</tspan><tspan
+         sodipodi:role="line"
+         x="131.92578"
+         y="466.58093"
+         id="tspan5913"
+         style="text-align:end;text-anchor:end">(two revisions,</tspan><tspan
+         sodipodi:role="line"
+         x="131.92578"
+         y="481.58093"
+         id="tspan5915"
+         style="text-align:end;text-anchor:end">same parent)</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+       d="M 111.71875,433.61218 L 154.7268,368.52294"
+       id="path5917"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+       d="M 134.375,464.86218 L 277.86691,440.37816"
+       id="path5919"
+       inkscape:connector-type="polyline"
+       inkscape:connection-end="#g5123" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="131.5625"
+       y="536.73718"
+       id="text5927"><tspan
+         sodipodi:role="line"
+         id="tspan5929"
+         x="131.5625"
+         y="536.73718">First revision</tspan><tspan
+         sodipodi:role="line"
+         x="131.5625"
+         y="551.73718"
+         id="tspan5931">(both parents null)</tspan></text>
+    <rect
+       style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2830"
+       width="43.664806"
+       height="20.562374"
+       x="217.0432"
+       y="232.10075" />
+    <text
+       xml:space="preserve"
+       style="font-size:5.0801158px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="220.94551"
+       y="239.33966"
+       id="text2832"><tspan
+         id="tspan2836"
+         sodipodi:role="line"
+         x="220.94551"
+         y="239.33966">First parent</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:5.0801158px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="220.65144"
+       y="248.09805"
+       id="text2879"><tspan
+         sodipodi:role="line"
+         id="tspan2881"
+         x="220.65144"
+         y="248.09805"
+         style="font-family:Courier">5b80c922ebdd</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+       d="M 139.84375,107.83093 L 210.15625,107.83093"
+       id="path5965"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+       d="M 137.5,213.29968 L 210.49036,214.09055"
+       id="path5967"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+       d="M 136.34375,544.54968 L 206.65625,544.54968"
+       id="path5969"
+       inkscape:connector-type="polyline"
+       inkscape:transform-center-y="-171.09375"
+       inkscape:transform-center-x="53.90625" />
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/snapshot.svg	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2807"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   sodipodi:docbase="/home/bos/hg/hgbook/en"
+   sodipodi:docname="snapshots.svg">
+  <defs
+     id="defs2809" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="252.04111"
+     inkscape:cy="605.75448"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="906"
+     inkscape:window-height="721"
+     inkscape:window-x="0"
+     inkscape:window-y="25" />
+  <metadata
+     id="metadata2812">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="opacity:1;fill:#d3ceff;fill-opacity:1;stroke:#a7a7a7;stroke-width:1.88795626;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2817"
+       width="118.18347"
+       height="245.32632"
+       x="243.05112"
+       y="315.4133"
+       inkscape:transform-center-x="136.84403"
+       inkscape:transform-center-y="-66.529183" />
+    <rect
+       y="315.04153"
+       x="46.965065"
+       height="97.803009"
+       width="108.92702"
+       id="rect2815"
+       style="fill:#ffced6;fill-opacity:1;stroke:#a7a7a7;stroke-width:1.14441991;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <g
+       id="g3814">
+      <rect
+         y="348.94302"
+         x="59.285713"
+         height="30"
+         width="84.285713"
+         id="rect2819"
+         style="fill:#ff6e86;fill-opacity:1;stroke:#a7a7a7;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         ry="0" />
+      <text
+         id="text2821"
+         y="368.02701"
+         x="72.717636"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           y="368.02701"
+           x="72.717636"
+           id="tspan2823"
+           sodipodi:role="line">Index, rev 7</tspan></text>
+    </g>
+    <text
+       id="text3722"
+       y="301.29074"
+       x="46.187778"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       xml:space="preserve"><tspan
+         y="301.29074"
+         x="46.187778"
+         id="tspan3724"
+         sodipodi:role="line">Revlog index (.i file)</tspan></text>
+    <text
+       id="text3726"
+       y="301.29074"
+       x="241.90207"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       xml:space="preserve"><tspan
+         y="301.29074"
+         x="241.90207"
+         id="tspan3728"
+         sodipodi:role="line">Revlog data (.d file)</tspan></text>
+    <path
+       style="fill:#c695ff;fill-opacity:0.60109288;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 143.57143,348.07647 L 255,368.07646 L 255.71429,544.50504 L 142.85714,379.50504 L 143.57143,348.07647 z "
+       id="path3839"
+       sodipodi:nodetypes="ccccc" />
+    <rect
+       style="fill:#4733ff;fill-opacity:1;stroke:#a7a7a7;stroke-width:2.35124183;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3752"
+       width="92.720184"
+       height="67.005905"
+       x="255.42564"
+       y="368.64264" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="264.45859"
+       y="387.30099"
+       id="text3754"><tspan
+         sodipodi:role="line"
+         id="tspan3756"
+         x="264.45859"
+         y="387.30099">Snapshot, rev 4</tspan></text>
+    <rect
+       style="fill:#7c6eff;fill-opacity:1;stroke:#a7a7a7;stroke-width:1.57776296;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3761"
+       width="93.49366"
+       height="29.922237"
+       x="255.03891"
+       y="442.04395" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="263.2662"
+       y="460.17206"
+       id="text3763"><tspan
+         sodipodi:role="line"
+         id="tspan3765"
+         x="263.2662"
+         y="460.17206">Delta, rev 4 to 5</tspan></text>
+    <rect
+       style="fill:#7c6eff;fill-opacity:1;stroke:#a7a7a7;stroke-width:1.57776296;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3774"
+       width="93.49366"
+       height="29.922237"
+       x="255.03891"
+       y="477.97485" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="263.2662"
+       y="496.10297"
+       id="text3776"><tspan
+         sodipodi:role="line"
+         id="tspan3778"
+         x="263.2662"
+         y="496.10297">Delta, rev 5 to 6</tspan></text>
+    <rect
+       style="fill:#7c6eff;fill-opacity:1;stroke:#a7a7a7;stroke-width:1.57776296;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3782"
+       width="93.49366"
+       height="29.922237"
+       x="255.03891"
+       y="513.90576" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="263.2662"
+       y="532.03387"
+       id="text3784"><tspan
+         sodipodi:role="line"
+         id="tspan3786"
+         x="263.2662"
+         y="532.03387">Delta, rev 6 to 7</tspan></text>
+    <rect
+       style="fill:#7c6eff;fill-opacity:1;stroke:#a7a7a7;stroke-width:1.57776296;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3889"
+       width="93.49366"
+       height="29.922237"
+       x="255.03891"
+       y="332.32489" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="263.2662"
+       y="350.453"
+       id="text3891"><tspan
+         sodipodi:role="line"
+         id="tspan3893"
+         x="263.2662"
+         y="350.453">Delta, rev 2 to 3</tspan></text>
+  </g>
+</svg>
Binary file en/figs/throbber.gif has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/tour-history.svg	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   sodipodi:docname="tour-history.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         id="path2973"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path3066"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180) translate(10,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="232.14286"
+     inkscape:cy="672.75296"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="906"
+     inkscape:window-height="620"
+     inkscape:window-x="5"
+     inkscape:window-y="49" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="opacity:1;fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect1878"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="479.50504" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="493.12619"
+       id="text1872"><tspan
+         sodipodi:role="line"
+         id="tspan1874"
+         x="162.09892"
+         y="493.12619"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan1876">0</tspan>: REV0</tspan></text>
+    <rect
+       style="opacity:1;fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2800"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="432.63004" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="446.25119"
+       id="text2794"><tspan
+         sodipodi:role="line"
+         id="tspan2796"
+         x="162.09892"
+         y="446.25119"
+         style="font-family:Courier"><tspan
+   id="tspan2868"
+   style="font-weight:bold">1</tspan>: REV1</tspan></text>
+    <rect
+       style="opacity:1;fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2810"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="385.75504" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="399.37619"
+       id="text2804"><tspan
+         sodipodi:role="line"
+         id="tspan2806"
+         x="162.09892"
+         y="399.37619"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2866">2</tspan>: REV2</tspan></text>
+    <rect
+       style="opacity:1;fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2820"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="338.88007" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="352.50122"
+       id="text2814"><tspan
+         sodipodi:role="line"
+         id="tspan2816"
+         x="162.09892"
+         y="352.50122"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2864">3</tspan>: REV3</tspan></text>
+    <rect
+       style="opacity:1;fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2830"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="292.00504" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="305.62619"
+       id="text2824"><tspan
+         sodipodi:role="line"
+         id="tspan2826"
+         x="162.09892"
+         y="305.62619"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2862">4</tspan>: REV4</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="173.57143"
+       y="443.79074"
+       id="text2832"><tspan
+         sodipodi:role="line"
+         id="tspan2834"
+         x="173.57143"
+         y="443.79074" /></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+       d="M 185.14286,478.50504 L 185.14286,454.34432"
+       id="path2894"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+       d="M 185.14286,431.63004 L 185.14286,407.46932"
+       id="path2896"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+       d="M 185.14286,384.75504 L 185.14286,360.59435"
+       id="path2898"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+       d="M 185.14286,337.88007 L 185.14286,313.71932"
+       id="path2900"
+       inkscape:connector-type="polyline" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times"
+       x="244.60992"
+       y="305.245"
+       id="text1902"><tspan
+         sodipodi:role="line"
+         id="tspan1904"
+         x="244.60992"
+         y="305.245">(newest)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times"
+       x="244.60992"
+       y="492.745"
+       id="text1906"><tspan
+         sodipodi:role="line"
+         id="tspan1908"
+         x="244.60992"
+         y="492.745">(oldest)</tspan></text>
+    <rect
+       style="opacity:1;fill:#d2e1e4;fill-opacity:1;stroke:#b1cbd0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect1907"
+       width="94.285713"
+       height="20.714285"
+       x="309.28571"
+       y="324.86218" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="333.38464"
+       y="338.48334"
+       id="text1909"><tspan
+         sodipodi:role="line"
+         id="tspan1911"
+         x="333.38464"
+         y="338.48334"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan1913">4</tspan>: REV4</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 332.14286,375.21932 L 335.71429,347.36218"
+       id="path2802" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 372.69968,375.21932 L 369.12825,347.36218"
+       id="path2986" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times"
+       x="335.14285"
+       y="387.21933"
+       id="text2988"><tspan
+         sodipodi:role="line"
+         x="335.14285"
+         y="387.21933"
+         id="tspan3020"
+         style="text-align:end;text-anchor:end">revision</tspan><tspan
+         sodipodi:role="line"
+         x="335.14285"
+         y="402.21933"
+         id="tspan3014"
+         style="text-align:end;text-anchor:end">number</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times"
+       x="368.71429"
+       y="387.21933"
+       id="text2994"><tspan
+         sodipodi:role="line"
+         id="tspan2996"
+         x="368.71429"
+         y="387.21933">changeset</tspan><tspan
+         sodipodi:role="line"
+         x="368.71429"
+         y="402.21933"
+         id="tspan2998">identifier</tspan></text>
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/tour-merge-conflict.svg	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   sodipodi:docname="tour-merge-conflict.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path3053"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180) translate(10,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="164.78349"
+     inkscape:cy="590.07679"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="906"
+     inkscape:window-height="620"
+     inkscape:window-x="5"
+     inkscape:window-y="49" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g1988"
+       transform="translate(84.85711,0)">
+      <g
+         id="g1876">
+        <path
+           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="M 118.57143,458.21933 L 118.57143,563.79075 L 191.42857,563.79075 L 204.28571,550.93361 L 203.57142,459.6479 L 118.57143,458.21933 z "
+           id="path1872"
+           sodipodi:nodetypes="cccccc" />
+        <path
+           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="M 191.55484,563.36862 L 191.6923,560.98794 L 192.69126,552.44884 L 203.80416,551.31242"
+           id="path1874"
+           sodipodi:nodetypes="cccc" />
+      </g>
+      <flowRoot
+         style="font-size:8px;font-family:Times New Roman"
+         id="flowRoot1898"
+         xml:space="preserve"><flowRegion
+           id="flowRegion1900"><rect
+             style="font-size:8px;font-family:Times New Roman"
+             y="464.50504"
+             x="122.85714"
+             height="93.571426"
+             width="76.428574"
+             id="rect1902" /></flowRegion><flowPara
+           id="flowPara1904">Greetings!</flowPara><flowPara
+           id="flowPara1906" /><flowPara
+           id="flowPara1908">I am Mariam Abacha, the wife of former Nigerian dictator Sani Abacha. I am contacting you in confidence, and as a means of developing</flowPara></flowRoot>    </g>
+    <g
+       id="g1966"
+       transform="translate(82,0.35715)">
+      <g
+         transform="translate(-77.85718,-140.0714)"
+         id="g1910">
+        <path
+           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="M 118.57143,458.21933 L 118.57143,563.79075 L 191.42857,563.79075 L 204.28571,550.93361 L 203.57142,459.6479 L 118.57143,458.21933 z "
+           id="path1912"
+           sodipodi:nodetypes="cccccc" />
+        <path
+           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="M 191.55484,563.36862 L 191.6923,560.98794 L 192.69126,552.44884 L 203.80416,551.31242"
+           id="path1914"
+           sodipodi:nodetypes="cccc" />
+      </g>
+      <flowRoot
+         transform="translate(-77.85718,-140.0714)"
+         style="font-size:8px;font-family:Times New Roman"
+         id="flowRoot1916"
+         xml:space="preserve"><flowRegion
+           id="flowRegion1918"><rect
+             style="font-size:8px;font-family:Times New Roman"
+             y="464.50504"
+             x="122.85714"
+             height="93.571426"
+             width="76.428574"
+             id="rect1920" /></flowRegion><flowPara
+           id="flowPara1922">Greetings!</flowPara><flowPara
+           id="flowPara1924" /><flowPara
+           id="flowPara1926">I am <flowSpan
+   style="font-style:italic;fill:red"
+   id="flowSpan3094">Shehu Musa Abacha, cousin to</flowSpan> the former Nigerian dictator Sani Abacha. I am contacting you in confidence, and as a means of developing</flowPara></flowRoot>    </g>
+    <g
+       id="g1977"
+       transform="translate(81.99999,-0.35715)">
+      <g
+         transform="translate(83.57141,-139.3571)"
+         id="g1932">
+        <path
+           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="M 118.57143,458.21933 L 118.57143,563.79075 L 191.42857,563.79075 L 204.28571,550.93361 L 203.57142,459.6479 L 118.57143,458.21933 z "
+           id="path1934"
+           sodipodi:nodetypes="cccccc" />
+        <path
+           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="M 191.55484,563.36862 L 191.6923,560.98794 L 192.69126,552.44884 L 203.80416,551.31242"
+           id="path1936"
+           sodipodi:nodetypes="cccc" />
+      </g>
+      <flowRoot
+         transform="translate(83.57141,-139.3571)"
+         style="font-size:8px;font-family:Times New Roman"
+         id="flowRoot1938"
+         xml:space="preserve"><flowRegion
+           id="flowRegion1940"><rect
+             style="font-size:8px;font-family:Times New Roman"
+             y="464.50504"
+             x="122.85714"
+             height="93.571426"
+             width="76.428574"
+             id="rect1942" /></flowRegion><flowPara
+           id="flowPara1944">Greetings!</flowPara><flowPara
+           id="flowPara1946" /><flowPara
+           id="flowPara1948">I am <flowSpan
+   style="font-style:italic;fill:red"
+   id="flowSpan3096">Alhaji Abba Abacha, son of</flowSpan> the former Nigerian dictator Sani Abacha. I am contacting you in confidence, and as a means of developing</flowPara></flowRoot>    </g>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 215.502,457.71933 L 196.35507,424.5765"
+       id="path1999"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#g1988"
+       inkscape:connection-end="#g1966" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 277.06936,457.71933 L 296.21629,424.5765"
+       id="path2001"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#g1988"
+       inkscape:connection-end="#g1977" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="302.42859"
+       y="515.08905"
+       id="text1905"><tspan
+         sodipodi:role="line"
+         id="tspan1907"
+         x="302.42859"
+         y="515.08905">Base version</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="45.57143"
+       y="374.1619"
+       id="text1917"><tspan
+         sodipodi:role="line"
+         id="tspan1919"
+         x="45.57143"
+         y="374.1619">Our changes</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="385.71429"
+       y="374.1619"
+       id="text1921"><tspan
+         sodipodi:role="line"
+         id="tspan1923"
+         x="385.71429"
+         y="374.1619">Their changes</tspan></text>
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/tour-merge-merge.svg	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,380 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   sodipodi:docname="tour-merge-merge.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         id="path2973"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path3066"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180) translate(10,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="247.53795"
+     inkscape:cy="871.05738"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="906"
+     inkscape:window-height="620"
+     inkscape:window-x="38"
+     inkscape:window-y="95" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2995"
+       width="94.285713"
+       height="20.714285"
+       x="532.85718"
+       y="203.0479" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="173.57143"
+       y="443.79074"
+       id="text2832"><tspan
+         sodipodi:role="line"
+         id="tspan2834"
+         x="173.57143"
+         y="443.79074" /></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2830"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="297.76227" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="311.38342"
+       id="text2824"><tspan
+         sodipodi:role="line"
+         id="tspan2826"
+         x="162.09892"
+         y="311.38342"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2862">4</tspan>: REV4</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 185.14286,343.63731 L 185.14286,319.47656"
+       id="path2900"
+       inkscape:connector-type="polyline" />
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2863"
+       width="94.285713"
+       height="20.714285"
+       x="91.428574"
+       y="250.47656" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="116.09886"
+       y="264.56592"
+       id="text1965"
+       transform="scale(1.000002,0.999998)"><tspan
+         sodipodi:role="line"
+         id="tspan1967"
+         x="116.09886"
+         y="264.56592"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan1973">5</tspan>: REV_my_new_hello</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
+       d="M 173.95727,296.76228 L 149.75702,272.19085"
+       id="path1971"
+       inkscape:connector-type="polyline"
+       inkscape:connection-end="#rect2863"
+       inkscape:connection-start="#rect2830" />
+    <rect
+       style="fill:#78a5ad;fill-opacity:1;stroke:#507b84;stroke-width:2.00000286;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2911"
+       width="94.285995"
+       height="20.714283"
+       x="186.71414"
+       y="204.40514" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="210.81311"
+       y="218.02673"
+       id="text2913"
+       transform="scale(1.000002,0.999998)"><tspan
+         sodipodi:role="line"
+         id="tspan2915"
+         x="210.81311"
+         y="218.02673"
+         style="font-family:Courier"><tspan
+   id="tspan1966"
+   style="font-weight:bold">6</tspan>: REV6_my_new_hello</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
+       d="M 191.06908,296.76228 L 227.93092,226.11942"
+       id="path2919"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#rect2830" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="295.28571"
+       y="217.56711"
+       id="text2871"><tspan
+         sodipodi:role="line"
+         id="tspan2873"
+         x="295.28571"
+         y="217.56711">tip (and head)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="76"
+       y="264.91769"
+       id="text2875"><tspan
+         sodipodi:role="line"
+         id="tspan2877"
+         x="76"
+         y="264.91769"
+         style="text-align:end;text-anchor:end">head</tspan></text>
+    <rect
+       style="fill:#c8aaa5;fill-opacity:1;stroke:#a07163;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2, 4;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect1913"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="156.90514" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:2, 2;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 144.22399,249.47657 L 179.49029,178.61943"
+       id="path1915"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#rect2863"
+       inkscape:connection-end="#rect1913" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:2, 2;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 222.20966,203.40514 L 196.79033,178.61943"
+       id="path1917"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#rect2911"
+       inkscape:connection-end="#rect1913" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="166.16823"
+       y="168.52228"
+       id="text2806"><tspan
+         sodipodi:role="line"
+         id="tspan2808"
+         x="166.16823"
+         y="168.52228"
+         style="font-family:Courier">merge</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="246"
+       y="162.63338"
+       id="text2810"><tspan
+         sodipodi:role="line"
+         id="tspan2812"
+         x="246"
+         y="162.63338">working directory</tspan><tspan
+         sodipodi:role="line"
+         x="246"
+         y="177.63338"
+         id="tspan2814">during merge</tspan></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2816"
+       width="94.285713"
+       height="20.714285"
+       x="483.14636"
+       y="297.76227" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="507.24527"
+       y="311.38342"
+       id="text2818"><tspan
+         sodipodi:role="line"
+         id="tspan2820"
+         x="507.24527"
+         y="311.38342"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2822">4</tspan>: REV4</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 530.28921,343.6373 L 530.28921,319.47655"
+       id="path2824"
+       inkscape:connector-type="polyline" />
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2826"
+       width="94.285713"
+       height="20.714285"
+       x="436.57492"
+       y="250.47656" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="461.24484"
+       y="264.56613"
+       id="text2828"
+       transform="scale(1.000002,0.999998)"><tspan
+         sodipodi:role="line"
+         id="tspan2830"
+         x="461.24484"
+         y="264.56613"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2832">5</tspan>: REV_my_new_hello</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
+       d="M 519.10362,296.76227 L 494.90337,272.19084"
+       id="path2834"
+       inkscape:connector-type="polyline" />
+    <rect
+       style="fill:#78a5ad;fill-opacity:1;stroke:#507b84;stroke-width:2.00000286;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2836"
+       width="94.285995"
+       height="20.714283"
+       x="483.14001"
+       y="156.548" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="555.95911"
+       y="218.02698"
+       id="text2838"
+       transform="scale(1.000002,0.999998)"><tspan
+         sodipodi:role="line"
+         id="tspan2840"
+         x="555.95911"
+         y="218.02698"
+         style="font-family:Courier"><tspan
+   id="tspan2842"
+   style="font-weight:bold">6</tspan>: REV6_my_new_hello</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
+       d="M 536.21543,296.76227 L 574.03453,224.76218"
+       id="path2844"
+       inkscape:connector-type="polyline" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="594.43207"
+       y="169.78796"
+       id="text2846"><tspan
+         sodipodi:role="line"
+         id="tspan2848"
+         x="594.43207"
+         y="169.78796">tip</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+       d="M 489.37034,249.47656 L 524.65575,178.26229"
+       id="path2856"
+       inkscape:connector-type="polyline"
+       inkscape:connection-end="#rect2836" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+       d="M 567.85714,202.0479 L 542.42591,178.26229"
+       id="path2858"
+       inkscape:connector-type="polyline"
+       inkscape:connection-end="#rect2836"
+       inkscape:connection-start="#rect2995" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="504.54507"
+       y="170.39714"
+       id="text2860"><tspan
+         sodipodi:role="line"
+         id="tspan2863"
+         x="504.54507"
+         y="170.39714"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2997">7</tspan>: REV7_my_new_hello</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="90.323105"
+       y="120.21933"
+       id="text2929"><tspan
+         sodipodi:role="line"
+         id="tspan2931"
+         x="90.323105"
+         y="120.21933"
+         style="font-weight:bold">Working directory during merge</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="435.35226"
+       y="120.21933"
+       id="text2937"><tspan
+         sodipodi:role="line"
+         id="tspan2939"
+         x="435.35226"
+         y="120.21933"
+         style="font-weight:bold">Repository after merge committed</tspan></text>
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/tour-merge-pull.svg	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   sodipodi:docname="tour-merge-pull.svg"
+   sodipodi:docbase="/home/bos/hg/hgbook/en">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         id="path2973"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path3066"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180) translate(10,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="233.63208"
+     inkscape:cy="832.54381"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="906"
+     inkscape:window-height="620"
+     inkscape:window-x="237"
+     inkscape:window-y="103" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="173.57143"
+       y="443.79074"
+       id="text2832"><tspan
+         sodipodi:role="line"
+         id="tspan2834"
+         x="173.57143"
+         y="443.79074" /></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect1878"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="479.50504" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="493.12619"
+       id="text1872"><tspan
+         sodipodi:role="line"
+         id="tspan1874"
+         x="162.09892"
+         y="493.12619"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan1876">0</tspan>: REV0</tspan></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2800"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="432.63004" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="446.25119"
+       id="text2794"><tspan
+         sodipodi:role="line"
+         id="tspan2796"
+         x="162.09892"
+         y="446.25119"
+         style="font-family:Courier"><tspan
+   id="tspan2868"
+   style="font-weight:bold">1</tspan>: REV1</tspan></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2810"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="385.75504" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="399.37619"
+       id="text2804"><tspan
+         sodipodi:role="line"
+         id="tspan2806"
+         x="162.09892"
+         y="399.37619"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2866">2</tspan>: REV2</tspan></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2820"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="338.88007" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="352.50122"
+       id="text2814"><tspan
+         sodipodi:role="line"
+         id="tspan2816"
+         x="162.09892"
+         y="352.50122"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2864">3</tspan>: REV3</tspan></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2830"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="292.00504" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="305.62619"
+       id="text2824"><tspan
+         sodipodi:role="line"
+         id="tspan2826"
+         x="162.09892"
+         y="305.62619"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2862">4</tspan>: REV4</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 185.14286,478.50504 L 185.14286,454.34432"
+       id="path2894"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 185.14286,431.63004 L 185.14286,407.46932"
+       id="path2896"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 185.14286,384.75504 L 185.14286,360.59435"
+       id="path2898"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 185.14286,337.88007 L 185.14286,313.71932"
+       id="path2900"
+       inkscape:connector-type="polyline" />
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2863"
+       width="94.285713"
+       height="20.714285"
+       x="91.428574"
+       y="244.71933" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="116.09886"
+       y="258.80865"
+       id="text1965"
+       transform="scale(1.000002,0.999998)"><tspan
+         sodipodi:role="line"
+         id="tspan1967"
+         x="116.09886"
+         y="258.80865"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan1973">5</tspan>: REV_my_new_hello</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
+       d="M 173.95727,291.00504 L 149.75702,266.43361"
+       id="path1971"
+       inkscape:connector-type="polyline"
+       inkscape:connection-end="#rect2863"
+       inkscape:connection-start="#rect2830" />
+    <rect
+       style="fill:#78a5ad;fill-opacity:1;stroke:#507b84;stroke-width:2.00000286;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2911"
+       width="94.285995"
+       height="20.714283"
+       x="186.71414"
+       y="198.6479" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="210.81311"
+       y="212.26949"
+       id="text2913"
+       transform="scale(1.000002,0.999998)"><tspan
+         sodipodi:role="line"
+         id="tspan2915"
+         x="210.81311"
+         y="212.26949"
+         style="font-family:Courier"><tspan
+   id="tspan1966"
+   style="font-weight:bold">6</tspan>: REV6_my_new_hello</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
+       d="M 191.06908,291.00504 L 227.93092,220.36218"
+       id="path2919"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#rect2830" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="295.28571"
+       y="211.80988"
+       id="text2871"><tspan
+         sodipodi:role="line"
+         id="tspan2873"
+         x="295.28571"
+         y="211.80988">tip (and head)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="76"
+       y="259.16046"
+       id="text2875"><tspan
+         sodipodi:role="line"
+         id="tspan2877"
+         x="76"
+         y="259.16046"
+         style="text-align:end;text-anchor:end">head</tspan></text>
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/tour-merge-sep-repos.svg	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,466 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   sodipodi:docname="tour-merge-sep-repos.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         id="path2973"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path3066"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180) translate(10,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="307.20351"
+     inkscape:cy="716.87911"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="906"
+     inkscape:window-height="620"
+     inkscape:window-x="5"
+     inkscape:window-y="49" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="173.57143"
+       y="443.79074"
+       id="text2832"><tspan
+         sodipodi:role="line"
+         id="tspan2834"
+         x="173.57143"
+         y="443.79074" /></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect1878"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="479.50504" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="493.12619"
+       id="text1872"><tspan
+         sodipodi:role="line"
+         id="tspan1874"
+         x="162.09892"
+         y="493.12619"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan1876">0</tspan>: REV0</tspan></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2800"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="432.63004" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="446.25119"
+       id="text2794"><tspan
+         sodipodi:role="line"
+         id="tspan2796"
+         x="162.09892"
+         y="446.25119"
+         style="font-family:Courier"><tspan
+   id="tspan2868"
+   style="font-weight:bold">1</tspan>: REV1</tspan></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2810"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="385.75504" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="399.37619"
+       id="text2804"><tspan
+         sodipodi:role="line"
+         id="tspan2806"
+         x="162.09892"
+         y="399.37619"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2866">2</tspan>: REV2</tspan></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2820"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="338.88007" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="352.50122"
+       id="text2814"><tspan
+         sodipodi:role="line"
+         id="tspan2816"
+         x="162.09892"
+         y="352.50122"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2864">3</tspan>: REV3</tspan></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2830"
+       width="94.285713"
+       height="20.714285"
+       x="138"
+       y="292.00504" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09892"
+       y="305.62619"
+       id="text2824"><tspan
+         sodipodi:role="line"
+         id="tspan2826"
+         x="162.09892"
+         y="305.62619"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2862">4</tspan>: REV4</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 185.14286,478.50504 L 185.14286,454.34432"
+       id="path2894"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 185.14286,431.63004 L 185.14286,407.46932"
+       id="path2896"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 185.14286,384.75504 L 185.14286,360.59435"
+       id="path2898"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 185.14286,337.88007 L 185.14286,313.71932"
+       id="path2900"
+       inkscape:connector-type="polyline" />
+    <rect
+       style="fill:#78a5ad;fill-opacity:1;stroke:#507b84;stroke-width:2.00000286;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect1963"
+       width="94.285995"
+       height="20.714283"
+       x="138"
+       y="245.18723" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="162.09877"
+       y="258.80865"
+       id="text1965"
+       transform="scale(1.000002,0.999998)"><tspan
+         sodipodi:role="line"
+         id="tspan1967"
+         x="162.09877"
+         y="258.80865"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan1973">5</tspan>: REV_my_hello</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 185.143,291.06218 L 185.143,266.90143"
+       id="path1971"
+       inkscape:connector-type="polyline" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="136.90039"
+       y="232.25546"
+       id="text2921"><tspan
+         sodipodi:role="line"
+         id="tspan2923"
+         x="136.90039"
+         y="232.25546">my-hello</tspan></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2863"
+       width="94.285713"
+       height="20.714285"
+       x="370.71414"
+       y="479.49289" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="394.81305"
+       y="493.11404"
+       id="text2865"><tspan
+         sodipodi:role="line"
+         id="tspan2867"
+         x="394.81305"
+         y="493.11404"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2869">0</tspan>: REV0</tspan></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2871"
+       width="94.285713"
+       height="20.714285"
+       x="370.71414"
+       y="432.61789" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="394.81305"
+       y="446.23904"
+       id="text2873"><tspan
+         sodipodi:role="line"
+         id="tspan2875"
+         x="394.81305"
+         y="446.23904"
+         style="font-family:Courier"><tspan
+   id="tspan2877"
+   style="font-weight:bold">1</tspan>: REV1</tspan></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2879"
+       width="94.285713"
+       height="20.714285"
+       x="370.71414"
+       y="385.74289" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="394.81305"
+       y="399.36404"
+       id="text2881"><tspan
+         sodipodi:role="line"
+         id="tspan2883"
+         x="394.81305"
+         y="399.36404"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2885">2</tspan>: REV2</tspan></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2887"
+       width="94.285713"
+       height="20.714285"
+       x="370.71414"
+       y="338.86792" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="394.81305"
+       y="352.48907"
+       id="text2889"><tspan
+         sodipodi:role="line"
+         id="tspan2891"
+         x="394.81305"
+         y="352.48907"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2893">3</tspan>: REV3</tspan></text>
+    <rect
+       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2895"
+       width="94.285713"
+       height="20.714285"
+       x="370.71414"
+       y="291.99289" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="394.81305"
+       y="305.61404"
+       id="text2897"><tspan
+         sodipodi:role="line"
+         id="tspan2899"
+         x="394.81305"
+         y="305.61404"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2901">4</tspan>: REV4</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 417.85701,478.4929 L 417.85701,454.33218"
+       id="path2903"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 417.85701,431.6179 L 417.85701,407.45718"
+       id="path2905"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 417.85701,384.7429 L 417.85701,360.58221"
+       id="path2907"
+       inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 417.85701,337.86793 L 417.85701,313.70718"
+       id="path2909"
+       inkscape:connector-type="polyline" />
+    <rect
+       style="fill:#78a5ad;fill-opacity:1;stroke:#507b84;stroke-width:2.00000286;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2911"
+       width="94.285995"
+       height="20.714283"
+       x="370.71414"
+       y="245.17511" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
+       x="394.81274"
+       y="258.79678"
+       id="text2913"
+       transform="scale(1.000002,0.999998)"><tspan
+         sodipodi:role="line"
+         id="tspan2915"
+         x="394.81274"
+         y="258.79678"
+         style="font-family:Courier"><tspan
+   style="font-weight:bold"
+   id="tspan2917">5</tspan>: REV_my_new_hello</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 417.85715,291.05004 L 417.85715,266.88929"
+       id="path2919"
+       inkscape:connector-type="polyline" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="369.61453"
+       y="232.25546"
+       id="text2925"><tspan
+         sodipodi:role="line"
+         id="tspan2927"
+         x="369.61453"
+         y="232.25546">my-new-hello</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="300.54352"
+       y="252.12723"
+       id="text2933"><tspan
+         sodipodi:role="line"
+         id="tspan2935"
+         x="300.54352"
+         y="252.12723"
+         style="text-align:center;text-anchor:middle">newest changes</tspan><tspan
+         sodipodi:role="line"
+         x="300.54352"
+         y="267.12723"
+         style="text-align:center;text-anchor:middle"
+         id="tspan3132">differ</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="262.15436"
+       y="398.37112"
+       id="text2929"><tspan
+         sodipodi:role="line"
+         x="262.15436"
+         y="398.37112"
+         id="tspan3013"
+         style="text-align:start;text-anchor:start">common history</tspan></text>
+    <g
+       id="g3107"
+       transform="translate(0,0.855744)">
+      <path
+         id="path3101"
+         d="M 300.35713,381.29075 L 300.35713,304.50504"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4, 4;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         id="path3105"
+         d="M 291.07142,301.64789 L 309.28571,301.64789"
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:0.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <path
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4, 4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 300.53571,486.38926 L 300.53571,409.60355"
+       id="path3113" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:0.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 291.25,488.49641 L 309.46429,488.49641"
+       id="path3115" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="480.71429"
+       y="250.91507"
+       id="text1949"><tspan
+         sodipodi:role="line"
+         id="tspan1951"
+         x="480.71429"
+         y="250.91507"
+         style="text-align:start;text-anchor:start">head revision</tspan><tspan
+         sodipodi:role="line"
+         x="480.71429"
+         y="265.91507"
+         id="tspan1953"
+         style="text-align:start;text-anchor:start">(has no children)</tspan></text>
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/undo-manual-merge.dot	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,8 @@
+digraph undo_manual {
+	"first change" -> "second change";
+	"second change" -> "third change";
+	backout [label="back out\nsecond change", shape=box];
+	"second change" -> backout;
+	"third change" -> "manual\nmerge";
+	backout -> "manual\nmerge";
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/undo-manual.dot	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,6 @@
+digraph undo_manual {
+	"first change" -> "second change";
+	"second change" -> "third change";
+	backout [label="back out\nsecond change", shape=box];
+	"second change" -> backout;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/undo-non-tip.dot	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,9 @@
+digraph undo_non_tip {
+	"first change" -> "second change";
+	"second change" -> "third change";
+	backout [label="back out\nsecond change", shape=box];
+	"second change" -> backout;
+	merge [label="automated\nmerge", shape=box];
+	"third change" -> merge;
+	backout -> merge;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/undo-simple.dot	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,4 @@
+digraph undo_simple {
+	"first change" -> "second change";
+	"second change" -> "back out\nsecond change";
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/wdir-after-commit.svg	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,394 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg5971"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   sodipodi:docbase="/home/bos/hg/hgbook/en"
+   sodipodi:docname="wdir-after-commit.svg">
+  <defs
+     id="defs5973">
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6445"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         id="path4855"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <linearGradient
+       id="linearGradient6049">
+      <stop
+         style="stop-color:#686868;stop-opacity:1;"
+         offset="0"
+         id="stop6051" />
+      <stop
+         style="stop-color:#f0f0f0;stop-opacity:1;"
+         offset="1"
+         id="stop6053" />
+    </linearGradient>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path4852"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180) translate(10,0)" />
+    </marker>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6083"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-240.0462,-8.633237e-6)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6142"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-42.00893,-30.49544)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6193"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-240.0462,-8.633237e-6)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6216"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-6.0462,-0.664361)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000474,0,0,0.790947,222.8399,50.85693)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6772"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000474,0,0,0.790947,222.8399,50.85693)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.90509668"
+     inkscape:cx="390.0539"
+     inkscape:cy="690.49342"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="906"
+     inkscape:window-height="620"
+     inkscape:window-x="0"
+     inkscape:window-y="25">
+    <sodipodi:guide
+       orientation="vertical"
+       position="-1.4285714"
+       id="guide6022" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5976">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       y="245.98355"
+       x="328.23956"
+       height="258.57144"
+       width="174.28572"
+       id="rect6047"
+       style="fill:url(#linearGradient6216);fill-opacity:1;stroke:#686868;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <g
+       id="g6261"
+       transform="translate(234,0)">
+      <rect
+         y="258.7149"
+         x="114.11369"
+         height="44.537449"
+         width="134.53746"
+         id="rect5983"
+         style="fill:#b1b1b1;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text5985"
+         y="284.47562"
+         x="138.7962"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="font-family:Courier"
+           y="284.47562"
+           x="138.7962"
+           id="tspan5987"
+           sodipodi:role="line">dfbbb33f3fa3</tspan></text>
+    </g>
+    <rect
+       style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5996"
+       width="134.53746"
+       height="44.537449"
+       x="348.11371"
+       y="320.38159" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="372.7962"
+       y="346.1423"
+       id="text5998"><tspan
+         sodipodi:role="line"
+         id="tspan6000"
+         x="372.7962"
+         y="346.1423"
+         style="font-family:Courier">e7639888bb2f</tspan></text>
+    <rect
+       style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6004"
+       width="134.53746"
+       height="44.537449"
+       x="348.11371"
+       y="382.04825" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="370.65421"
+       y="407.80896"
+       id="text6006"><tspan
+         sodipodi:role="line"
+         id="tspan6008"
+         x="370.65421"
+         y="407.80896"
+         style="font-family:Courier">7b064d8bac5e</tspan></text>
+    <path
+       inkscape:connector-type="polyline"
+       id="path6018"
+       d="M 415.38242,303.62646 L 415.38242,320.00744"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
+    <path
+       inkscape:connection-end="#rect6004"
+       inkscape:connector-type="polyline"
+       id="path6020"
+       d="M 415.38242,365.29315 L 415.38243,381.67412"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
+    <rect
+       style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6039"
+       width="134.53746"
+       height="44.537449"
+       x="348.11359"
+       y="443.71487" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="372.79706"
+       y="469.47556"
+       id="text6041"><tspan
+         sodipodi:role="line"
+         id="tspan6043"
+         x="372.79706"
+         y="469.47556"
+         style="fill:#979797;fill-opacity:1;font-family:Courier">000000000000</tspan></text>
+    <path
+       inkscape:connection-end="#rect6039"
+       inkscape:connector-type="polyline"
+       id="path6045"
+       d="M 415.38238,426.95981 L 415.38235,443.34087"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#686868;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="327.66046"
+       y="231.36218"
+       id="text6102"><tspan
+         sodipodi:role="line"
+         id="tspan6104"
+         x="327.66046"
+         y="231.36218">History in repository</tspan></text>
+    <rect
+       y="245.94225"
+       x="557.28418"
+       height="204.51619"
+       width="174.36833"
+       id="rect6140"
+       style="fill:url(#linearGradient6232);fill-opacity:1;stroke:#686868;stroke-width:0.66539276;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <g
+       id="g6130"
+       transform="translate(262.3254,24.38544)">
+      <rect
+         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect6106"
+         width="134.53746"
+         height="44.537449"
+         x="314.87415"
+         y="257.95059" />
+      <text
+         xml:space="preserve"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         x="339.55664"
+         y="283.7113"
+         id="text6108"><tspan
+           sodipodi:role="line"
+           id="tspan6110"
+           x="339.55664"
+           y="283.7113"
+           style="font-family:Courier">dfbbb33f3fa3</tspan></text>
+    </g>
+    <g
+       id="g6135"
+       transform="translate(263.0396,49.83106)">
+      <rect
+         inkscape:transform-center-y="102.85714"
+         inkscape:transform-center-x="129.28571"
+         style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect6112"
+         width="134.53746"
+         height="44.537449"
+         x="314.15985"
+         y="326.52203" />
+      <text
+         inkscape:transform-center-y="102.7311"
+         inkscape:transform-center-x="128.69672"
+         xml:space="preserve"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         x="338.84335"
+         y="352.28271"
+         id="text6114"><tspan
+           sodipodi:role="line"
+           id="tspan6116"
+           x="338.84335"
+           y="352.28271"
+           style="fill:#979797;fill-opacity:1;font-family:Courier">000000000000</tspan></text>
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="576.63208"
+       y="270.479"
+       id="text6118"><tspan
+         sodipodi:role="line"
+         id="tspan6120"
+         x="576.63208"
+         y="270.479">First parent</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="576.07544"
+       y="364.49615"
+       id="text6122"><tspan
+         sodipodi:role="line"
+         id="tspan6124"
+         x="576.07544"
+         y="364.49615">Second parent</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="556.61743"
+       y="231.36218"
+       id="text6195"><tspan
+         sodipodi:role="line"
+         id="tspan6197"
+         x="556.61743"
+         y="231.36218">Parents of working directory</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 576.82542,297.63008 L 483.02528,287.95831"
+       id="path6266"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#g6130"
+       inkscape:connection-end="#g6261" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 665.12232,418.17579 L 665.12232,418.17579"
+       id="path6270"
+       inkscape:connector-type="polyline" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="316.86407"
+       y="275.6496"
+       id="text6573"><tspan
+         sodipodi:role="line"
+         id="tspan6575"
+         x="316.86407"
+         y="275.6496"
+         style="text-align:end;text-anchor:end">New</tspan><tspan
+         sodipodi:role="line"
+         x="316.86407"
+         y="290.6496"
+         id="tspan6577"
+         style="text-align:end;text-anchor:end">changeset</tspan></text>
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/wdir-branch.svg	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,418 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg5971"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   sodipodi:docbase="/home/bos/hg/hgbook/en"
+   sodipodi:docname="wdir-branch.svg">
+  <defs
+     id="defs5973">
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         id="path4855"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <linearGradient
+       id="linearGradient6049">
+      <stop
+         style="stop-color:#686868;stop-opacity:1;"
+         offset="0"
+         id="stop6051" />
+      <stop
+         style="stop-color:#f0f0f0;stop-opacity:1;"
+         offset="1"
+         id="stop6053" />
+    </linearGradient>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path4852"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180) translate(10,0)" />
+    </marker>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6083"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-240.0462,-8.633237e-6)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6142"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-42.00893,-30.49544)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6193"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-240.0462,-8.633237e-6)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6216"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000473,0,0,0.790947,-11.16012,50.85693)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6445"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6974"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.911882,0,0,0.789965,-574.7896,51.22599)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6996"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000473,0,0,0.790947,112.8399,50.85693)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.90509668"
+     inkscape:cx="345.85973"
+     inkscape:cy="690.49342"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="906"
+     inkscape:window-height="620"
+     inkscape:window-x="0"
+     inkscape:window-y="25">
+    <sodipodi:guide
+       orientation="vertical"
+       position="-1.4285714"
+       id="guide6022" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5976">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       y="246.06918"
+       x="64.325172"
+       height="204.26233"
+       width="333.2135"
+       id="rect6047"
+       style="fill:url(#linearGradient6974);fill-opacity:1;stroke:#686868;stroke-width:0.91925466;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <g
+       id="g1935">
+      <rect
+         y="266.24374"
+         x="84.113708"
+         height="44.537449"
+         width="134.53746"
+         id="rect5996"
+         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text5998"
+         y="292.00446"
+         x="108.7962"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="font-family:Courier"
+           y="292.00446"
+           x="108.7962"
+           id="tspan6000"
+           sodipodi:role="line">e7639888bb2f</tspan></text>
+    </g>
+    <g
+       id="g6976"
+       transform="translate(70,0)">
+      <rect
+         y="327.9104"
+         x="40.113693"
+         height="44.537449"
+         width="134.53746"
+         id="rect6004"
+         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text6006"
+         y="353.67111"
+         x="62.654205"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="font-family:Courier"
+           y="353.67111"
+           x="62.654205"
+           id="tspan6008"
+           sodipodi:role="line">7b064d8bac5e</tspan></text>
+    </g>
+    <path
+       inkscape:connector-type="polyline"
+       id="path6020"
+       d="M 160.92915,311.15532 L 167.83571,327.53627"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
+       inkscape:connection-end="#g6976"
+       inkscape:connection-start="#g1935" />
+    <rect
+       style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6039"
+       width="134.53746"
+       height="44.537449"
+       x="110.11359"
+       y="389.57703" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="134.79706"
+       y="415.33771"
+       id="text6041"><tspan
+         sodipodi:role="line"
+         id="tspan6043"
+         x="134.79706"
+         y="415.33771"
+         style="fill:#979797;fill-opacity:1;font-family:Courier">000000000000</tspan></text>
+    <path
+       inkscape:connection-end="#rect6039"
+       inkscape:connector-type="polyline"
+       id="path6045"
+       d="M 177.38238,372.82195 L 177.38235,389.20303"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#686868;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
+    <rect
+       y="245.94225"
+       x="447.28412"
+       height="204.51619"
+       width="174.36833"
+       id="rect6140"
+       style="fill:url(#linearGradient6996);fill-opacity:1;stroke:#686868;stroke-width:0.66539276;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <g
+       id="g6130"
+       transform="translate(152.3254,24.38544)">
+      <rect
+         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect6106"
+         width="134.53746"
+         height="44.537449"
+         x="314.87415"
+         y="257.95059" />
+      <text
+         xml:space="preserve"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         x="339.55664"
+         y="283.7113"
+         id="text6108"><tspan
+           sodipodi:role="line"
+           id="tspan6110"
+           x="339.55664"
+           y="283.7113"
+           style="font-family:Courier">ffb20e1701ea</tspan></text>
+    </g>
+    <g
+       id="g6135"
+       transform="translate(153.0396,49.83106)">
+      <rect
+         inkscape:transform-center-y="102.85714"
+         inkscape:transform-center-x="129.28571"
+         style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect6112"
+         width="134.53746"
+         height="44.537449"
+         x="314.15985"
+         y="326.52203" />
+      <text
+         inkscape:transform-center-y="102.7311"
+         inkscape:transform-center-x="128.69672"
+         xml:space="preserve"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         x="338.84335"
+         y="352.28271"
+         id="text6114"><tspan
+           sodipodi:role="line"
+           id="tspan6116"
+           x="338.84335"
+           y="352.28271"
+           style="fill:#979797;fill-opacity:1;font-family:Courier">000000000000</tspan></text>
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="466.63208"
+       y="270.479"
+       id="text6118"><tspan
+         sodipodi:role="line"
+         id="tspan6120"
+         x="466.63208"
+         y="270.479">First parent</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="466.07544"
+       y="364.49615"
+       id="text6122"><tspan
+         sodipodi:role="line"
+         id="tspan6124"
+         x="466.07544"
+         y="364.49615">Second parent</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="446.61743"
+       y="231.36218"
+       id="text6195"><tspan
+         sodipodi:role="line"
+         id="tspan6197"
+         x="446.61743"
+         y="231.36218">Parents of working directory</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+       d="M 466.82542,300.21999 L 377.00207,294.39744"
+       id="path6266"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#g6130"
+       inkscape:connection-end="#rect1925" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 665.12232,418.17579 L 665.12232,418.17579"
+       id="path6270"
+       inkscape:connector-type="polyline" />
+    <g
+       id="g2845">
+      <rect
+         y="266.24374"
+         x="242.09048"
+         height="44.537449"
+         width="134.53746"
+         id="rect1925"
+         style="fill:#9f9f9f;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text1927"
+         y="292.00446"
+         x="266.77298"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="font-family:Courier"
+           y="292.00446"
+           x="266.77298"
+           id="tspan1929"
+           sodipodi:role="line">ffb20e1701ea</tspan></text>
+    </g>
+    <path
+       inkscape:connector-type="polyline"
+       id="path1933"
+       d="M 260.89978,311.15532 L 225.84185,327.53627"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
+       inkscape:connection-end="#g6976" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="109.45568"
+       y="231.4554"
+       id="text2837"><tspan
+         sodipodi:role="line"
+         id="tspan2839"
+         x="109.45568"
+         y="231.4554">Pre-existing head</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="237.54184"
+       y="231.4554"
+       id="text2841"><tspan
+         sodipodi:role="line"
+         id="tspan2843"
+         x="237.54184"
+         y="231.4554">Newly created head (and tip)</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+       d="M 148.05048,235.87482 L 149.94915,265.86962"
+       id="path2850"
+       inkscape:connector-type="polyline"
+       inkscape:connection-end="#g1935" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+       d="M 303.83495,238.08453 L 306.87874,265.86962"
+       id="path2852"
+       inkscape:connector-type="polyline"
+       inkscape:connection-end="#g2845" />
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/wdir-merge.svg	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,425 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg5971"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   sodipodi:docbase="/home/bos/hg/hgbook/en"
+   sodipodi:docname="wdir-merge.svg">
+  <defs
+     id="defs5973">
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         id="path4855"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <linearGradient
+       id="linearGradient6049">
+      <stop
+         style="stop-color:#686868;stop-opacity:1;"
+         offset="0"
+         id="stop6051" />
+      <stop
+         style="stop-color:#f0f0f0;stop-opacity:1;"
+         offset="1"
+         id="stop6053" />
+    </linearGradient>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path4852"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180) translate(10,0)" />
+    </marker>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6083"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-240.0462,-8.633237e-6)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6142"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-42.00893,-30.49544)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6193"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-240.0462,-8.633237e-6)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6216"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000473,0,0,0.790947,-11.16012,50.85693)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6445"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6974"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.911882,0,0,0.789965,-574.7896,51.22599)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6996"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000473,0,0,0.790947,112.8399,50.85693)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.28"
+     inkscape:cx="345.85973"
+     inkscape:cy="690.49342"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="906"
+     inkscape:window-height="620"
+     inkscape:window-x="0"
+     inkscape:window-y="25">
+    <sodipodi:guide
+       orientation="vertical"
+       position="-1.4285714"
+       id="guide6022" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5976">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       y="246.06918"
+       x="64.325172"
+       height="204.26233"
+       width="333.2135"
+       id="rect6047"
+       style="fill:url(#linearGradient6974);fill-opacity:1;stroke:#686868;stroke-width:0.91925466;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <g
+       id="g6976"
+       transform="translate(70,0)">
+      <rect
+         y="327.9104"
+         x="40.113693"
+         height="44.537449"
+         width="134.53746"
+         id="rect6004"
+         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text6006"
+         y="353.67111"
+         x="62.654205"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="font-family:Courier"
+           y="353.67111"
+           x="62.654205"
+           id="tspan6008"
+           sodipodi:role="line">7b064d8bac5e</tspan></text>
+    </g>
+    <path
+       inkscape:connector-type="polyline"
+       id="path6020"
+       d="M 160.92915,311.15532 L 167.83571,327.53627"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
+       inkscape:connection-end="#g6976"
+       inkscape:connection-start="#g1935" />
+    <rect
+       style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6039"
+       width="134.53746"
+       height="44.537449"
+       x="110.11359"
+       y="389.57703" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="134.79706"
+       y="415.33771"
+       id="text6041"><tspan
+         sodipodi:role="line"
+         id="tspan6043"
+         x="134.79706"
+         y="415.33771"
+         style="fill:#979797;fill-opacity:1;font-family:Courier">000000000000</tspan></text>
+    <path
+       inkscape:connection-end="#rect6039"
+       inkscape:connector-type="polyline"
+       id="path6045"
+       d="M 177.38238,372.82195 L 177.38235,389.20303"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#686868;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
+    <rect
+       y="245.94225"
+       x="447.28412"
+       height="204.51619"
+       width="174.36833"
+       id="rect6140"
+       style="fill:url(#linearGradient6996);fill-opacity:1;stroke:#686868;stroke-width:0.66539276;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <g
+       id="g6130"
+       transform="translate(152.3254,24.38544)">
+      <rect
+         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect6106"
+         width="134.53746"
+         height="44.537449"
+         x="314.87415"
+         y="257.95059" />
+      <text
+         xml:space="preserve"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         x="339.55664"
+         y="283.7113"
+         id="text6108"><tspan
+           sodipodi:role="line"
+           id="tspan6110"
+           x="339.55664"
+           y="283.7113"
+           style="font-family:Courier">ffb20e1701ea</tspan></text>
+    </g>
+    <g
+       id="g6135"
+       transform="translate(153.0396,49.83106)">
+      <rect
+         inkscape:transform-center-y="102.85714"
+         inkscape:transform-center-x="129.28571"
+         style="fill:#d4d4d4;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect6112"
+         width="134.53746"
+         height="44.537449"
+         x="314.15985"
+         y="326.52203" />
+      <text
+         inkscape:transform-center-y="102.7311"
+         inkscape:transform-center-x="128.69672"
+         xml:space="preserve"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         x="338.84335"
+         y="352.28271"
+         id="text6114"><tspan
+           sodipodi:role="line"
+           id="tspan6116"
+           x="338.84335"
+           y="352.28271"
+           style="fill:black;fill-opacity:1;font-family:Courier">e7639888bb2f</tspan></text>
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="466.63208"
+       y="270.479"
+       id="text6118"><tspan
+         sodipodi:role="line"
+         id="tspan6120"
+         x="466.63208"
+         y="270.479">First parent (unchanged)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="466.07544"
+       y="364.49615"
+       id="text6122"><tspan
+         sodipodi:role="line"
+         id="tspan6124"
+         x="466.07544"
+         y="364.49615">Second parent</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="446.61743"
+       y="231.36218"
+       id="text6195"><tspan
+         sodipodi:role="line"
+         id="tspan6197"
+         x="446.61743"
+         y="231.36218">Parents of working directory</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+       d="M 466.82542,300.21999 L 377.00207,294.39744"
+       id="path6266"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#g6130"
+       inkscape:connection-end="#rect1925" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 665.12232,418.17579 L 665.12232,418.17579"
+       id="path6270"
+       inkscape:connector-type="polyline" />
+    <g
+       id="g2845">
+      <rect
+         y="266.24374"
+         x="242.09048"
+         height="44.537449"
+         width="134.53746"
+         id="rect1925"
+         style="fill:#9f9f9f;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text1927"
+         y="292.00446"
+         x="266.77298"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="font-family:Courier"
+           y="292.00446"
+           x="266.77298"
+           id="tspan1929"
+           sodipodi:role="line">ffb20e1701ea</tspan></text>
+    </g>
+    <path
+       inkscape:connector-type="polyline"
+       id="path1933"
+       d="M 260.89978,311.15532 L 225.84185,327.53627"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
+       inkscape:connection-end="#g6976" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="109.45568"
+       y="231.4554"
+       id="text2837"><tspan
+         sodipodi:role="line"
+         id="tspan2839"
+         x="109.45568"
+         y="231.4554">Pre-existing head</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="237.54184"
+       y="231.4554"
+       id="text2841"><tspan
+         sodipodi:role="line"
+         id="tspan2843"
+         x="237.54184"
+         y="231.4554">Newly created head (and tip)</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+       d="M 148.05048,235.87482 L 149.94915,265.86962"
+       id="path2850"
+       inkscape:connector-type="polyline"
+       inkscape:connection-end="#g1935" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+       d="M 303.83495,238.08453 L 306.87874,265.86962"
+       id="path2852"
+       inkscape:connector-type="polyline"
+       inkscape:connection-end="#g2845" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+       d="M 466.82545,379.17944 L 219.0253,307.95488"
+       id="path3016"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#g6135"
+       inkscape:connection-end="#g1935" />
+    <g
+       id="g1935">
+      <rect
+         y="266.24374"
+         x="84.113708"
+         height="44.537449"
+         width="134.53746"
+         id="rect5996"
+         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text5998"
+         y="292.00446"
+         x="108.7962"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="font-family:Courier"
+           y="292.00446"
+           x="108.7962"
+           id="tspan6000"
+           sodipodi:role="line">e7639888bb2f</tspan></text>
+    </g>
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/wdir-pre-branch.svg	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg5971"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   sodipodi:docbase="/home/bos/hg/hgbook/en"
+   sodipodi:docname="wdir-branch.svg">
+  <defs
+     id="defs5973">
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         id="path4855"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <linearGradient
+       id="linearGradient6049">
+      <stop
+         style="stop-color:#686868;stop-opacity:1;"
+         offset="0"
+         id="stop6051" />
+      <stop
+         style="stop-color:#f0f0f0;stop-opacity:1;"
+         offset="1"
+         id="stop6053" />
+    </linearGradient>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path4852"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180) translate(10,0)" />
+    </marker>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6083"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-240.0462,-8.633237e-6)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6142"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-42.00893,-30.49544)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6193"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-240.0462,-8.633237e-6)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6216"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000473,0,0,0.790947,-11.16012,50.85693)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6445"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6974"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000474,0,0,0.790947,-314.246,50.85694)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6996"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000473,0,0,0.790947,-85.16012,50.85693)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.90509668"
+     inkscape:cx="390.0539"
+     inkscape:cy="690.49342"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="906"
+     inkscape:window-height="620"
+     inkscape:window-x="0"
+     inkscape:window-y="25">
+    <sodipodi:guide
+       orientation="vertical"
+       position="-1.4285714"
+       id="guide6022" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5976">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       y="245.94225"
+       x="20.198257"
+       height="204.51619"
+       width="174.36833"
+       id="rect6047"
+       style="fill:url(#linearGradient6974);fill-opacity:1;stroke:#686868;stroke-width:0.66539276;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5996"
+       width="134.53746"
+       height="44.537449"
+       x="40.113693"
+       y="266.24374" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="64.796204"
+       y="292.00446"
+       id="text5998"><tspan
+         sodipodi:role="line"
+         id="tspan6000"
+         x="64.796204"
+         y="292.00446"
+         style="font-family:Courier">e7639888bb2f</tspan></text>
+    <g
+       id="g6976">
+      <rect
+         y="327.9104"
+         x="40.113693"
+         height="44.537449"
+         width="134.53746"
+         id="rect6004"
+         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text6006"
+         y="353.67111"
+         x="62.654205"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="font-family:Courier"
+           y="353.67111"
+           x="62.654205"
+           id="tspan6008"
+           sodipodi:role="line">7b064d8bac5e</tspan></text>
+    </g>
+    <path
+       inkscape:connection-end="#rect6004"
+       inkscape:connector-type="polyline"
+       id="path6020"
+       d="M 107.38242,311.15529 L 107.38242,327.53626"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
+    <rect
+       style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6039"
+       width="134.53746"
+       height="44.537449"
+       x="40.113571"
+       y="389.57703" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="64.797073"
+       y="415.33771"
+       id="text6041"><tspan
+         sodipodi:role="line"
+         id="tspan6043"
+         x="64.797073"
+         y="415.33771"
+         style="fill:#979797;fill-opacity:1;font-family:Courier">000000000000</tspan></text>
+    <path
+       inkscape:connection-end="#rect6039"
+       inkscape:connector-type="polyline"
+       id="path6045"
+       d="M 107.38238,372.82195 L 107.38235,389.20301"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#686868;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="19.660461"
+       y="231.36218"
+       id="text6102"><tspan
+         sodipodi:role="line"
+         id="tspan6104"
+         x="19.660461"
+         y="231.36218">History in repository</tspan></text>
+    <rect
+       y="245.94225"
+       x="249.28412"
+       height="204.51619"
+       width="174.36833"
+       id="rect6140"
+       style="fill:url(#linearGradient6996);fill-opacity:1;stroke:#686868;stroke-width:0.66539276;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <g
+       id="g6130"
+       transform="translate(-45.67459,24.38544)">
+      <rect
+         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect6106"
+         width="134.53746"
+         height="44.537449"
+         x="314.87415"
+         y="257.95059" />
+      <text
+         xml:space="preserve"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         x="339.55664"
+         y="283.7113"
+         id="text6108"><tspan
+           sodipodi:role="line"
+           id="tspan6110"
+           x="339.55664"
+           y="283.7113"
+           style="font-family:Courier">7b064d8bac5e</tspan></text>
+    </g>
+    <g
+       id="g6135"
+       transform="translate(-44.96042,49.83106)">
+      <rect
+         inkscape:transform-center-y="102.85714"
+         inkscape:transform-center-x="129.28571"
+         style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect6112"
+         width="134.53746"
+         height="44.537449"
+         x="314.15985"
+         y="326.52203" />
+      <text
+         inkscape:transform-center-y="102.7311"
+         inkscape:transform-center-x="128.69672"
+         xml:space="preserve"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         x="338.84335"
+         y="352.28271"
+         id="text6114"><tspan
+           sodipodi:role="line"
+           id="tspan6116"
+           x="338.84335"
+           y="352.28271"
+           style="fill:#979797;fill-opacity:1;font-family:Courier">000000000000</tspan></text>
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="268.63208"
+       y="270.479"
+       id="text6118"><tspan
+         sodipodi:role="line"
+         id="tspan6120"
+         x="268.63208"
+         y="270.479">First parent</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="268.07544"
+       y="364.49615"
+       id="text6122"><tspan
+         sodipodi:role="line"
+         id="tspan6124"
+         x="268.07544"
+         y="364.49615">Second parent</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="248.61746"
+       y="231.36218"
+       id="text6195"><tspan
+         sodipodi:role="line"
+         id="tspan6197"
+         x="248.61746"
+         y="231.36218">Parents of working directory</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+       d="M 268.82543,318.06163 L 175.02528,336.72225"
+       id="path6266"
+       inkscape:connector-type="polyline"
+       inkscape:connection-end="#g6976"
+       inkscape:connection-start="#g6130" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 665.12232,418.17579 L 665.12232,418.17579"
+       id="path6270"
+       inkscape:connector-type="polyline" />
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/en/figs/wdir.svg	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,348 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg5971"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   sodipodi:docbase="/home/bos/hg/hgbook/en"
+   sodipodi:docname="wdir.svg">
+  <defs
+     id="defs5973">
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         id="path4855"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <linearGradient
+       id="linearGradient6049">
+      <stop
+         style="stop-color:#686868;stop-opacity:1;"
+         offset="0"
+         id="stop6051" />
+      <stop
+         style="stop-color:#f0f0f0;stop-opacity:1;"
+         offset="1"
+         id="stop6053" />
+    </linearGradient>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path4852"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180) translate(10,0)" />
+    </marker>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6083"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-240.0462,-8.633237e-6)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6142"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-42.00893,-30.49544)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6193"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-240.0462,-8.633237e-6)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6216"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000473,0,0,0.790947,-11.16012,50.85693)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6049"
+       id="linearGradient6445"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
+       x1="333.91171"
+       y1="488.79077"
+       x2="508.94543"
+       y2="263.79077" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.90509668"
+     inkscape:cx="390.0539"
+     inkscape:cy="690.49342"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="906"
+     inkscape:window-height="620"
+     inkscape:window-x="0"
+     inkscape:window-y="25">
+    <sodipodi:guide
+       orientation="vertical"
+       position="-1.4285714"
+       id="guide6022" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5976">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g6431"
+       transform="translate(0,-0.137863)">
+      <rect
+         style="fill:url(#linearGradient6445);fill-opacity:1;stroke:#686868;stroke-width:0.66539276;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect6047"
+         width="174.36833"
+         height="204.51619"
+         x="94.198257"
+         y="246.08011" />
+      <rect
+         y="266.38159"
+         x="114.11369"
+         height="44.537449"
+         width="134.53746"
+         id="rect5996"
+         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text5998"
+         y="292.1423"
+         x="138.7962"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="font-family:Courier"
+           y="292.1423"
+           x="138.7962"
+           id="tspan6000"
+           sodipodi:role="line">e7639888bb2f</tspan></text>
+      <rect
+         y="328.04825"
+         x="114.11369"
+         height="44.537449"
+         width="134.53746"
+         id="rect6004"
+         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text6006"
+         y="353.80896"
+         x="136.65421"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="font-family:Courier"
+           y="353.80896"
+           x="136.65421"
+           id="tspan6008"
+           sodipodi:role="line">7b064d8bac5e</tspan></text>
+      <path
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+         d="M 181.38242,311.29315 L 181.38242,327.67412"
+         id="path6020"
+         inkscape:connector-type="polyline"
+         inkscape:connection-end="#rect6004" />
+      <rect
+         y="389.71487"
+         x="114.11357"
+         height="44.537449"
+         width="134.53746"
+         id="rect6039"
+         style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text6041"
+         y="415.47556"
+         x="138.79707"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           style="fill:#979797;fill-opacity:1;font-family:Courier"
+           y="415.47556"
+           x="138.79707"
+           id="tspan6043"
+           sodipodi:role="line">000000000000</tspan></text>
+      <path
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#686868;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+         d="M 181.38238,372.95981 L 181.38235,389.34087"
+         id="path6045"
+         inkscape:connector-type="polyline"
+         inkscape:connection-end="#rect6039" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="93.660484"
+       y="231.36218"
+       id="text6102"><tspan
+         sodipodi:role="line"
+         id="tspan6104"
+         x="93.660484"
+         y="231.36218">History in repository</tspan></text>
+    <g
+       id="g6416">
+      <rect
+         style="fill:url(#linearGradient6232);fill-opacity:1;stroke:#686868;stroke-width:0.66539276;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect6140"
+         width="174.36833"
+         height="204.51619"
+         x="323.28412"
+         y="245.94225" />
+      <g
+         transform="translate(28.32541,24.38544)"
+         id="g6130">
+        <rect
+           y="257.95059"
+           x="314.87415"
+           height="44.537449"
+           width="134.53746"
+           id="rect6106"
+           style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
+        <text
+           id="text6108"
+           y="283.7113"
+           x="339.55664"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           xml:space="preserve"><tspan
+             style="font-family:Courier"
+             y="283.7113"
+             x="339.55664"
+             id="tspan6110"
+             sodipodi:role="line">e7639888bb2f</tspan></text>
+      </g>
+      <g
+         transform="translate(29.03958,49.83106)"
+         id="g6135">
+        <rect
+           y="326.52203"
+           x="314.15985"
+           height="44.537449"
+           width="134.53746"
+           id="rect6112"
+           style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           inkscape:transform-center-x="129.28571"
+           inkscape:transform-center-y="102.85714" />
+        <text
+           id="text6114"
+           y="352.28271"
+           x="338.84335"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+           xml:space="preserve"
+           inkscape:transform-center-x="128.69672"
+           inkscape:transform-center-y="102.7311"><tspan
+             style="fill:#979797;fill-opacity:1;font-family:Courier"
+             y="352.28271"
+             x="338.84335"
+             id="tspan6116"
+             sodipodi:role="line">000000000000</tspan></text>
+      </g>
+      <text
+         id="text6118"
+         y="270.479"
+         x="342.63208"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           y="270.479"
+           x="342.63208"
+           id="tspan6120"
+           sodipodi:role="line">First parent</tspan></text>
+      <text
+         id="text6122"
+         y="364.49615"
+         x="342.07544"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+         xml:space="preserve"><tspan
+           y="364.49615"
+           x="342.07544"
+           id="tspan6124"
+           sodipodi:role="line">Second parent</tspan></text>
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
+       x="322.61746"
+       y="231.36218"
+       id="text6195"><tspan
+         sodipodi:role="line"
+         id="tspan6197"
+         x="322.61746"
+         y="231.36218">Parents of working directory</tspan></text>
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+       d="M 342.82543,299.89384 L 249.02528,293.36123"
+       id="path6266"
+       inkscape:connector-type="polyline"
+       inkscape:connection-start="#g6130"
+       inkscape:connection-end="#rect5996" />
+    <path
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 665.12232,418.17579 L 665.12232,418.17579"
+       id="path6270"
+       inkscape:connector-type="polyline" />
+  </g>
+</svg>
--- a/en/images/feature-branches.dot	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-digraph feature_branches {
-	master -> crypto;
-	master -> filesystems;
-	master -> ipc;
-	master -> memory;
-	master -> network;
-	master -> security;
-}
--- a/en/images/filelog.svg	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,373 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docname="filelog.svg"
-   sodipodi:docbase="/home/arun/hgbook/en"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs4">
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;">
-      <path
-         id="path3128"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-    <linearGradient
-       id="linearGradient2887">
-      <stop
-         style="stop-color:#91cfcf;stop-opacity:1;"
-         offset="0"
-         id="stop2889" />
-      <stop
-         style="stop-color:aqua;stop-opacity:0;"
-         offset="1"
-         id="stop2891" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2795">
-      <stop
-         style="stop-color:#ccc;stop-opacity:1;"
-         offset="0"
-         id="stop2797" />
-      <stop
-         style="stop-color:#ccc;stop-opacity:0;"
-         offset="1"
-         id="stop2799" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2795"
-       id="linearGradient3170"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(121.2183,94.95434)"
-       x1="81.322357"
-       y1="404.34424"
-       x2="201.52036"
-       y2="373.03967" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2887"
-       id="linearGradient3172"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(0,12)"
-       x1="62.634491"
-       y1="503.3392"
-       x2="248.49242"
-       y2="462.94327" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2795"
-       id="linearGradient3174"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.001035,0,0,0.653159,236.7075,153.0415)"
-       x1="81.322357"
-       y1="404.34424"
-       x2="201.52036"
-       y2="373.03967" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2887"
-       id="linearGradient3176"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(0,12)"
-       x1="62.634491"
-       y1="503.3392"
-       x2="248.49242"
-       y2="462.94327" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2795"
-       id="linearGradient3208"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.001035,0,0,0.653159,236.7075,153.0415)"
-       x1="81.322357"
-       y1="404.34424"
-       x2="201.52036"
-       y2="373.03967" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2887"
-       id="linearGradient3210"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(0,12)"
-       x1="62.634491"
-       y1="503.3392"
-       x2="248.49242"
-       y2="462.94327" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2795"
-       id="linearGradient3212"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(121.2183,94.95434)"
-       x1="81.322357"
-       y1="404.34424"
-       x2="201.52036"
-       y2="373.03967" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2887"
-       id="linearGradient3214"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(0,12)"
-       x1="62.634491"
-       y1="503.3392"
-       x2="248.49242"
-       y2="462.94327" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2795"
-       id="linearGradient3256"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.2343775,0,0,0.9981848,103.25588,95.681888)"
-       x1="74.301666"
-       y1="431.67441"
-       x2="260.05884"
-       y2="369.95322" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2887"
-       id="linearGradient3258"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.228929,0,0,0.9972824,-62.037003,13.312997)"
-       x1="62.634491"
-       y1="503.3392"
-       x2="248.49242"
-       y2="462.94327" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2795"
-       id="linearGradient3260"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.2300738,0,0,0.6517275,219.97511,153.61527)"
-       x1="74.387527"
-       y1="431.80576"
-       x2="259.97339"
-       y2="369.82224" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2887"
-       id="linearGradient3262"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.2289272,0,0,0.9972824,-62.036756,13.312985)"
-       x1="62.634491"
-       y1="503.3392"
-       x2="248.49242"
-       y2="462.94327" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     gridtolerance="10000"
-     guidetolerance="10"
-     objecttolerance="10"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="455.8122"
-     inkscape:cy="520"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     inkscape:window-width="1680"
-     inkscape:window-height="970"
-     inkscape:window-x="0"
-     inkscape:window-y="54" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <rect
-       style="opacity:1;fill:#abadf8;fill-opacity:1;stroke:#595959;stroke-width:0.93760371;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect3180"
-       width="273.81375"
-       height="199.06245"
-       x="369.1796"
-       y="351.79019" />
-    <rect
-       style="opacity:1;fill:#a2f69c;fill-opacity:1;stroke:#595959;stroke-width:0.93760341;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect3178"
-       width="273.81339"
-       height="199.06233"
-       x="72.699799"
-       y="351.78983" />
-    <g
-       id="g3144"
-       transform="translate(80.467048,0.71578)">
-      <g
-         id="g2940">
-        <rect
-           style="fill:url(#linearGradient3260);fill-opacity:1;stroke:#000000;stroke-width:0.89536202;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect2914"
-           width="227.38896"
-           height="39.500999"
-           x="311.92496"
-           y="395.08627" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="323.72824"
-           y="416.7626"
-           id="text2918"><tspan
-             sodipodi:role="line"
-             id="tspan2920"
-             x="323.72824"
-             y="416.7626"
-             style="font-family:Courier">.hg/store/data/README.i</tspan></text>
-      </g>
-      <g
-         transform="translate(3.79093e-5,-80.1853)"
-         id="g2945">
-        <g
-           id="g2955">
-          <rect
-             y="475.4968"
-             x="15.550935"
-             height="39.500999"
-             width="227.17694"
-             id="rect2947"
-             style="fill:url(#linearGradient3262);fill-opacity:1;stroke:#000000;stroke-width:1.10706258;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-          <text
-             id="text2949"
-             y="498.35123"
-             x="31.230644"
-             style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-             xml:space="preserve"><tspan
-               style="font-family:Courier"
-               y="498.35123"
-               x="31.230644"
-               id="tspan2951"
-               sodipodi:role="line">README</tspan></text>
-        </g>
-      </g>
-      <path
-         inkscape:connector-type="polyline"
-         id="path2960"
-         d="M 242.94685,414.91115 C 242.94685,414.91115 293.61127,415.26754 310.16269,415.38633"
-         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.02046943px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-         sodipodi:nodetypes="cz" />
-    </g>
-    <g
-       id="g3156"
-       transform="translate(80.467048,0.71578)">
-      <g
-         transform="translate(116,0)"
-         id="g2831">
-        <rect
-           style="fill:url(#linearGradient3256);fill-opacity:1;stroke:#000000;stroke-width:1.11001658;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect1906"
-           width="228.18446"
-           height="60.499123"
-           x="195.52719"
-           y="465.51859" />
-        <g
-           id="g2803"
-           transform="translate(-0.893671,1.833581)">
-          <text
-             id="text1884"
-             y="483.92801"
-             x="208.95944"
-             style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-             xml:space="preserve"><tspan
-               style="font-family:Courier"
-               y="483.92801"
-               x="208.95944"
-               id="tspan1886"
-               sodipodi:role="line">.hg/store/data/src/hello.c.d</tspan></text>
-          <text
-             id="text1888"
-             y="507.79309"
-             x="208.95944"
-             style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-             xml:space="preserve"><tspan
-               style="font-family:Courier"
-               y="507.79309"
-               x="208.95944"
-               id="tspan1890"
-               sodipodi:role="line">.hg/store/data/src/hello.c.i</tspan></text>
-        </g>
-      </g>
-      <g
-         id="g2907">
-        <rect
-           style="fill:url(#linearGradient3258);fill-opacity:1;stroke:#000000;stroke-width:1.10706329;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect2843"
-           width="227.17728"
-           height="39.500999"
-           x="15.550805"
-           y="475.4968" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="31.230644"
-           y="498.35123"
-           id="text2847"><tspan
-             sodipodi:role="line"
-             id="tspan2849"
-             x="31.230644"
-             y="498.35123"
-             style="font-family:Courier">src/hello.c</tspan></text>
-      </g>
-      <path
-         inkscape:connection-end="#g2831"
-         inkscape:connection-start="#g2907"
-         inkscape:connector-type="polyline"
-         id="path2962"
-         d="M 242.4315,495.88043 C 242.4315,495.88043 292.8861,495.99942 310.04102,496.03909"
-         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-         sodipodi:nodetypes="cs" />
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="98.496666"
-       y="373.96353"
-       id="text3216"><tspan
-         sodipodi:role="line"
-         id="tspan3218"
-         x="98.496666"
-         y="373.96353">Working directory</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="391.39197"
-       y="373.96353"
-       id="text3228"><tspan
-         sodipodi:role="line"
-         id="tspan3230"
-         x="391.39197"
-         y="373.96353">Repository</tspan></text>
-  </g>
-</svg>
Binary file en/images/kdiff3.png has changed
--- a/en/images/metadata.svg	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,328 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.44.1"
-   sodipodi:docname="metadata.svg"
-   sodipodi:docbase="/home/bos/hg/hgbook/en">
-  <defs
-     id="defs4">
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;">
-      <path
-         id="path2944"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     gridtolerance="10000"
-     guidetolerance="10"
-     objecttolerance="10"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="232.14286"
-     inkscape:cy="490.68696"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     inkscape:window-width="906"
-     inkscape:window-height="620"
-     inkscape:window-x="181"
-     inkscape:window-y="58" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a7a7a7;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;display:inline"
-       d="M 326.94646,467.18359 L 326.94646,510.98123"
-       id="path1910"
-       inkscape:connector-type="polyline"
-       inkscape:connection-end="#rect2962"
-       inkscape:connection-start="#rect2764" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a7a7a7;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;display:inline"
-       d="M 326.94646,531.98123 L 326.94646,591.77887"
-       id="path1912"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#rect2962"
-       inkscape:connection-end="#rect3000" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a7a7a7;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;display:inline"
-       d="M 316.1622,531.98123 L 192.30212,652.57648"
-       id="path1916"
-       inkscape:connector-type="polyline"
-       inkscape:connection-end="#rect3038"
-       inkscape:connection-start="#rect2962" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#484848;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4.5, 1.5;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 254.23217,467.18359 L 254.23216,510.98123"
-       id="path3088"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#rect1872"
-       inkscape:connection-end="#rect2960" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#484848;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4.5, 1.5;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 254.23215,531.98123 L 254.23215,591.77887"
-       id="path3090"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#rect2960"
-       inkscape:connection-end="#rect2998" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#484848;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4.5, 1.5;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 248.84002,531.98123 L 186.90999,652.57648"
-       id="path3092"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#rect2960"
-       inkscape:connection-end="#rect3038" />
-    <rect
-       style="fill:#7b7df5;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect1872"
-       width="51.42857"
-       height="20"
-       x="228.51788"
-       y="446.68359" />
-    <rect
-       style="fill:#cacbfb;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect2764"
-       width="51.42857"
-       height="20"
-       x="301.23218"
-       y="446.68359" />
-    <rect
-       style="fill:#cacbfb;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect2766"
-       width="51.42857"
-       height="20"
-       x="155.80359"
-       y="446.68359" />
-    <rect
-       style="fill:#cacbfb;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect2768"
-       width="51.42857"
-       height="20"
-       x="83.089294"
-       y="446.68359" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 135.01786,456.68359 L 155.30359,456.68359"
-       id="path2770"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#rect2768"
-       inkscape:connection-end="#rect2766" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 207.73216,456.68359 L 228.01788,456.68359"
-       id="path2772"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#rect2766"
-       inkscape:connection-end="#rect1872" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 280.44645,456.68359 L 300.73218,456.68359"
-       id="path2774"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#rect1872"
-       inkscape:connection-end="#rect2764" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 62.303571,456.68359 L 82.589294,456.68359"
-       id="path2778"
-       inkscape:connector-type="polyline"
-       inkscape:connection-end="#rect2768" />
-    <rect
-       style="fill:#84f57b;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect2960"
-       width="51.42857"
-       height="20"
-       x="228.51787"
-       y="511.48123" />
-    <rect
-       style="fill:#cefbca;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect2962"
-       width="51.42857"
-       height="20"
-       x="301.23218"
-       y="511.48123" />
-    <rect
-       style="fill:#cefbca;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect2964"
-       width="51.42857"
-       height="20"
-       x="155.80357"
-       y="511.48123" />
-    <rect
-       style="fill:#cefbca;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect2966"
-       width="51.42857"
-       height="20"
-       x="83.089287"
-       y="511.48123" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 135.01786,521.48121 L 155.30359,521.48121"
-       id="path2968"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 207.73216,521.48121 L 228.01788,521.48121"
-       id="path2970"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 280.44645,521.48121 L 300.73218,521.48121"
-       id="path2972"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 62.30358,521.48121 L 82.5893,521.48121"
-       id="path2974"
-       inkscape:connector-type="polyline" />
-    <rect
-       style="fill:#f57b8f;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect2998"
-       width="51.42857"
-       height="20"
-       x="228.51787"
-       y="592.27887" />
-    <rect
-       style="fill:#fbcad2;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect3000"
-       width="51.42857"
-       height="20"
-       x="301.23218"
-       y="592.27887" />
-    <rect
-       style="fill:#fbcad2;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect3002"
-       width="51.42857"
-       height="20"
-       x="155.80357"
-       y="592.27887" />
-    <rect
-       style="fill:#fbcad2;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect3004"
-       width="51.42857"
-       height="20"
-       x="83.089287"
-       y="592.27887" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 135.01786,602.27884 L 155.30359,602.27884"
-       id="path3006"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 207.73216,602.27884 L 228.01788,602.27884"
-       id="path3008"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 280.44645,602.27884 L 300.73218,602.27884"
-       id="path3010"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 62.30358,602.27884 L 82.5893,602.27884"
-       id="path3012"
-       inkscape:connector-type="polyline" />
-    <rect
-       style="fill:#ffced6;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect3034"
-       width="51.42857"
-       height="20"
-       x="228.51787"
-       y="653.07648" />
-    <rect
-       style="fill:#f57b8f;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect3038"
-       width="51.42857"
-       height="20"
-       x="155.80357"
-       y="653.07648" />
-    <rect
-       style="fill:#fbcad2;fill-opacity:1;stroke:#595959;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect3040"
-       width="51.42857"
-       height="20"
-       x="83.089287"
-       y="653.07648" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 135.01786,663.07646 L 155.30359,663.07646"
-       id="path3042"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 207.73216,663.07646 L 228.01788,663.07646"
-       id="path3044"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#747474;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 62.30358,663.07646 L 82.5893,663.07646"
-       id="path3048"
-       inkscape:connector-type="polyline" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="82.072548"
-       y="432.64789"
-       id="text3094"><tspan
-         sodipodi:role="line"
-         id="tspan3096"
-         x="82.072548"
-         y="432.64789">Changelog</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="82.306923"
-       y="498.97327"
-       id="text3098"><tspan
-         sodipodi:role="line"
-         id="tspan3100"
-         x="82.306923"
-         y="498.97327">Manifest</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="82.14286"
-       y="580.08569"
-       id="text3102"><tspan
-         sodipodi:role="line"
-         id="tspan3104"
-         x="82.14286"
-         y="580.08569">Filelogs</tspan></text>
-  </g>
-</svg>
--- a/en/images/mq-stack.svg	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,270 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.43"
-   sodipodi:docname="mq-stack.svg"
-   sodipodi:docbase="/home/bos/hg/hgbook/en">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4142136"
-     inkscape:cx="299.33323"
-     inkscape:cy="815.646"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     inkscape:window-width="1014"
-     inkscape:window-height="689"
-     inkscape:window-x="0"
-     inkscape:window-y="25" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <rect
-       style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#3c3c3c;stroke-width:1.05063355px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="rect1307"
-       width="202.93683"
-       height="24.243662"
-       x="230.01944"
-       y="221.70146" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="237.89606"
-       y="237.13383"
-       id="text1309"><tspan
-         sodipodi:role="line"
-         id="tspan1311"
-         x="237.89606"
-         y="237.13383">prevent-compiler-reorder.patch</tspan></text>
-    <rect
-       style="fill:#7979ff;fill-opacity:0.875;fill-rule:evenodd;stroke:#3c3c3c;stroke-width:1.05063355px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="rect1320"
-       width="202.93683"
-       height="24.243662"
-       x="230.01936"
-       y="251.34325" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="237.89598"
-       y="266.77563"
-       id="text1322"><tspan
-         sodipodi:role="line"
-         id="tspan1324"
-         x="237.89598"
-         y="266.77563">namespace-cleanup.patch</tspan></text>
-    <rect
-       style="fill:#7979ff;fill-opacity:0.875;fill-rule:evenodd;stroke:#3c3c3c;stroke-width:1.05063355px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="rect2217"
-       width="202.93683"
-       height="24.243662"
-       x="230.01936"
-       y="280.98505" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="237.89598"
-       y="296.41742"
-       id="text2219"><tspan
-         sodipodi:role="line"
-         id="tspan2221"
-         x="237.89598"
-         y="296.41742">powerpc-port-fixes.patch</tspan></text>
-    <rect
-       style="fill:#7979ff;fill-opacity:0.875;fill-rule:evenodd;stroke:#3c3c3c;stroke-width:1.05063355px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="rect3114"
-       width="202.93683"
-       height="24.243662"
-       x="230.01936"
-       y="310.6268" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="237.89598"
-       y="326.05917"
-       id="text3116"><tspan
-         sodipodi:role="line"
-         id="tspan3118"
-         x="237.89598"
-         y="326.05917">report-devinfo-correctly.patch</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="200.01021"
-       y="191.68094"
-       id="text3170"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan3172"
-         x="200.01021"
-         y="191.68094"
-         style="font-size:48px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">{</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:15.25329685px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="255.26627"
-       y="248.79449"
-       id="text3190"
-       sodipodi:linespacing="125%"
-       transform="scale(0.786716,1.271107)"><tspan
-         sodipodi:role="line"
-         id="tspan3192"
-         x="255.26627"
-         y="248.79449"
-         style="font-size:61.01318741px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">{</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="195.86807"
-       y="173.17117"
-       id="text4085"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4087"
-         x="195.86807"
-         y="173.17117"
-         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;font-family:Bitstream Vera Sans">present in series,</tspan><tspan
-         sodipodi:role="line"
-         x="195.86807"
-         y="188.17117"
-         id="tspan4089"
-         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;font-family:Bitstream Vera Sans">but not applied</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="195.0712"
-       y="288.91745"
-       id="text4091"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4093"
-         x="195.0712"
-         y="288.91745"
-         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;font-family:Bitstream Vera Sans">patches applied,</tspan><tspan
-         sodipodi:role="line"
-         x="195.0712"
-         y="303.91745"
-         id="tspan4111"
-         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;font-family:Bitstream Vera Sans">changesets present</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="195.0712"
-       y="229.28813"
-       id="text4095"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4097"
-         x="195.0712"
-         y="229.28813"
-         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;font-family:Bitstream Vera Sans">topmost</tspan><tspan
-         sodipodi:role="line"
-         x="195.0712"
-         y="244.28813"
-         id="tspan4109"
-         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;font-family:Bitstream Vera Sans">applied patch</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;opacity:1;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="450.4975"
-       y="238.29692"
-       id="text4137"><tspan
-         sodipodi:role="line"
-         id="tspan4139"
-         x="450.4975"
-         y="238.29692">201ad3209902</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;opacity:1;fill:#989898;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="450.05804"
-       y="267.93872"
-       id="text4141"><tspan
-         sodipodi:role="line"
-         id="tspan4143"
-         x="450.05804"
-         y="267.93872">126b84e593ae</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;opacity:1;fill:#989898;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="450.6557"
-       y="297.58051"
-       id="text4145"><tspan
-         sodipodi:role="line"
-         id="tspan4147"
-         x="450.6557"
-         y="297.58051">a655daf15409</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;opacity:1;fill:#989898;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="450.71429"
-       y="327.22226"
-       id="text4149"><tspan
-         sodipodi:role="line"
-         id="tspan4151"
-         x="450.71429"
-         y="327.22226">e50d59aaea3a</tspan></text>
-    <rect
-       style="fill:#d7d7ff;fill-opacity:0.875;fill-rule:evenodd;stroke:#a6a6a6;stroke-width:1.05063355px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="rect3106"
-       width="202.93683"
-       height="24.243662"
-       x="230.01936"
-       y="150.41792" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="237.89598"
-       y="165.8503"
-       id="text3108"><tspan
-         sodipodi:role="line"
-         id="tspan3110"
-         x="237.89598"
-         y="165.8503">forbid-illegal-params.patch</tspan></text>
-    <rect
-       style="fill:#d7d7ff;fill-opacity:0.875;fill-rule:evenodd;stroke:#a6a6a6;stroke-width:1.05063355px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="rect2241"
-       width="202.93683"
-       height="24.243662"
-       x="230.16466"
-       y="180.05968" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="238.04128"
-       y="195.49205"
-       id="text2243"><tspan
-         sodipodi:role="line"
-         id="tspan2245"
-         x="238.04128"
-         y="195.49205">fix-memory-leak.patch</tspan></text>
-  </g>
-</svg>
Binary file en/images/note.png has changed
--- a/en/images/revlog.svg	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1155 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.44.1"
-   sodipodi:docbase="/home/bos/hg/hgbook/en"
-   sodipodi:docname="revlog.svg">
-  <defs
-     id="defs4">
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;">
-      <path
-         id="path4852"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-    <linearGradient
-       id="linearGradient3092">
-      <stop
-         style="stop-color:#44436f;stop-opacity:1;"
-         offset="0"
-         id="stop3094" />
-      <stop
-         style="stop-color:#abade5;stop-opacity:1;"
-         offset="1"
-         id="stop3096" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3092"
-       id="linearGradient3118"
-       gradientUnits="userSpaceOnUse"
-       x1="176.16635"
-       y1="405.21934"
-       x2="417.11935"
-       y2="405.21934" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3092"
-       id="linearGradient3120"
-       gradientUnits="userSpaceOnUse"
-       x1="176.16635"
-       y1="405.21934"
-       x2="417.11935"
-       y2="405.21934" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3092"
-       id="linearGradient3129"
-       gradientUnits="userSpaceOnUse"
-       x1="176.16635"
-       y1="405.21934"
-       x2="417.11935"
-       y2="405.21934"
-       gradientTransform="translate(-0.928574,-1.428574)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3092"
-       id="linearGradient3133"
-       gradientUnits="userSpaceOnUse"
-       x1="176.16635"
-       y1="405.21934"
-       x2="417.11935"
-       y2="405.21934"
-       gradientTransform="translate(-0.928574,-1.428574)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3092"
-       id="linearGradient3708"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.423343,0,0,0.423343,138.874,-67.01732)"
-       x1="175.23776"
-       y1="509.98154"
-       x2="416.29077"
-       y2="297.49997" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3092"
-       id="linearGradient5164"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.423343,0,0,0.423343,198.249,247.4358)"
-       x1="175.23776"
-       y1="509.98154"
-       x2="416.29077"
-       y2="297.49997" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3092"
-       id="linearGradient5584"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.423343,0,0,0.423343,143.9081,371.2915)"
-       x1="175.23776"
-       y1="509.98154"
-       x2="416.29077"
-       y2="297.49997" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3092"
-       id="linearGradient5784"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.423343,0,0,0.423343,76.37397,152.137)"
-       x1="175.23776"
-       y1="509.98154"
-       x2="416.29077"
-       y2="297.49997" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3092"
-       id="linearGradient5786"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.423343,0,0,0.423343,198.249,152.137)"
-       x1="175.23776"
-       y1="509.98154"
-       x2="416.29077"
-       y2="297.49997" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3092"
-       id="linearGradient5895"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.423343,0,0,0.423343,198.0215,261.7142)"
-       x1="175.23776"
-       y1="509.98154"
-       x2="416.29077"
-       y2="297.49997" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3092"
-       id="linearGradient5958"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.423343,0,0,0.423343,137.1978,42.55987)"
-       x1="175.23776"
-       y1="509.98154"
-       x2="416.29077"
-       y2="297.49997" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     gridtolerance="10000"
-     guidetolerance="10"
-     objecttolerance="10"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.64"
-     inkscape:cx="566.02368"
-     inkscape:cy="688.16826"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     inkscape:window-width="906"
-     inkscape:window-height="620"
-     inkscape:window-x="29"
-     inkscape:window-y="79"
-     inkscape:connector-spacing="11" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <rect
-       y="168.74846"
-       x="211.58516"
-       height="89.506805"
-       width="101.60232"
-       id="rect3068"
-       style="fill:url(#linearGradient5958);fill-opacity:1;stroke:black;stroke-width:0.48811448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <g
-       id="g3215"
-       transform="matrix(0.423343,0,0,0.423343,137.1977,42.55985)">
-      <rect
-         y="447.71451"
-         x="299.67859"
-         height="48.571426"
-         width="103.14286"
-         id="rect2899"
-         style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text2903"
-         y="464.8139"
-         x="308.89639"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           y="464.8139"
-           x="308.89639"
-           sodipodi:role="line"
-           id="tspan2905">Second parent</tspan></text>
-      <text
-         id="text2907"
-         y="485.50256"
-         x="308.20175"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="font-family:Courier"
-           y="485.50256"
-           x="308.20175"
-           id="tspan2909"
-           sodipodi:role="line">32bf9a5f22c0</tspan></text>
-    </g>
-    <g
-       id="g3250"
-       transform="matrix(0.423343,0,0,0.423343,137.1977,42.55986)">
-      <rect
-         y="311.28598"
-         x="188.6071"
-         height="48.571426"
-         width="103.14286"
-         id="rect2936"
-         style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text2940"
-         y="328.38538"
-         x="197.82495"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           y="328.38538"
-           x="197.82495"
-           sodipodi:role="line"
-           id="tspan2942">Revision hash</tspan></text>
-      <text
-         id="text2944"
-         y="349.07404"
-         x="197.13031"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="font-family:Courier"
-           y="349.07404"
-           x="197.13031"
-           id="tspan2946"
-           sodipodi:role="line">34b8b7a15ea1</tspan></text>
-    </g>
-    <g
-       id="g3243"
-       transform="matrix(0.423343,0,0,0.423343,137.6664,43.91853)">
-      <rect
-         y="363.07654"
-         x="187.5"
-         height="75"
-         width="213.85715"
-         id="rect2950"
-         style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text2958"
-         y="400.86459"
-         x="196.02321"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="fill:black;fill-opacity:1;font-family:Courier"
-           y="400.86459"
-           x="196.02321"
-           id="tspan2960"
-           sodipodi:role="line">...</tspan></text>
-      <text
-         id="text2954"
-         y="380.17593"
-         x="196.71785"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           y="380.17593"
-           x="196.71785"
-           sodipodi:role="line"
-           id="tspan2956"
-           style="fill:black;fill-opacity:1">Revision data (delta or snapshot)</tspan></text>
-    </g>
-    <g
-       id="g5529"
-       transform="translate(-6.710312,-8.165836e-6)">
-      <rect
-         style="fill:url(#linearGradient5584);fill-opacity:1;stroke:black;stroke-width:0.48811448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect3509"
-         width="101.60232"
-         height="89.506805"
-         x="218.29547"
-         y="497.4801" />
-      <g
-         transform="matrix(0.423343,0,0,0.423343,143.908,371.2915)"
-         id="g3513">
-        <g
-           id="g3515">
-          <rect
-             y="447.72418"
-             x="188.6071"
-             height="48.571426"
-             width="103.14286"
-             id="rect3517"
-             style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-          <text
-             id="text3519"
-             y="464.82358"
-             x="197.82495"
-             style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-             xml:space="preserve"><tspan
-               y="464.82358"
-               x="197.82495"
-               sodipodi:role="line"
-               id="tspan3521">First parent</tspan></text>
-          <text
-             id="text3523"
-             y="485.51224"
-             x="197.13031"
-             style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-             xml:space="preserve"><tspan
-               style="font-family:Courier"
-               y="485.51224"
-               x="197.13031"
-               id="tspan3525"
-               sodipodi:role="line">000000000000</tspan></text>
-        </g>
-        <g
-           id="g3527">
-          <rect
-             y="447.71451"
-             x="299.67859"
-             height="48.571426"
-             width="103.14286"
-             id="rect3529"
-             style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-          <text
-             id="text3531"
-             y="464.8139"
-             x="308.89639"
-             style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-             xml:space="preserve"><tspan
-               y="464.8139"
-               x="308.89639"
-               sodipodi:role="line"
-               id="tspan3533">Second parent</tspan></text>
-          <text
-             id="text3535"
-             y="485.50256"
-             x="308.20175"
-             style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-             xml:space="preserve"><tspan
-               style="font-family:Courier"
-               y="485.50256"
-               x="308.20175"
-               id="tspan3537"
-               sodipodi:role="line">000000000000</tspan></text>
-        </g>
-      </g>
-      <g
-         transform="matrix(0.423343,0,0,0.423343,143.908,371.2915)"
-         id="g3539">
-        <rect
-           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3541"
-           width="103.14286"
-           height="48.571426"
-           x="188.6071"
-           y="311.28598" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="197.82495"
-           y="328.38538"
-           id="text3543"><tspan
-             id="tspan3545"
-             sodipodi:role="line"
-             x="197.82495"
-             y="328.38538">Revision hash</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="197.13031"
-           y="349.07404"
-           id="text3547"><tspan
-             sodipodi:role="line"
-             id="tspan3549"
-             x="197.13031"
-             y="349.07404"
-             style="font-family:Courier">ff9dc8bc2a8b</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.423343,0,0,0.423343,144.3767,372.6502)"
-         id="g3551">
-        <rect
-           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3553"
-           width="213.85715"
-           height="75"
-           x="187.5"
-           y="363.07654" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="196.02321"
-           y="400.86459"
-           id="text3555"><tspan
-             sodipodi:role="line"
-             id="tspan3557"
-             x="196.02321"
-             y="400.86459"
-             style="fill:black;fill-opacity:1;font-family:Courier">...</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="196.71785"
-           y="380.17593"
-           id="text3559"><tspan
-             style="fill:black;fill-opacity:1"
-             id="tspan3561"
-             sodipodi:role="line"
-             x="196.71785"
-             y="380.17593">Revision data (delta or snapshot)</tspan></text>
-      </g>
-    </g>
-    <g
-       id="g4868"
-       transform="translate(-1.676208,-2.342463e-5)">
-      <rect
-         style="fill:url(#linearGradient3708);fill-opacity:1;stroke:black;stroke-width:0.48811448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect3567"
-         width="101.60232"
-         height="89.506805"
-         x="213.26137"
-         y="59.171272" />
-      <g
-         transform="matrix(0.423343,0,0,0.423343,138.8739,-67.01734)"
-         id="g3573">
-        <rect
-           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3575"
-           width="103.14286"
-           height="48.571426"
-           x="188.6071"
-           y="447.72418" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="197.82495"
-           y="464.82358"
-           id="text3577"><tspan
-             id="tspan3579"
-             sodipodi:role="line"
-             x="197.82495"
-             y="464.82358">First parent</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="197.13031"
-           y="485.51224"
-           id="text3581"><tspan
-             sodipodi:role="line"
-             id="tspan3583"
-             x="197.13031"
-             y="485.51224"
-             style="font-family:Courier">34b8b7a15ea1</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.423343,0,0,0.423343,138.8739,-67.01734)"
-         id="g3585">
-        <rect
-           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3587"
-           width="103.14286"
-           height="48.571426"
-           x="299.67859"
-           y="447.71451" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="308.89639"
-           y="464.8139"
-           id="text3589"><tspan
-             id="tspan3591"
-             sodipodi:role="line"
-             x="308.89639"
-             y="464.8139">Second parent</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="308.20175"
-           y="485.50256"
-           id="text3593"><tspan
-             sodipodi:role="line"
-             id="tspan3595"
-             x="308.20175"
-             y="485.50256"
-             style="font-family:Courier">000000000000</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.423343,0,0,0.423343,138.8739,-67.01733)"
-         id="g3597">
-        <rect
-           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3599"
-           width="103.14286"
-           height="48.571426"
-           x="188.6071"
-           y="311.28598" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="197.82495"
-           y="328.38538"
-           id="text3601"><tspan
-             id="tspan3603"
-             sodipodi:role="line"
-             x="197.82495"
-             y="328.38538">Revision hash</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="197.13031"
-           y="349.07404"
-           id="text3605"><tspan
-             sodipodi:role="line"
-             id="tspan3607"
-             x="197.13031"
-             y="349.07404"
-             style="font-family:Courier">1b67dc96f27a</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.423343,0,0,0.423343,139.3426,-65.65866)"
-         id="g3609">
-        <rect
-           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3611"
-           width="213.85715"
-           height="75"
-           x="187.5"
-           y="363.07654" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="196.02321"
-           y="400.86459"
-           id="text3613"><tspan
-             sodipodi:role="line"
-             id="tspan3615"
-             x="196.02321"
-             y="400.86459"
-             style="fill:black;fill-opacity:1;font-family:Courier">...</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="196.71785"
-           y="380.17593"
-           id="text3617"><tspan
-             style="fill:black;fill-opacity:1"
-             id="tspan3619"
-             sodipodi:role="line"
-             x="196.71785"
-             y="380.17593">Revision data (delta or snapshot)</tspan></text>
-      </g>
-    </g>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)"
-       d="M 240.78255,143.08593 L 241.42595,171.75349"
-       id="path3801"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#g3573"
-       inkscape:connection-end="#g3250" />
-    <g
-       id="g5677">
-      <rect
-         style="fill:url(#linearGradient5784);fill-opacity:1;stroke:black;stroke-width:0.48811448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect3393"
-         width="101.60232"
-         height="89.506805"
-         x="150.76137"
-         y="278.32565" />
-      <g
-         transform="matrix(0.423343,0,0,0.423343,76.37397,152.137)"
-         id="g3399">
-        <rect
-           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3401"
-           width="103.14286"
-           height="48.571426"
-           x="188.6071"
-           y="447.72418" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="197.82495"
-           y="464.82358"
-           id="text3403"><tspan
-             id="tspan3405"
-             sodipodi:role="line"
-             x="197.82495"
-             y="464.82358">First parent</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="197.13031"
-           y="485.51224"
-           id="text3407"><tspan
-             sodipodi:role="line"
-             id="tspan3409"
-             x="197.13031"
-             y="485.51224"
-             style="font-family:Courier">ff9dc8bc2a8b</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.423343,0,0,0.423343,76.37397,152.137)"
-         id="g3411">
-        <rect
-           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3413"
-           width="103.14286"
-           height="48.571426"
-           x="299.67859"
-           y="447.71451" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="308.89639"
-           y="464.8139"
-           id="text3415"><tspan
-             id="tspan3417"
-             sodipodi:role="line"
-             x="308.89639"
-             y="464.8139">Second parent</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="308.20175"
-           y="485.50256"
-           id="text3419"><tspan
-             sodipodi:role="line"
-             id="tspan3421"
-             x="308.20175"
-             y="485.50256"
-             style="font-family:Courier">000000000000</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.423343,0,0,0.423343,76.37397,152.137)"
-         id="g3423">
-        <rect
-           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3425"
-           width="103.14286"
-           height="48.571426"
-           x="188.6071"
-           y="311.28598" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="197.82495"
-           y="328.38538"
-           id="text3427"><tspan
-             id="tspan3429"
-             sodipodi:role="line"
-             x="197.82495"
-             y="328.38538">Revision hash</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="197.13031"
-           y="349.07404"
-           id="text3431"><tspan
-             sodipodi:role="line"
-             id="tspan3433"
-             x="197.13031"
-             y="349.07404"
-             style="font-family:Courier">5b80c922ebdd</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.423343,0,0,0.423343,76.84265,153.4957)"
-         id="g3435">
-        <rect
-           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3437"
-           width="213.85715"
-           height="75"
-           x="187.5"
-           y="363.07654" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="196.02321"
-           y="400.86459"
-           id="text3439"><tspan
-             sodipodi:role="line"
-             id="tspan3441"
-             x="196.02321"
-             y="400.86459"
-             style="fill:black;fill-opacity:1;font-family:Courier">...</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="196.71785"
-           y="380.17593"
-           id="text3443"><tspan
-             style="fill:black;fill-opacity:1"
-             id="tspan3445"
-             sodipodi:role="line"
-             x="196.71785"
-             y="380.17593">Revision data (delta or snapshot)</tspan></text>
-      </g>
-    </g>
-    <g
-       id="g5646"
-       transform="translate(-0.227432,0)">
-      <rect
-         style="fill:url(#linearGradient5786);fill-opacity:1;stroke:black;stroke-width:0.48811448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect3451"
-         width="101.60232"
-         height="89.506805"
-         x="272.63638"
-         y="278.32565" />
-      <g
-         transform="matrix(0.423343,0,0,0.423343,198.2489,152.137)"
-         id="g3457">
-        <rect
-           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3459"
-           width="103.14286"
-           height="48.571426"
-           x="188.6071"
-           y="447.72418" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="197.82495"
-           y="464.82358"
-           id="text3461"><tspan
-             id="tspan3463"
-             sodipodi:role="line"
-             x="197.82495"
-             y="464.82358">First parent</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="197.13031"
-           y="485.51224"
-           id="text3465"><tspan
-             sodipodi:role="line"
-             id="tspan3467"
-             x="197.13031"
-             y="485.51224"
-             style="font-family:Courier">ecacb6b4c9fd</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.423343,0,0,0.423343,198.2489,152.137)"
-         id="g3469">
-        <rect
-           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3471"
-           width="103.14286"
-           height="48.571426"
-           x="299.67859"
-           y="447.71451" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="308.89639"
-           y="464.8139"
-           id="text3473"><tspan
-             id="tspan3475"
-             sodipodi:role="line"
-             x="308.89639"
-             y="464.8139">Second parent</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="308.20175"
-           y="485.50256"
-           id="text3477"><tspan
-             sodipodi:role="line"
-             id="tspan3479"
-             x="308.20175"
-             y="485.50256"
-             style="font-family:Courier">000000000000</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.423343,0,0,0.423343,198.2489,152.137)"
-         id="g3481">
-        <rect
-           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3483"
-           width="103.14286"
-           height="48.571426"
-           x="188.6071"
-           y="311.28598" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="197.82495"
-           y="328.38538"
-           id="text3485"><tspan
-             id="tspan3487"
-             sodipodi:role="line"
-             x="197.82495"
-             y="328.38538">Revision hash</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="197.13031"
-           y="349.07404"
-           id="text3489"><tspan
-             sodipodi:role="line"
-             id="tspan3491"
-             x="197.13031"
-             y="349.07404"
-             style="font-family:Courier">32bf9a5f22c0</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.423343,0,0,0.423343,198.7176,153.4957)"
-         id="g3493">
-        <rect
-           style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3495"
-           width="213.85715"
-           height="75"
-           x="187.5"
-           y="363.07654" />
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="196.02321"
-           y="400.86459"
-           id="text3497"><tspan
-             sodipodi:role="line"
-             id="tspan3499"
-             x="196.02321"
-             y="400.86459"
-             style="fill:black;fill-opacity:1;font-family:Courier">...</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           x="196.71785"
-           y="380.17593"
-           id="text3501"><tspan
-             style="fill:black;fill-opacity:1"
-             id="tspan3503"
-             sodipodi:role="line"
-             x="196.71785"
-             y="380.17593">Revision data (delta or snapshot)</tspan></text>
-      </g>
-    </g>
-    <rect
-       y="387.90286"
-       x="272.40894"
-       height="89.506805"
-       width="101.60232"
-       id="rect5081"
-       style="fill:url(#linearGradient5895);fill-opacity:1;stroke:black;stroke-width:0.48811448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <g
-       id="g5087"
-       transform="matrix(0.423343,0,0,0.423343,198.0214,261.7142)">
-      <rect
-         y="447.72418"
-         x="188.6071"
-         height="48.571426"
-         width="103.14286"
-         id="rect5089"
-         style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text5091"
-         y="464.82358"
-         x="197.82495"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           y="464.82358"
-           x="197.82495"
-           sodipodi:role="line"
-           id="tspan5093">First parent</tspan></text>
-      <text
-         id="text5095"
-         y="485.51224"
-         x="197.13031"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="font-family:Courier"
-           y="485.51224"
-           x="197.13031"
-           id="tspan5097"
-           sodipodi:role="line">ff9dc8bc2a8b</tspan></text>
-    </g>
-    <g
-       id="g5099"
-       transform="matrix(0.423343,0,0,0.423343,198.0214,261.7142)">
-      <rect
-         y="447.71451"
-         x="299.67859"
-         height="48.571426"
-         width="103.14286"
-         id="rect5101"
-         style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text5103"
-         y="464.8139"
-         x="308.89639"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           y="464.8139"
-           x="308.89639"
-           sodipodi:role="line"
-           id="tspan5105">Second parent</tspan></text>
-      <text
-         id="text5107"
-         y="485.50256"
-         x="308.20175"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="font-family:Courier"
-           y="485.50256"
-           x="308.20175"
-           id="tspan5109"
-           sodipodi:role="line">000000000000</tspan></text>
-    </g>
-    <g
-       id="g5111"
-       transform="matrix(0.423343,0,0,0.423343,198.0214,261.7142)">
-      <rect
-         y="311.28598"
-         x="188.6071"
-         height="48.571426"
-         width="103.14286"
-         id="rect5113"
-         style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text5115"
-         y="328.38538"
-         x="197.82495"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           y="328.38538"
-           x="197.82495"
-           sodipodi:role="line"
-           id="tspan5117">Revision hash</tspan></text>
-      <text
-         id="text5119"
-         y="349.07404"
-         x="197.13031"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="font-family:Courier"
-           y="349.07404"
-           x="197.13031"
-           id="tspan5121"
-           sodipodi:role="line">ecacb6b4c9fd</tspan></text>
-    </g>
-    <g
-       id="g5123"
-       transform="matrix(0.423343,0,0,0.423343,198.4901,263.0729)">
-      <rect
-         y="363.07654"
-         x="187.5"
-         height="75"
-         width="213.85715"
-         id="rect5125"
-         style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text5127"
-         y="400.86459"
-         x="196.02321"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="fill:black;fill-opacity:1;font-family:Courier"
-           y="400.86459"
-           x="196.02321"
-           id="tspan5129"
-           sodipodi:role="line">...</tspan></text>
-      <text
-         id="text5131"
-         y="380.17593"
-         x="196.71785"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           y="380.17593"
-           x="196.71785"
-           sodipodi:role="line"
-           id="tspan5133"
-           style="fill:black;fill-opacity:1">Revision data (delta or snapshot)</tspan></text>
-    </g>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
-       d="M 299.69935,362.24027 L 299.69931,393.49494"
-       id="path5203"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#g3457"
-       inkscape:connection-end="#g5111" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 182.35357,362.22647 L 241.2842,503.07224"
-       id="path5271"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#g3399"
-       inkscape:connection-end="#g3539" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
-       d="M 287.63109,471.81747 L 250.9438,503.07223"
-       id="path5285"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#g5087"
-       inkscape:connection-end="#g3539" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
-       d="M 290.80419,250.07192 L 297.80065,283.90394"
-       id="path5077"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#g3215"
-       inkscape:connection-end="#g3481" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
-       d="M 229.63373,250.07601 L 190.07484,283.90394"
-       id="path5075"
-       inkscape:connector-type="polyline"
-       inkscape:connection-end="#g3423" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="131.5625"
-       y="100.79968"
-       id="text5897"><tspan
-         sodipodi:role="line"
-         id="tspan5899"
-         x="131.5625"
-         y="100.79968"
-         style="text-align:end;text-anchor:end">Head revision</tspan><tspan
-         sodipodi:role="line"
-         x="131.5625"
-         y="115.79968"
-         id="tspan5901"
-         style="text-align:end;text-anchor:end">(no children)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="131.5625"
-       y="207.04968"
-       id="text5903"><tspan
-         sodipodi:role="line"
-         id="tspan5905"
-         x="131.5625"
-         y="207.04968"
-         style="text-align:end;text-anchor:end">Merge revision</tspan><tspan
-         sodipodi:role="line"
-         x="131.5625"
-         y="222.04968"
-         id="tspan5907"
-         style="text-align:end;text-anchor:end">(two parents)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="131.92578"
-       y="451.58093"
-       id="text5909"><tspan
-         sodipodi:role="line"
-         id="tspan5911"
-         x="131.92578"
-         y="451.58093"
-         style="text-align:end;text-anchor:end">Branches</tspan><tspan
-         sodipodi:role="line"
-         x="131.92578"
-         y="466.58093"
-         id="tspan5913"
-         style="text-align:end;text-anchor:end">(two revisions,</tspan><tspan
-         sodipodi:role="line"
-         x="131.92578"
-         y="481.58093"
-         id="tspan5915"
-         style="text-align:end;text-anchor:end">same parent)</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1;display:inline"
-       d="M 111.71875,433.61218 L 154.7268,368.52294"
-       id="path5917"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1;display:inline"
-       d="M 134.375,464.86218 L 277.86691,440.37816"
-       id="path5919"
-       inkscape:connector-type="polyline"
-       inkscape:connection-end="#g5123" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="131.5625"
-       y="536.73718"
-       id="text5927"><tspan
-         sodipodi:role="line"
-         id="tspan5929"
-         x="131.5625"
-         y="536.73718">First revision</tspan><tspan
-         sodipodi:role="line"
-         x="131.5625"
-         y="551.73718"
-         id="tspan5931">(both parents null)</tspan></text>
-    <rect
-       style="fill:#bbb4ff;fill-opacity:1;stroke:none;stroke-width:0.95291203;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect2830"
-       width="43.664806"
-       height="20.562374"
-       x="217.0432"
-       y="232.10075" />
-    <text
-       xml:space="preserve"
-       style="font-size:5.0801158px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="220.94551"
-       y="239.33966"
-       id="text2832"><tspan
-         id="tspan2836"
-         sodipodi:role="line"
-         x="220.94551"
-         y="239.33966">First parent</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:5.0801158px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="220.65144"
-       y="248.09805"
-       id="text2879"><tspan
-         sodipodi:role="line"
-         id="tspan2881"
-         x="220.65144"
-         y="248.09805"
-         style="font-family:Courier">5b80c922ebdd</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1;display:inline"
-       d="M 139.84375,107.83093 L 210.15625,107.83093"
-       id="path5965"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1;display:inline"
-       d="M 137.5,213.29968 L 210.49036,214.09055"
-       id="path5967"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1;display:inline"
-       d="M 136.34375,544.54968 L 206.65625,544.54968"
-       id="path5969"
-       inkscape:connector-type="polyline"
-       inkscape:transform-center-y="-171.09375"
-       inkscape:transform-center-x="53.90625" />
-  </g>
-</svg>
--- a/en/images/snapshot.svg	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg2807"
-   sodipodi:version="0.32"
-   inkscape:version="0.44.1"
-   sodipodi:docbase="/home/bos/hg/hgbook/en"
-   sodipodi:docname="snapshots.svg">
-  <defs
-     id="defs2809" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     gridtolerance="10000"
-     guidetolerance="10"
-     objecttolerance="10"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="252.04111"
-     inkscape:cy="605.75448"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     inkscape:window-width="906"
-     inkscape:window-height="721"
-     inkscape:window-x="0"
-     inkscape:window-y="25" />
-  <metadata
-     id="metadata2812">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <rect
-       style="opacity:1;fill:#d3ceff;fill-opacity:1;stroke:#a7a7a7;stroke-width:1.88795626;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect2817"
-       width="118.18347"
-       height="245.32632"
-       x="243.05112"
-       y="315.4133"
-       inkscape:transform-center-x="136.84403"
-       inkscape:transform-center-y="-66.529183" />
-    <rect
-       y="315.04153"
-       x="46.965065"
-       height="97.803009"
-       width="108.92702"
-       id="rect2815"
-       style="fill:#ffced6;fill-opacity:1;stroke:#a7a7a7;stroke-width:1.14441991;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <g
-       id="g3814">
-      <rect
-         y="348.94302"
-         x="59.285713"
-         height="30"
-         width="84.285713"
-         id="rect2819"
-         style="fill:#ff6e86;fill-opacity:1;stroke:#a7a7a7;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         ry="0" />
-      <text
-         id="text2821"
-         y="368.02701"
-         x="72.717636"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           y="368.02701"
-           x="72.717636"
-           id="tspan2823"
-           sodipodi:role="line">Index, rev 7</tspan></text>
-    </g>
-    <text
-       id="text3722"
-       y="301.29074"
-       x="46.187778"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       xml:space="preserve"><tspan
-         y="301.29074"
-         x="46.187778"
-         id="tspan3724"
-         sodipodi:role="line">Revlog index (.i file)</tspan></text>
-    <text
-       id="text3726"
-       y="301.29074"
-       x="241.90207"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       xml:space="preserve"><tspan
-         y="301.29074"
-         x="241.90207"
-         id="tspan3728"
-         sodipodi:role="line">Revlog data (.d file)</tspan></text>
-    <path
-       style="fill:#c695ff;fill-opacity:0.60109288;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 143.57143,348.07647 L 255,368.07646 L 255.71429,544.50504 L 142.85714,379.50504 L 143.57143,348.07647 z "
-       id="path3839"
-       sodipodi:nodetypes="ccccc" />
-    <rect
-       style="fill:#4733ff;fill-opacity:1;stroke:#a7a7a7;stroke-width:2.35124183;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect3752"
-       width="92.720184"
-       height="67.005905"
-       x="255.42564"
-       y="368.64264" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="264.45859"
-       y="387.30099"
-       id="text3754"><tspan
-         sodipodi:role="line"
-         id="tspan3756"
-         x="264.45859"
-         y="387.30099">Snapshot, rev 4</tspan></text>
-    <rect
-       style="fill:#7c6eff;fill-opacity:1;stroke:#a7a7a7;stroke-width:1.57776296;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect3761"
-       width="93.49366"
-       height="29.922237"
-       x="255.03891"
-       y="442.04395" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="263.2662"
-       y="460.17206"
-       id="text3763"><tspan
-         sodipodi:role="line"
-         id="tspan3765"
-         x="263.2662"
-         y="460.17206">Delta, rev 4 to 5</tspan></text>
-    <rect
-       style="fill:#7c6eff;fill-opacity:1;stroke:#a7a7a7;stroke-width:1.57776296;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect3774"
-       width="93.49366"
-       height="29.922237"
-       x="255.03891"
-       y="477.97485" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="263.2662"
-       y="496.10297"
-       id="text3776"><tspan
-         sodipodi:role="line"
-         id="tspan3778"
-         x="263.2662"
-         y="496.10297">Delta, rev 5 to 6</tspan></text>
-    <rect
-       style="fill:#7c6eff;fill-opacity:1;stroke:#a7a7a7;stroke-width:1.57776296;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect3782"
-       width="93.49366"
-       height="29.922237"
-       x="255.03891"
-       y="513.90576" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="263.2662"
-       y="532.03387"
-       id="text3784"><tspan
-         sodipodi:role="line"
-         id="tspan3786"
-         x="263.2662"
-         y="532.03387">Delta, rev 6 to 7</tspan></text>
-    <rect
-       style="fill:#7c6eff;fill-opacity:1;stroke:#a7a7a7;stroke-width:1.57776296;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect3889"
-       width="93.49366"
-       height="29.922237"
-       x="255.03891"
-       y="332.32489" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="263.2662"
-       y="350.453"
-       id="text3891"><tspan
-         sodipodi:role="line"
-         id="tspan3893"
-         x="263.2662"
-         y="350.453">Delta, rev 2 to 3</tspan></text>
-  </g>
-</svg>
--- a/en/images/tour-history.svg	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,289 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.44.1"
-   sodipodi:docname="tour-history.svg">
-  <defs
-     id="defs4">
-    <marker
-       inkscape:stockid="Arrow1Mstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mstart"
-       style="overflow:visible">
-      <path
-         id="path2973"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
-         transform="scale(0.4) translate(10,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;">
-      <path
-         id="path3066"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     gridtolerance="10000"
-     guidetolerance="10"
-     objecttolerance="10"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="232.14286"
-     inkscape:cy="672.75296"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     inkscape:window-width="906"
-     inkscape:window-height="620"
-     inkscape:window-x="5"
-     inkscape:window-y="49" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <rect
-       style="opacity:1;fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect1878"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="479.50504" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="493.12619"
-       id="text1872"><tspan
-         sodipodi:role="line"
-         id="tspan1874"
-         x="162.09892"
-         y="493.12619"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan1876">0</tspan>: REV0</tspan></text>
-    <rect
-       style="opacity:1;fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2800"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="432.63004" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="446.25119"
-       id="text2794"><tspan
-         sodipodi:role="line"
-         id="tspan2796"
-         x="162.09892"
-         y="446.25119"
-         style="font-family:Courier"><tspan
-   id="tspan2868"
-   style="font-weight:bold">1</tspan>: REV1</tspan></text>
-    <rect
-       style="opacity:1;fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2810"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="385.75504" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="399.37619"
-       id="text2804"><tspan
-         sodipodi:role="line"
-         id="tspan2806"
-         x="162.09892"
-         y="399.37619"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2866">2</tspan>: REV2</tspan></text>
-    <rect
-       style="opacity:1;fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2820"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="338.88007" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="352.50122"
-       id="text2814"><tspan
-         sodipodi:role="line"
-         id="tspan2816"
-         x="162.09892"
-         y="352.50122"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2864">3</tspan>: REV3</tspan></text>
-    <rect
-       style="opacity:1;fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2830"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="292.00504" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="305.62619"
-       id="text2824"><tspan
-         sodipodi:role="line"
-         id="tspan2826"
-         x="162.09892"
-         y="305.62619"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2862">4</tspan>: REV4</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="173.57143"
-       y="443.79074"
-       id="text2832"><tspan
-         sodipodi:role="line"
-         id="tspan2834"
-         x="173.57143"
-         y="443.79074" /></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
-       d="M 185.14286,478.50504 L 185.14286,454.34432"
-       id="path2894"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
-       d="M 185.14286,431.63004 L 185.14286,407.46932"
-       id="path2896"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
-       d="M 185.14286,384.75504 L 185.14286,360.59435"
-       id="path2898"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
-       d="M 185.14286,337.88007 L 185.14286,313.71932"
-       id="path2900"
-       inkscape:connector-type="polyline" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times"
-       x="244.60992"
-       y="305.245"
-       id="text1902"><tspan
-         sodipodi:role="line"
-         id="tspan1904"
-         x="244.60992"
-         y="305.245">(newest)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times"
-       x="244.60992"
-       y="492.745"
-       id="text1906"><tspan
-         sodipodi:role="line"
-         id="tspan1908"
-         x="244.60992"
-         y="492.745">(oldest)</tspan></text>
-    <rect
-       style="opacity:1;fill:#d2e1e4;fill-opacity:1;stroke:#b1cbd0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect1907"
-       width="94.285713"
-       height="20.714285"
-       x="309.28571"
-       y="324.86218" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="333.38464"
-       y="338.48334"
-       id="text1909"><tspan
-         sodipodi:role="line"
-         id="tspan1911"
-         x="333.38464"
-         y="338.48334"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan1913">4</tspan>: REV4</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 332.14286,375.21932 L 335.71429,347.36218"
-       id="path2802" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 372.69968,375.21932 L 369.12825,347.36218"
-       id="path2986" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times"
-       x="335.14285"
-       y="387.21933"
-       id="text2988"><tspan
-         sodipodi:role="line"
-         x="335.14285"
-         y="387.21933"
-         id="tspan3020"
-         style="text-align:end;text-anchor:end">revision</tspan><tspan
-         sodipodi:role="line"
-         x="335.14285"
-         y="402.21933"
-         id="tspan3014"
-         style="text-align:end;text-anchor:end">number</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times"
-       x="368.71429"
-       y="387.21933"
-       id="text2994"><tspan
-         sodipodi:role="line"
-         id="tspan2996"
-         x="368.71429"
-         y="387.21933">changeset</tspan><tspan
-         sodipodi:role="line"
-         x="368.71429"
-         y="402.21933"
-         id="tspan2998">identifier</tspan></text>
-  </g>
-</svg>
--- a/en/images/tour-merge-conflict.svg	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.44.1"
-   sodipodi:docname="tour-merge-conflict.svg">
-  <defs
-     id="defs4">
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;">
-      <path
-         id="path3053"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     gridtolerance="10000"
-     guidetolerance="10"
-     objecttolerance="10"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="164.78349"
-     inkscape:cy="590.07679"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     inkscape:window-width="906"
-     inkscape:window-height="620"
-     inkscape:window-x="5"
-     inkscape:window-y="49" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <g
-       id="g1988"
-       transform="translate(84.85711,0)">
-      <g
-         id="g1876">
-        <path
-           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="M 118.57143,458.21933 L 118.57143,563.79075 L 191.42857,563.79075 L 204.28571,550.93361 L 203.57142,459.6479 L 118.57143,458.21933 z "
-           id="path1872"
-           sodipodi:nodetypes="cccccc" />
-        <path
-           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="M 191.55484,563.36862 L 191.6923,560.98794 L 192.69126,552.44884 L 203.80416,551.31242"
-           id="path1874"
-           sodipodi:nodetypes="cccc" />
-      </g>
-      <flowRoot
-         style="font-size:8px;font-family:Times New Roman"
-         id="flowRoot1898"
-         xml:space="preserve"><flowRegion
-           id="flowRegion1900"><rect
-             style="font-size:8px;font-family:Times New Roman"
-             y="464.50504"
-             x="122.85714"
-             height="93.571426"
-             width="76.428574"
-             id="rect1902" /></flowRegion><flowPara
-           id="flowPara1904">Greetings!</flowPara><flowPara
-           id="flowPara1906" /><flowPara
-           id="flowPara1908">I am Mariam Abacha, the wife of former Nigerian dictator Sani Abacha. I am contacting you in confidence, and as a means of developing</flowPara></flowRoot>    </g>
-    <g
-       id="g1966"
-       transform="translate(82,0.35715)">
-      <g
-         transform="translate(-77.85718,-140.0714)"
-         id="g1910">
-        <path
-           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="M 118.57143,458.21933 L 118.57143,563.79075 L 191.42857,563.79075 L 204.28571,550.93361 L 203.57142,459.6479 L 118.57143,458.21933 z "
-           id="path1912"
-           sodipodi:nodetypes="cccccc" />
-        <path
-           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="M 191.55484,563.36862 L 191.6923,560.98794 L 192.69126,552.44884 L 203.80416,551.31242"
-           id="path1914"
-           sodipodi:nodetypes="cccc" />
-      </g>
-      <flowRoot
-         transform="translate(-77.85718,-140.0714)"
-         style="font-size:8px;font-family:Times New Roman"
-         id="flowRoot1916"
-         xml:space="preserve"><flowRegion
-           id="flowRegion1918"><rect
-             style="font-size:8px;font-family:Times New Roman"
-             y="464.50504"
-             x="122.85714"
-             height="93.571426"
-             width="76.428574"
-             id="rect1920" /></flowRegion><flowPara
-           id="flowPara1922">Greetings!</flowPara><flowPara
-           id="flowPara1924" /><flowPara
-           id="flowPara1926">I am <flowSpan
-   style="font-style:italic;fill:red"
-   id="flowSpan3094">Shehu Musa Abacha, cousin to</flowSpan> the former Nigerian dictator Sani Abacha. I am contacting you in confidence, and as a means of developing</flowPara></flowRoot>    </g>
-    <g
-       id="g1977"
-       transform="translate(81.99999,-0.35715)">
-      <g
-         transform="translate(83.57141,-139.3571)"
-         id="g1932">
-        <path
-           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="M 118.57143,458.21933 L 118.57143,563.79075 L 191.42857,563.79075 L 204.28571,550.93361 L 203.57142,459.6479 L 118.57143,458.21933 z "
-           id="path1934"
-           sodipodi:nodetypes="cccccc" />
-        <path
-           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="M 191.55484,563.36862 L 191.6923,560.98794 L 192.69126,552.44884 L 203.80416,551.31242"
-           id="path1936"
-           sodipodi:nodetypes="cccc" />
-      </g>
-      <flowRoot
-         transform="translate(83.57141,-139.3571)"
-         style="font-size:8px;font-family:Times New Roman"
-         id="flowRoot1938"
-         xml:space="preserve"><flowRegion
-           id="flowRegion1940"><rect
-             style="font-size:8px;font-family:Times New Roman"
-             y="464.50504"
-             x="122.85714"
-             height="93.571426"
-             width="76.428574"
-             id="rect1942" /></flowRegion><flowPara
-           id="flowPara1944">Greetings!</flowPara><flowPara
-           id="flowPara1946" /><flowPara
-           id="flowPara1948">I am <flowSpan
-   style="font-style:italic;fill:red"
-   id="flowSpan3096">Alhaji Abba Abacha, son of</flowSpan> the former Nigerian dictator Sani Abacha. I am contacting you in confidence, and as a means of developing</flowPara></flowRoot>    </g>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 215.502,457.71933 L 196.35507,424.5765"
-       id="path1999"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#g1988"
-       inkscape:connection-end="#g1966" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 277.06936,457.71933 L 296.21629,424.5765"
-       id="path2001"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#g1988"
-       inkscape:connection-end="#g1977" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="302.42859"
-       y="515.08905"
-       id="text1905"><tspan
-         sodipodi:role="line"
-         id="tspan1907"
-         x="302.42859"
-         y="515.08905">Base version</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="45.57143"
-       y="374.1619"
-       id="text1917"><tspan
-         sodipodi:role="line"
-         id="tspan1919"
-         x="45.57143"
-         y="374.1619">Our changes</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="385.71429"
-       y="374.1619"
-       id="text1921"><tspan
-         sodipodi:role="line"
-         id="tspan1923"
-         x="385.71429"
-         y="374.1619">Their changes</tspan></text>
-  </g>
-</svg>
--- a/en/images/tour-merge-merge.svg	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,380 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.44.1"
-   sodipodi:docname="tour-merge-merge.svg">
-  <defs
-     id="defs4">
-    <marker
-       inkscape:stockid="Arrow1Mstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mstart"
-       style="overflow:visible">
-      <path
-         id="path2973"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
-         transform="scale(0.4) translate(10,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;">
-      <path
-         id="path3066"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     gridtolerance="10000"
-     guidetolerance="10"
-     objecttolerance="10"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="247.53795"
-     inkscape:cy="871.05738"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     inkscape:window-width="906"
-     inkscape:window-height="620"
-     inkscape:window-x="38"
-     inkscape:window-y="95" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2995"
-       width="94.285713"
-       height="20.714285"
-       x="532.85718"
-       y="203.0479" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="173.57143"
-       y="443.79074"
-       id="text2832"><tspan
-         sodipodi:role="line"
-         id="tspan2834"
-         x="173.57143"
-         y="443.79074" /></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2830"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="297.76227" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="311.38342"
-       id="text2824"><tspan
-         sodipodi:role="line"
-         id="tspan2826"
-         x="162.09892"
-         y="311.38342"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2862">4</tspan>: REV4</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 185.14286,343.63731 L 185.14286,319.47656"
-       id="path2900"
-       inkscape:connector-type="polyline" />
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2863"
-       width="94.285713"
-       height="20.714285"
-       x="91.428574"
-       y="250.47656" />
-    <text
-       xml:space="preserve"
-       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="116.09886"
-       y="264.56592"
-       id="text1965"
-       transform="scale(1.000002,0.999998)"><tspan
-         sodipodi:role="line"
-         id="tspan1967"
-         x="116.09886"
-         y="264.56592"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan1973">5</tspan>: REV_my_new_hello</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
-       d="M 173.95727,296.76228 L 149.75702,272.19085"
-       id="path1971"
-       inkscape:connector-type="polyline"
-       inkscape:connection-end="#rect2863"
-       inkscape:connection-start="#rect2830" />
-    <rect
-       style="fill:#78a5ad;fill-opacity:1;stroke:#507b84;stroke-width:2.00000286;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2911"
-       width="94.285995"
-       height="20.714283"
-       x="186.71414"
-       y="204.40514" />
-    <text
-       xml:space="preserve"
-       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="210.81311"
-       y="218.02673"
-       id="text2913"
-       transform="scale(1.000002,0.999998)"><tspan
-         sodipodi:role="line"
-         id="tspan2915"
-         x="210.81311"
-         y="218.02673"
-         style="font-family:Courier"><tspan
-   id="tspan1966"
-   style="font-weight:bold">6</tspan>: REV6_my_new_hello</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
-       d="M 191.06908,296.76228 L 227.93092,226.11942"
-       id="path2919"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#rect2830" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="295.28571"
-       y="217.56711"
-       id="text2871"><tspan
-         sodipodi:role="line"
-         id="tspan2873"
-         x="295.28571"
-         y="217.56711">tip (and head)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="76"
-       y="264.91769"
-       id="text2875"><tspan
-         sodipodi:role="line"
-         id="tspan2877"
-         x="76"
-         y="264.91769"
-         style="text-align:end;text-anchor:end">head</tspan></text>
-    <rect
-       style="fill:#c8aaa5;fill-opacity:1;stroke:#a07163;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2, 4;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect1913"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="156.90514" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:2, 2;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 144.22399,249.47657 L 179.49029,178.61943"
-       id="path1915"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#rect2863"
-       inkscape:connection-end="#rect1913" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:2, 2;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 222.20966,203.40514 L 196.79033,178.61943"
-       id="path1917"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#rect2911"
-       inkscape:connection-end="#rect1913" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="166.16823"
-       y="168.52228"
-       id="text2806"><tspan
-         sodipodi:role="line"
-         id="tspan2808"
-         x="166.16823"
-         y="168.52228"
-         style="font-family:Courier">merge</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="246"
-       y="162.63338"
-       id="text2810"><tspan
-         sodipodi:role="line"
-         id="tspan2812"
-         x="246"
-         y="162.63338">working directory</tspan><tspan
-         sodipodi:role="line"
-         x="246"
-         y="177.63338"
-         id="tspan2814">during merge</tspan></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2816"
-       width="94.285713"
-       height="20.714285"
-       x="483.14636"
-       y="297.76227" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="507.24527"
-       y="311.38342"
-       id="text2818"><tspan
-         sodipodi:role="line"
-         id="tspan2820"
-         x="507.24527"
-         y="311.38342"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2822">4</tspan>: REV4</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 530.28921,343.6373 L 530.28921,319.47655"
-       id="path2824"
-       inkscape:connector-type="polyline" />
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2826"
-       width="94.285713"
-       height="20.714285"
-       x="436.57492"
-       y="250.47656" />
-    <text
-       xml:space="preserve"
-       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="461.24484"
-       y="264.56613"
-       id="text2828"
-       transform="scale(1.000002,0.999998)"><tspan
-         sodipodi:role="line"
-         id="tspan2830"
-         x="461.24484"
-         y="264.56613"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2832">5</tspan>: REV_my_new_hello</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
-       d="M 519.10362,296.76227 L 494.90337,272.19084"
-       id="path2834"
-       inkscape:connector-type="polyline" />
-    <rect
-       style="fill:#78a5ad;fill-opacity:1;stroke:#507b84;stroke-width:2.00000286;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2836"
-       width="94.285995"
-       height="20.714283"
-       x="483.14001"
-       y="156.548" />
-    <text
-       xml:space="preserve"
-       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="555.95911"
-       y="218.02698"
-       id="text2838"
-       transform="scale(1.000002,0.999998)"><tspan
-         sodipodi:role="line"
-         id="tspan2840"
-         x="555.95911"
-         y="218.02698"
-         style="font-family:Courier"><tspan
-   id="tspan2842"
-   style="font-weight:bold">6</tspan>: REV6_my_new_hello</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
-       d="M 536.21543,296.76227 L 574.03453,224.76218"
-       id="path2844"
-       inkscape:connector-type="polyline" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="594.43207"
-       y="169.78796"
-       id="text2846"><tspan
-         sodipodi:role="line"
-         id="tspan2848"
-         x="594.43207"
-         y="169.78796">tip</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
-       d="M 489.37034,249.47656 L 524.65575,178.26229"
-       id="path2856"
-       inkscape:connector-type="polyline"
-       inkscape:connection-end="#rect2836" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
-       d="M 567.85714,202.0479 L 542.42591,178.26229"
-       id="path2858"
-       inkscape:connector-type="polyline"
-       inkscape:connection-end="#rect2836"
-       inkscape:connection-start="#rect2995" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="504.54507"
-       y="170.39714"
-       id="text2860"><tspan
-         sodipodi:role="line"
-         id="tspan2863"
-         x="504.54507"
-         y="170.39714"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2997">7</tspan>: REV7_my_new_hello</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="90.323105"
-       y="120.21933"
-       id="text2929"><tspan
-         sodipodi:role="line"
-         id="tspan2931"
-         x="90.323105"
-         y="120.21933"
-         style="font-weight:bold">Working directory during merge</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="435.35226"
-       y="120.21933"
-       id="text2937"><tspan
-         sodipodi:role="line"
-         id="tspan2939"
-         x="435.35226"
-         y="120.21933"
-         style="font-weight:bold">Repository after merge committed</tspan></text>
-  </g>
-</svg>
--- a/en/images/tour-merge-pull.svg	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,288 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.44.1"
-   sodipodi:docname="tour-merge-pull.svg"
-   sodipodi:docbase="/home/bos/hg/hgbook/en">
-  <defs
-     id="defs4">
-    <marker
-       inkscape:stockid="Arrow1Mstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mstart"
-       style="overflow:visible">
-      <path
-         id="path2973"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
-         transform="scale(0.4) translate(10,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;">
-      <path
-         id="path3066"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     gridtolerance="10000"
-     guidetolerance="10"
-     objecttolerance="10"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="233.63208"
-     inkscape:cy="832.54381"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     inkscape:window-width="906"
-     inkscape:window-height="620"
-     inkscape:window-x="237"
-     inkscape:window-y="103" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="173.57143"
-       y="443.79074"
-       id="text2832"><tspan
-         sodipodi:role="line"
-         id="tspan2834"
-         x="173.57143"
-         y="443.79074" /></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect1878"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="479.50504" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="493.12619"
-       id="text1872"><tspan
-         sodipodi:role="line"
-         id="tspan1874"
-         x="162.09892"
-         y="493.12619"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan1876">0</tspan>: REV0</tspan></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2800"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="432.63004" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="446.25119"
-       id="text2794"><tspan
-         sodipodi:role="line"
-         id="tspan2796"
-         x="162.09892"
-         y="446.25119"
-         style="font-family:Courier"><tspan
-   id="tspan2868"
-   style="font-weight:bold">1</tspan>: REV1</tspan></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2810"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="385.75504" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="399.37619"
-       id="text2804"><tspan
-         sodipodi:role="line"
-         id="tspan2806"
-         x="162.09892"
-         y="399.37619"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2866">2</tspan>: REV2</tspan></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2820"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="338.88007" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="352.50122"
-       id="text2814"><tspan
-         sodipodi:role="line"
-         id="tspan2816"
-         x="162.09892"
-         y="352.50122"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2864">3</tspan>: REV3</tspan></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2830"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="292.00504" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="305.62619"
-       id="text2824"><tspan
-         sodipodi:role="line"
-         id="tspan2826"
-         x="162.09892"
-         y="305.62619"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2862">4</tspan>: REV4</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 185.14286,478.50504 L 185.14286,454.34432"
-       id="path2894"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 185.14286,431.63004 L 185.14286,407.46932"
-       id="path2896"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 185.14286,384.75504 L 185.14286,360.59435"
-       id="path2898"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 185.14286,337.88007 L 185.14286,313.71932"
-       id="path2900"
-       inkscape:connector-type="polyline" />
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2863"
-       width="94.285713"
-       height="20.714285"
-       x="91.428574"
-       y="244.71933" />
-    <text
-       xml:space="preserve"
-       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="116.09886"
-       y="258.80865"
-       id="text1965"
-       transform="scale(1.000002,0.999998)"><tspan
-         sodipodi:role="line"
-         id="tspan1967"
-         x="116.09886"
-         y="258.80865"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan1973">5</tspan>: REV_my_new_hello</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
-       d="M 173.95727,291.00504 L 149.75702,266.43361"
-       id="path1971"
-       inkscape:connector-type="polyline"
-       inkscape:connection-end="#rect2863"
-       inkscape:connection-start="#rect2830" />
-    <rect
-       style="fill:#78a5ad;fill-opacity:1;stroke:#507b84;stroke-width:2.00000286;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2911"
-       width="94.285995"
-       height="20.714283"
-       x="186.71414"
-       y="198.6479" />
-    <text
-       xml:space="preserve"
-       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="210.81311"
-       y="212.26949"
-       id="text2913"
-       transform="scale(1.000002,0.999998)"><tspan
-         sodipodi:role="line"
-         id="tspan2915"
-         x="210.81311"
-         y="212.26949"
-         style="font-family:Courier"><tspan
-   id="tspan1966"
-   style="font-weight:bold">6</tspan>: REV6_my_new_hello</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
-       d="M 191.06908,291.00504 L 227.93092,220.36218"
-       id="path2919"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#rect2830" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="295.28571"
-       y="211.80988"
-       id="text2871"><tspan
-         sodipodi:role="line"
-         id="tspan2873"
-         x="295.28571"
-         y="211.80988">tip (and head)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="76"
-       y="259.16046"
-       id="text2875"><tspan
-         sodipodi:role="line"
-         id="tspan2877"
-         x="76"
-         y="259.16046"
-         style="text-align:end;text-anchor:end">head</tspan></text>
-  </g>
-</svg>
--- a/en/images/tour-merge-sep-repos.svg	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,466 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.44.1"
-   sodipodi:docname="tour-merge-sep-repos.svg">
-  <defs
-     id="defs4">
-    <marker
-       inkscape:stockid="Arrow1Mstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mstart"
-       style="overflow:visible">
-      <path
-         id="path2973"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
-         transform="scale(0.4) translate(10,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;">
-      <path
-         id="path3066"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     gridtolerance="10000"
-     guidetolerance="10"
-     objecttolerance="10"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="307.20351"
-     inkscape:cy="716.87911"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     inkscape:window-width="906"
-     inkscape:window-height="620"
-     inkscape:window-x="5"
-     inkscape:window-y="49" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="173.57143"
-       y="443.79074"
-       id="text2832"><tspan
-         sodipodi:role="line"
-         id="tspan2834"
-         x="173.57143"
-         y="443.79074" /></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect1878"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="479.50504" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="493.12619"
-       id="text1872"><tspan
-         sodipodi:role="line"
-         id="tspan1874"
-         x="162.09892"
-         y="493.12619"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan1876">0</tspan>: REV0</tspan></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2800"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="432.63004" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="446.25119"
-       id="text2794"><tspan
-         sodipodi:role="line"
-         id="tspan2796"
-         x="162.09892"
-         y="446.25119"
-         style="font-family:Courier"><tspan
-   id="tspan2868"
-   style="font-weight:bold">1</tspan>: REV1</tspan></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2810"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="385.75504" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="399.37619"
-       id="text2804"><tspan
-         sodipodi:role="line"
-         id="tspan2806"
-         x="162.09892"
-         y="399.37619"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2866">2</tspan>: REV2</tspan></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2820"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="338.88007" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="352.50122"
-       id="text2814"><tspan
-         sodipodi:role="line"
-         id="tspan2816"
-         x="162.09892"
-         y="352.50122"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2864">3</tspan>: REV3</tspan></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2830"
-       width="94.285713"
-       height="20.714285"
-       x="138"
-       y="292.00504" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09892"
-       y="305.62619"
-       id="text2824"><tspan
-         sodipodi:role="line"
-         id="tspan2826"
-         x="162.09892"
-         y="305.62619"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2862">4</tspan>: REV4</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 185.14286,478.50504 L 185.14286,454.34432"
-       id="path2894"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 185.14286,431.63004 L 185.14286,407.46932"
-       id="path2896"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 185.14286,384.75504 L 185.14286,360.59435"
-       id="path2898"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 185.14286,337.88007 L 185.14286,313.71932"
-       id="path2900"
-       inkscape:connector-type="polyline" />
-    <rect
-       style="fill:#78a5ad;fill-opacity:1;stroke:#507b84;stroke-width:2.00000286;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect1963"
-       width="94.285995"
-       height="20.714283"
-       x="138"
-       y="245.18723" />
-    <text
-       xml:space="preserve"
-       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="162.09877"
-       y="258.80865"
-       id="text1965"
-       transform="scale(1.000002,0.999998)"><tspan
-         sodipodi:role="line"
-         id="tspan1967"
-         x="162.09877"
-         y="258.80865"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan1973">5</tspan>: REV_my_hello</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 185.143,291.06218 L 185.143,266.90143"
-       id="path1971"
-       inkscape:connector-type="polyline" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="136.90039"
-       y="232.25546"
-       id="text2921"><tspan
-         sodipodi:role="line"
-         id="tspan2923"
-         x="136.90039"
-         y="232.25546">my-hello</tspan></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2863"
-       width="94.285713"
-       height="20.714285"
-       x="370.71414"
-       y="479.49289" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="394.81305"
-       y="493.11404"
-       id="text2865"><tspan
-         sodipodi:role="line"
-         id="tspan2867"
-         x="394.81305"
-         y="493.11404"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2869">0</tspan>: REV0</tspan></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2871"
-       width="94.285713"
-       height="20.714285"
-       x="370.71414"
-       y="432.61789" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="394.81305"
-       y="446.23904"
-       id="text2873"><tspan
-         sodipodi:role="line"
-         id="tspan2875"
-         x="394.81305"
-         y="446.23904"
-         style="font-family:Courier"><tspan
-   id="tspan2877"
-   style="font-weight:bold">1</tspan>: REV1</tspan></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2879"
-       width="94.285713"
-       height="20.714285"
-       x="370.71414"
-       y="385.74289" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="394.81305"
-       y="399.36404"
-       id="text2881"><tspan
-         sodipodi:role="line"
-         id="tspan2883"
-         x="394.81305"
-         y="399.36404"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2885">2</tspan>: REV2</tspan></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2887"
-       width="94.285713"
-       height="20.714285"
-       x="370.71414"
-       y="338.86792" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="394.81305"
-       y="352.48907"
-       id="text2889"><tspan
-         sodipodi:role="line"
-         id="tspan2891"
-         x="394.81305"
-         y="352.48907"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2893">3</tspan>: REV3</tspan></text>
-    <rect
-       style="fill:#a5c3c8;fill-opacity:1;stroke:#6396a0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2895"
-       width="94.285713"
-       height="20.714285"
-       x="370.71414"
-       y="291.99289" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="394.81305"
-       y="305.61404"
-       id="text2897"><tspan
-         sodipodi:role="line"
-         id="tspan2899"
-         x="394.81305"
-         y="305.61404"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2901">4</tspan>: REV4</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 417.85701,478.4929 L 417.85701,454.33218"
-       id="path2903"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 417.85701,431.6179 L 417.85701,407.45718"
-       id="path2905"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 417.85701,384.7429 L 417.85701,360.58221"
-       id="path2907"
-       inkscape:connector-type="polyline" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 417.85701,337.86793 L 417.85701,313.70718"
-       id="path2909"
-       inkscape:connector-type="polyline" />
-    <rect
-       style="fill:#78a5ad;fill-opacity:1;stroke:#507b84;stroke-width:2.00000286;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2911"
-       width="94.285995"
-       height="20.714283"
-       x="370.71414"
-       y="245.17511" />
-    <text
-       xml:space="preserve"
-       style="font-size:12.00001812px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier"
-       x="394.81274"
-       y="258.79678"
-       id="text2913"
-       transform="scale(1.000002,0.999998)"><tspan
-         sodipodi:role="line"
-         id="tspan2915"
-         x="394.81274"
-         y="258.79678"
-         style="font-family:Courier"><tspan
-   style="font-weight:bold"
-   id="tspan2917">5</tspan>: REV_my_new_hello</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1.00000143px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-       d="M 417.85715,291.05004 L 417.85715,266.88929"
-       id="path2919"
-       inkscape:connector-type="polyline" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="369.61453"
-       y="232.25546"
-       id="text2925"><tspan
-         sodipodi:role="line"
-         id="tspan2927"
-         x="369.61453"
-         y="232.25546">my-new-hello</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="300.54352"
-       y="252.12723"
-       id="text2933"><tspan
-         sodipodi:role="line"
-         id="tspan2935"
-         x="300.54352"
-         y="252.12723"
-         style="text-align:center;text-anchor:middle">newest changes</tspan><tspan
-         sodipodi:role="line"
-         x="300.54352"
-         y="267.12723"
-         style="text-align:center;text-anchor:middle"
-         id="tspan3132">differ</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="262.15436"
-       y="398.37112"
-       id="text2929"><tspan
-         sodipodi:role="line"
-         x="262.15436"
-         y="398.37112"
-         id="tspan3013"
-         style="text-align:start;text-anchor:start">common history</tspan></text>
-    <g
-       id="g3107"
-       transform="translate(0,0.855744)">
-      <path
-         id="path3101"
-         d="M 300.35713,381.29075 L 300.35713,304.50504"
-         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4, 4;stroke-dashoffset:0;stroke-opacity:1" />
-      <path
-         id="path3105"
-         d="M 291.07142,301.64789 L 309.28571,301.64789"
-         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:0.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    </g>
-    <path
-       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:4, 4;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 300.53571,486.38926 L 300.53571,409.60355"
-       id="path3113" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:0.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 291.25,488.49641 L 309.46429,488.49641"
-       id="path3115" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="480.71429"
-       y="250.91507"
-       id="text1949"><tspan
-         sodipodi:role="line"
-         id="tspan1951"
-         x="480.71429"
-         y="250.91507"
-         style="text-align:start;text-anchor:start">head revision</tspan><tspan
-         sodipodi:role="line"
-         x="480.71429"
-         y="265.91507"
-         id="tspan1953"
-         style="text-align:start;text-anchor:start">(has no children)</tspan></text>
-  </g>
-</svg>
--- a/en/images/undo-manual-merge.dot	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-digraph undo_manual {
-	"first change" -> "second change";
-	"second change" -> "third change";
-	backout [label="back out\nsecond change", shape=box];
-	"second change" -> backout;
-	"third change" -> "manual\nmerge";
-	backout -> "manual\nmerge";
-}
--- a/en/images/undo-manual.dot	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-digraph undo_manual {
-	"first change" -> "second change";
-	"second change" -> "third change";
-	backout [label="back out\nsecond change", shape=box];
-	"second change" -> backout;
-}
--- a/en/images/undo-non-tip.dot	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-digraph undo_non_tip {
-	"first change" -> "second change";
-	"second change" -> "third change";
-	backout [label="back out\nsecond change", shape=box];
-	"second change" -> backout;
-	merge [label="automated\nmerge", shape=box];
-	"third change" -> merge;
-	backout -> merge;
-}
--- a/en/images/undo-simple.dot	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-digraph undo_simple {
-	"first change" -> "second change";
-	"second change" -> "back out\nsecond change";
-}
--- a/en/images/wdir-after-commit.svg	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,394 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg5971"
-   sodipodi:version="0.32"
-   inkscape:version="0.44.1"
-   sodipodi:docbase="/home/bos/hg/hgbook/en"
-   sodipodi:docname="wdir-after-commit.svg">
-  <defs
-     id="defs5973">
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6445"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <marker
-       inkscape:stockid="Arrow1Mstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mstart"
-       style="overflow:visible">
-      <path
-         id="path4855"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
-         transform="scale(0.4) translate(10,0)" />
-    </marker>
-    <linearGradient
-       id="linearGradient6049">
-      <stop
-         style="stop-color:#686868;stop-opacity:1;"
-         offset="0"
-         id="stop6051" />
-      <stop
-         style="stop-color:#f0f0f0;stop-opacity:1;"
-         offset="1"
-         id="stop6053" />
-    </linearGradient>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;">
-      <path
-         id="path4852"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6083"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-240.0462,-8.633237e-6)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6142"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-42.00893,-30.49544)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6193"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-240.0462,-8.633237e-6)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6216"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-6.0462,-0.664361)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6232"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000474,0,0,0.790947,222.8399,50.85693)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6772"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000474,0,0,0.790947,222.8399,50.85693)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     gridtolerance="10000"
-     guidetolerance="10"
-     objecttolerance="10"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.90509668"
-     inkscape:cx="390.0539"
-     inkscape:cy="690.49342"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:window-width="906"
-     inkscape:window-height="620"
-     inkscape:window-x="0"
-     inkscape:window-y="25">
-    <sodipodi:guide
-       orientation="vertical"
-       position="-1.4285714"
-       id="guide6022" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata5976">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <rect
-       y="245.98355"
-       x="328.23956"
-       height="258.57144"
-       width="174.28572"
-       id="rect6047"
-       style="fill:url(#linearGradient6216);fill-opacity:1;stroke:#686868;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <g
-       id="g6261"
-       transform="translate(234,0)">
-      <rect
-         y="258.7149"
-         x="114.11369"
-         height="44.537449"
-         width="134.53746"
-         id="rect5983"
-         style="fill:#b1b1b1;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text5985"
-         y="284.47562"
-         x="138.7962"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="font-family:Courier"
-           y="284.47562"
-           x="138.7962"
-           id="tspan5987"
-           sodipodi:role="line">dfbbb33f3fa3</tspan></text>
-    </g>
-    <rect
-       style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect5996"
-       width="134.53746"
-       height="44.537449"
-       x="348.11371"
-       y="320.38159" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="372.7962"
-       y="346.1423"
-       id="text5998"><tspan
-         sodipodi:role="line"
-         id="tspan6000"
-         x="372.7962"
-         y="346.1423"
-         style="font-family:Courier">e7639888bb2f</tspan></text>
-    <rect
-       style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect6004"
-       width="134.53746"
-       height="44.537449"
-       x="348.11371"
-       y="382.04825" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="370.65421"
-       y="407.80896"
-       id="text6006"><tspan
-         sodipodi:role="line"
-         id="tspan6008"
-         x="370.65421"
-         y="407.80896"
-         style="font-family:Courier">7b064d8bac5e</tspan></text>
-    <path
-       inkscape:connector-type="polyline"
-       id="path6018"
-       d="M 415.38242,303.62646 L 415.38242,320.00744"
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
-    <path
-       inkscape:connection-end="#rect6004"
-       inkscape:connector-type="polyline"
-       id="path6020"
-       d="M 415.38242,365.29315 L 415.38243,381.67412"
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
-    <rect
-       style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect6039"
-       width="134.53746"
-       height="44.537449"
-       x="348.11359"
-       y="443.71487" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="372.79706"
-       y="469.47556"
-       id="text6041"><tspan
-         sodipodi:role="line"
-         id="tspan6043"
-         x="372.79706"
-         y="469.47556"
-         style="fill:#979797;fill-opacity:1;font-family:Courier">000000000000</tspan></text>
-    <path
-       inkscape:connection-end="#rect6039"
-       inkscape:connector-type="polyline"
-       id="path6045"
-       d="M 415.38238,426.95981 L 415.38235,443.34087"
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#686868;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="327.66046"
-       y="231.36218"
-       id="text6102"><tspan
-         sodipodi:role="line"
-         id="tspan6104"
-         x="327.66046"
-         y="231.36218">History in repository</tspan></text>
-    <rect
-       y="245.94225"
-       x="557.28418"
-       height="204.51619"
-       width="174.36833"
-       id="rect6140"
-       style="fill:url(#linearGradient6232);fill-opacity:1;stroke:#686868;stroke-width:0.66539276;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <g
-       id="g6130"
-       transform="translate(262.3254,24.38544)">
-      <rect
-         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect6106"
-         width="134.53746"
-         height="44.537449"
-         x="314.87415"
-         y="257.95059" />
-      <text
-         xml:space="preserve"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         x="339.55664"
-         y="283.7113"
-         id="text6108"><tspan
-           sodipodi:role="line"
-           id="tspan6110"
-           x="339.55664"
-           y="283.7113"
-           style="font-family:Courier">dfbbb33f3fa3</tspan></text>
-    </g>
-    <g
-       id="g6135"
-       transform="translate(263.0396,49.83106)">
-      <rect
-         inkscape:transform-center-y="102.85714"
-         inkscape:transform-center-x="129.28571"
-         style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect6112"
-         width="134.53746"
-         height="44.537449"
-         x="314.15985"
-         y="326.52203" />
-      <text
-         inkscape:transform-center-y="102.7311"
-         inkscape:transform-center-x="128.69672"
-         xml:space="preserve"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         x="338.84335"
-         y="352.28271"
-         id="text6114"><tspan
-           sodipodi:role="line"
-           id="tspan6116"
-           x="338.84335"
-           y="352.28271"
-           style="fill:#979797;fill-opacity:1;font-family:Courier">000000000000</tspan></text>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="576.63208"
-       y="270.479"
-       id="text6118"><tspan
-         sodipodi:role="line"
-         id="tspan6120"
-         x="576.63208"
-         y="270.479">First parent</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="576.07544"
-       y="364.49615"
-       id="text6122"><tspan
-         sodipodi:role="line"
-         id="tspan6124"
-         x="576.07544"
-         y="364.49615">Second parent</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="556.61743"
-       y="231.36218"
-       id="text6195"><tspan
-         sodipodi:role="line"
-         id="tspan6197"
-         x="556.61743"
-         y="231.36218">Parents of working directory</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 576.82542,297.63008 L 483.02528,287.95831"
-       id="path6266"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#g6130"
-       inkscape:connection-end="#g6261" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 665.12232,418.17579 L 665.12232,418.17579"
-       id="path6270"
-       inkscape:connector-type="polyline" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="316.86407"
-       y="275.6496"
-       id="text6573"><tspan
-         sodipodi:role="line"
-         id="tspan6575"
-         x="316.86407"
-         y="275.6496"
-         style="text-align:end;text-anchor:end">New</tspan><tspan
-         sodipodi:role="line"
-         x="316.86407"
-         y="290.6496"
-         id="tspan6577"
-         style="text-align:end;text-anchor:end">changeset</tspan></text>
-  </g>
-</svg>
--- a/en/images/wdir-branch.svg	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,418 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg5971"
-   sodipodi:version="0.32"
-   inkscape:version="0.44.1"
-   sodipodi:docbase="/home/bos/hg/hgbook/en"
-   sodipodi:docname="wdir-branch.svg">
-  <defs
-     id="defs5973">
-    <marker
-       inkscape:stockid="Arrow1Mstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mstart"
-       style="overflow:visible">
-      <path
-         id="path4855"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
-         transform="scale(0.4) translate(10,0)" />
-    </marker>
-    <linearGradient
-       id="linearGradient6049">
-      <stop
-         style="stop-color:#686868;stop-opacity:1;"
-         offset="0"
-         id="stop6051" />
-      <stop
-         style="stop-color:#f0f0f0;stop-opacity:1;"
-         offset="1"
-         id="stop6053" />
-    </linearGradient>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;">
-      <path
-         id="path4852"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6083"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-240.0462,-8.633237e-6)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6142"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-42.00893,-30.49544)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6193"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-240.0462,-8.633237e-6)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6216"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6232"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000473,0,0,0.790947,-11.16012,50.85693)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6445"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6974"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.911882,0,0,0.789965,-574.7896,51.22599)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6996"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000473,0,0,0.790947,112.8399,50.85693)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     gridtolerance="10000"
-     guidetolerance="10"
-     objecttolerance="10"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.90509668"
-     inkscape:cx="345.85973"
-     inkscape:cy="690.49342"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:window-width="906"
-     inkscape:window-height="620"
-     inkscape:window-x="0"
-     inkscape:window-y="25">
-    <sodipodi:guide
-       orientation="vertical"
-       position="-1.4285714"
-       id="guide6022" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata5976">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <rect
-       y="246.06918"
-       x="64.325172"
-       height="204.26233"
-       width="333.2135"
-       id="rect6047"
-       style="fill:url(#linearGradient6974);fill-opacity:1;stroke:#686868;stroke-width:0.91925466;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <g
-       id="g1935">
-      <rect
-         y="266.24374"
-         x="84.113708"
-         height="44.537449"
-         width="134.53746"
-         id="rect5996"
-         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text5998"
-         y="292.00446"
-         x="108.7962"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="font-family:Courier"
-           y="292.00446"
-           x="108.7962"
-           id="tspan6000"
-           sodipodi:role="line">e7639888bb2f</tspan></text>
-    </g>
-    <g
-       id="g6976"
-       transform="translate(70,0)">
-      <rect
-         y="327.9104"
-         x="40.113693"
-         height="44.537449"
-         width="134.53746"
-         id="rect6004"
-         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text6006"
-         y="353.67111"
-         x="62.654205"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="font-family:Courier"
-           y="353.67111"
-           x="62.654205"
-           id="tspan6008"
-           sodipodi:role="line">7b064d8bac5e</tspan></text>
-    </g>
-    <path
-       inkscape:connector-type="polyline"
-       id="path6020"
-       d="M 160.92915,311.15532 L 167.83571,327.53627"
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
-       inkscape:connection-end="#g6976"
-       inkscape:connection-start="#g1935" />
-    <rect
-       style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect6039"
-       width="134.53746"
-       height="44.537449"
-       x="110.11359"
-       y="389.57703" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="134.79706"
-       y="415.33771"
-       id="text6041"><tspan
-         sodipodi:role="line"
-         id="tspan6043"
-         x="134.79706"
-         y="415.33771"
-         style="fill:#979797;fill-opacity:1;font-family:Courier">000000000000</tspan></text>
-    <path
-       inkscape:connection-end="#rect6039"
-       inkscape:connector-type="polyline"
-       id="path6045"
-       d="M 177.38238,372.82195 L 177.38235,389.20303"
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#686868;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
-    <rect
-       y="245.94225"
-       x="447.28412"
-       height="204.51619"
-       width="174.36833"
-       id="rect6140"
-       style="fill:url(#linearGradient6996);fill-opacity:1;stroke:#686868;stroke-width:0.66539276;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <g
-       id="g6130"
-       transform="translate(152.3254,24.38544)">
-      <rect
-         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect6106"
-         width="134.53746"
-         height="44.537449"
-         x="314.87415"
-         y="257.95059" />
-      <text
-         xml:space="preserve"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         x="339.55664"
-         y="283.7113"
-         id="text6108"><tspan
-           sodipodi:role="line"
-           id="tspan6110"
-           x="339.55664"
-           y="283.7113"
-           style="font-family:Courier">ffb20e1701ea</tspan></text>
-    </g>
-    <g
-       id="g6135"
-       transform="translate(153.0396,49.83106)">
-      <rect
-         inkscape:transform-center-y="102.85714"
-         inkscape:transform-center-x="129.28571"
-         style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect6112"
-         width="134.53746"
-         height="44.537449"
-         x="314.15985"
-         y="326.52203" />
-      <text
-         inkscape:transform-center-y="102.7311"
-         inkscape:transform-center-x="128.69672"
-         xml:space="preserve"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         x="338.84335"
-         y="352.28271"
-         id="text6114"><tspan
-           sodipodi:role="line"
-           id="tspan6116"
-           x="338.84335"
-           y="352.28271"
-           style="fill:#979797;fill-opacity:1;font-family:Courier">000000000000</tspan></text>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="466.63208"
-       y="270.479"
-       id="text6118"><tspan
-         sodipodi:role="line"
-         id="tspan6120"
-         x="466.63208"
-         y="270.479">First parent</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="466.07544"
-       y="364.49615"
-       id="text6122"><tspan
-         sodipodi:role="line"
-         id="tspan6124"
-         x="466.07544"
-         y="364.49615">Second parent</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="446.61743"
-       y="231.36218"
-       id="text6195"><tspan
-         sodipodi:role="line"
-         id="tspan6197"
-         x="446.61743"
-         y="231.36218">Parents of working directory</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
-       d="M 466.82542,300.21999 L 377.00207,294.39744"
-       id="path6266"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#g6130"
-       inkscape:connection-end="#rect1925" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 665.12232,418.17579 L 665.12232,418.17579"
-       id="path6270"
-       inkscape:connector-type="polyline" />
-    <g
-       id="g2845">
-      <rect
-         y="266.24374"
-         x="242.09048"
-         height="44.537449"
-         width="134.53746"
-         id="rect1925"
-         style="fill:#9f9f9f;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text1927"
-         y="292.00446"
-         x="266.77298"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="font-family:Courier"
-           y="292.00446"
-           x="266.77298"
-           id="tspan1929"
-           sodipodi:role="line">ffb20e1701ea</tspan></text>
-    </g>
-    <path
-       inkscape:connector-type="polyline"
-       id="path1933"
-       d="M 260.89978,311.15532 L 225.84185,327.53627"
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
-       inkscape:connection-end="#g6976" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="109.45568"
-       y="231.4554"
-       id="text2837"><tspan
-         sodipodi:role="line"
-         id="tspan2839"
-         x="109.45568"
-         y="231.4554">Pre-existing head</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="237.54184"
-       y="231.4554"
-       id="text2841"><tspan
-         sodipodi:role="line"
-         id="tspan2843"
-         x="237.54184"
-         y="231.4554">Newly created head (and tip)</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
-       d="M 148.05048,235.87482 L 149.94915,265.86962"
-       id="path2850"
-       inkscape:connector-type="polyline"
-       inkscape:connection-end="#g1935" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
-       d="M 303.83495,238.08453 L 306.87874,265.86962"
-       id="path2852"
-       inkscape:connector-type="polyline"
-       inkscape:connection-end="#g2845" />
-  </g>
-</svg>
--- a/en/images/wdir-merge.svg	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,425 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg5971"
-   sodipodi:version="0.32"
-   inkscape:version="0.44.1"
-   sodipodi:docbase="/home/bos/hg/hgbook/en"
-   sodipodi:docname="wdir-merge.svg">
-  <defs
-     id="defs5973">
-    <marker
-       inkscape:stockid="Arrow1Mstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mstart"
-       style="overflow:visible">
-      <path
-         id="path4855"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
-         transform="scale(0.4) translate(10,0)" />
-    </marker>
-    <linearGradient
-       id="linearGradient6049">
-      <stop
-         style="stop-color:#686868;stop-opacity:1;"
-         offset="0"
-         id="stop6051" />
-      <stop
-         style="stop-color:#f0f0f0;stop-opacity:1;"
-         offset="1"
-         id="stop6053" />
-    </linearGradient>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;">
-      <path
-         id="path4852"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6083"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-240.0462,-8.633237e-6)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6142"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-42.00893,-30.49544)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6193"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-240.0462,-8.633237e-6)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6216"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6232"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000473,0,0,0.790947,-11.16012,50.85693)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6445"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6974"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.911882,0,0,0.789965,-574.7896,51.22599)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6996"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000473,0,0,0.790947,112.8399,50.85693)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     gridtolerance="10000"
-     guidetolerance="10"
-     objecttolerance="10"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.28"
-     inkscape:cx="345.85973"
-     inkscape:cy="690.49342"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:window-width="906"
-     inkscape:window-height="620"
-     inkscape:window-x="0"
-     inkscape:window-y="25">
-    <sodipodi:guide
-       orientation="vertical"
-       position="-1.4285714"
-       id="guide6022" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata5976">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <rect
-       y="246.06918"
-       x="64.325172"
-       height="204.26233"
-       width="333.2135"
-       id="rect6047"
-       style="fill:url(#linearGradient6974);fill-opacity:1;stroke:#686868;stroke-width:0.91925466;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <g
-       id="g6976"
-       transform="translate(70,0)">
-      <rect
-         y="327.9104"
-         x="40.113693"
-         height="44.537449"
-         width="134.53746"
-         id="rect6004"
-         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text6006"
-         y="353.67111"
-         x="62.654205"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="font-family:Courier"
-           y="353.67111"
-           x="62.654205"
-           id="tspan6008"
-           sodipodi:role="line">7b064d8bac5e</tspan></text>
-    </g>
-    <path
-       inkscape:connector-type="polyline"
-       id="path6020"
-       d="M 160.92915,311.15532 L 167.83571,327.53627"
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
-       inkscape:connection-end="#g6976"
-       inkscape:connection-start="#g1935" />
-    <rect
-       style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect6039"
-       width="134.53746"
-       height="44.537449"
-       x="110.11359"
-       y="389.57703" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="134.79706"
-       y="415.33771"
-       id="text6041"><tspan
-         sodipodi:role="line"
-         id="tspan6043"
-         x="134.79706"
-         y="415.33771"
-         style="fill:#979797;fill-opacity:1;font-family:Courier">000000000000</tspan></text>
-    <path
-       inkscape:connection-end="#rect6039"
-       inkscape:connector-type="polyline"
-       id="path6045"
-       d="M 177.38238,372.82195 L 177.38235,389.20303"
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#686868;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
-    <rect
-       y="245.94225"
-       x="447.28412"
-       height="204.51619"
-       width="174.36833"
-       id="rect6140"
-       style="fill:url(#linearGradient6996);fill-opacity:1;stroke:#686868;stroke-width:0.66539276;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <g
-       id="g6130"
-       transform="translate(152.3254,24.38544)">
-      <rect
-         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect6106"
-         width="134.53746"
-         height="44.537449"
-         x="314.87415"
-         y="257.95059" />
-      <text
-         xml:space="preserve"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         x="339.55664"
-         y="283.7113"
-         id="text6108"><tspan
-           sodipodi:role="line"
-           id="tspan6110"
-           x="339.55664"
-           y="283.7113"
-           style="font-family:Courier">ffb20e1701ea</tspan></text>
-    </g>
-    <g
-       id="g6135"
-       transform="translate(153.0396,49.83106)">
-      <rect
-         inkscape:transform-center-y="102.85714"
-         inkscape:transform-center-x="129.28571"
-         style="fill:#d4d4d4;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect6112"
-         width="134.53746"
-         height="44.537449"
-         x="314.15985"
-         y="326.52203" />
-      <text
-         inkscape:transform-center-y="102.7311"
-         inkscape:transform-center-x="128.69672"
-         xml:space="preserve"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         x="338.84335"
-         y="352.28271"
-         id="text6114"><tspan
-           sodipodi:role="line"
-           id="tspan6116"
-           x="338.84335"
-           y="352.28271"
-           style="fill:black;fill-opacity:1;font-family:Courier">e7639888bb2f</tspan></text>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="466.63208"
-       y="270.479"
-       id="text6118"><tspan
-         sodipodi:role="line"
-         id="tspan6120"
-         x="466.63208"
-         y="270.479">First parent (unchanged)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="466.07544"
-       y="364.49615"
-       id="text6122"><tspan
-         sodipodi:role="line"
-         id="tspan6124"
-         x="466.07544"
-         y="364.49615">Second parent</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="446.61743"
-       y="231.36218"
-       id="text6195"><tspan
-         sodipodi:role="line"
-         id="tspan6197"
-         x="446.61743"
-         y="231.36218">Parents of working directory</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
-       d="M 466.82542,300.21999 L 377.00207,294.39744"
-       id="path6266"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#g6130"
-       inkscape:connection-end="#rect1925" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 665.12232,418.17579 L 665.12232,418.17579"
-       id="path6270"
-       inkscape:connector-type="polyline" />
-    <g
-       id="g2845">
-      <rect
-         y="266.24374"
-         x="242.09048"
-         height="44.537449"
-         width="134.53746"
-         id="rect1925"
-         style="fill:#9f9f9f;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text1927"
-         y="292.00446"
-         x="266.77298"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="font-family:Courier"
-           y="292.00446"
-           x="266.77298"
-           id="tspan1929"
-           sodipodi:role="line">ffb20e1701ea</tspan></text>
-    </g>
-    <path
-       inkscape:connector-type="polyline"
-       id="path1933"
-       d="M 260.89978,311.15532 L 225.84185,327.53627"
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline"
-       inkscape:connection-end="#g6976" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="109.45568"
-       y="231.4554"
-       id="text2837"><tspan
-         sodipodi:role="line"
-         id="tspan2839"
-         x="109.45568"
-         y="231.4554">Pre-existing head</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="237.54184"
-       y="231.4554"
-       id="text2841"><tspan
-         sodipodi:role="line"
-         id="tspan2843"
-         x="237.54184"
-         y="231.4554">Newly created head (and tip)</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
-       d="M 148.05048,235.87482 L 149.94915,265.86962"
-       id="path2850"
-       inkscape:connector-type="polyline"
-       inkscape:connection-end="#g1935" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
-       d="M 303.83495,238.08453 L 306.87874,265.86962"
-       id="path2852"
-       inkscape:connector-type="polyline"
-       inkscape:connection-end="#g2845" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
-       d="M 466.82545,379.17944 L 219.0253,307.95488"
-       id="path3016"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#g6135"
-       inkscape:connection-end="#g1935" />
-    <g
-       id="g1935">
-      <rect
-         y="266.24374"
-         x="84.113708"
-         height="44.537449"
-         width="134.53746"
-         id="rect5996"
-         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text5998"
-         y="292.00446"
-         x="108.7962"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="font-family:Courier"
-           y="292.00446"
-           x="108.7962"
-           id="tspan6000"
-           sodipodi:role="line">e7639888bb2f</tspan></text>
-    </g>
-  </g>
-</svg>
--- a/en/images/wdir-pre-branch.svg	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,364 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg5971"
-   sodipodi:version="0.32"
-   inkscape:version="0.44.1"
-   sodipodi:docbase="/home/bos/hg/hgbook/en"
-   sodipodi:docname="wdir-branch.svg">
-  <defs
-     id="defs5973">
-    <marker
-       inkscape:stockid="Arrow1Mstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mstart"
-       style="overflow:visible">
-      <path
-         id="path4855"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
-         transform="scale(0.4) translate(10,0)" />
-    </marker>
-    <linearGradient
-       id="linearGradient6049">
-      <stop
-         style="stop-color:#686868;stop-opacity:1;"
-         offset="0"
-         id="stop6051" />
-      <stop
-         style="stop-color:#f0f0f0;stop-opacity:1;"
-         offset="1"
-         id="stop6053" />
-    </linearGradient>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;">
-      <path
-         id="path4852"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6083"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-240.0462,-8.633237e-6)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6142"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-42.00893,-30.49544)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6193"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-240.0462,-8.633237e-6)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6216"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6232"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000473,0,0,0.790947,-11.16012,50.85693)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6445"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6974"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000474,0,0,0.790947,-314.246,50.85694)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6996"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000473,0,0,0.790947,-85.16012,50.85693)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     gridtolerance="10000"
-     guidetolerance="10"
-     objecttolerance="10"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.90509668"
-     inkscape:cx="390.0539"
-     inkscape:cy="690.49342"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:window-width="906"
-     inkscape:window-height="620"
-     inkscape:window-x="0"
-     inkscape:window-y="25">
-    <sodipodi:guide
-       orientation="vertical"
-       position="-1.4285714"
-       id="guide6022" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata5976">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <rect
-       y="245.94225"
-       x="20.198257"
-       height="204.51619"
-       width="174.36833"
-       id="rect6047"
-       style="fill:url(#linearGradient6974);fill-opacity:1;stroke:#686868;stroke-width:0.66539276;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <rect
-       style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect5996"
-       width="134.53746"
-       height="44.537449"
-       x="40.113693"
-       y="266.24374" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="64.796204"
-       y="292.00446"
-       id="text5998"><tspan
-         sodipodi:role="line"
-         id="tspan6000"
-         x="64.796204"
-         y="292.00446"
-         style="font-family:Courier">e7639888bb2f</tspan></text>
-    <g
-       id="g6976">
-      <rect
-         y="327.9104"
-         x="40.113693"
-         height="44.537449"
-         width="134.53746"
-         id="rect6004"
-         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text6006"
-         y="353.67111"
-         x="62.654205"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="font-family:Courier"
-           y="353.67111"
-           x="62.654205"
-           id="tspan6008"
-           sodipodi:role="line">7b064d8bac5e</tspan></text>
-    </g>
-    <path
-       inkscape:connection-end="#rect6004"
-       inkscape:connector-type="polyline"
-       id="path6020"
-       d="M 107.38242,311.15529 L 107.38242,327.53626"
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
-    <rect
-       style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect6039"
-       width="134.53746"
-       height="44.537449"
-       x="40.113571"
-       y="389.57703" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="64.797073"
-       y="415.33771"
-       id="text6041"><tspan
-         sodipodi:role="line"
-         id="tspan6043"
-         x="64.797073"
-         y="415.33771"
-         style="fill:#979797;fill-opacity:1;font-family:Courier">000000000000</tspan></text>
-    <path
-       inkscape:connection-end="#rect6039"
-       inkscape:connector-type="polyline"
-       id="path6045"
-       d="M 107.38238,372.82195 L 107.38235,389.20301"
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#686868;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="19.660461"
-       y="231.36218"
-       id="text6102"><tspan
-         sodipodi:role="line"
-         id="tspan6104"
-         x="19.660461"
-         y="231.36218">History in repository</tspan></text>
-    <rect
-       y="245.94225"
-       x="249.28412"
-       height="204.51619"
-       width="174.36833"
-       id="rect6140"
-       style="fill:url(#linearGradient6996);fill-opacity:1;stroke:#686868;stroke-width:0.66539276;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <g
-       id="g6130"
-       transform="translate(-45.67459,24.38544)">
-      <rect
-         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect6106"
-         width="134.53746"
-         height="44.537449"
-         x="314.87415"
-         y="257.95059" />
-      <text
-         xml:space="preserve"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         x="339.55664"
-         y="283.7113"
-         id="text6108"><tspan
-           sodipodi:role="line"
-           id="tspan6110"
-           x="339.55664"
-           y="283.7113"
-           style="font-family:Courier">7b064d8bac5e</tspan></text>
-    </g>
-    <g
-       id="g6135"
-       transform="translate(-44.96042,49.83106)">
-      <rect
-         inkscape:transform-center-y="102.85714"
-         inkscape:transform-center-x="129.28571"
-         style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect6112"
-         width="134.53746"
-         height="44.537449"
-         x="314.15985"
-         y="326.52203" />
-      <text
-         inkscape:transform-center-y="102.7311"
-         inkscape:transform-center-x="128.69672"
-         xml:space="preserve"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         x="338.84335"
-         y="352.28271"
-         id="text6114"><tspan
-           sodipodi:role="line"
-           id="tspan6116"
-           x="338.84335"
-           y="352.28271"
-           style="fill:#979797;fill-opacity:1;font-family:Courier">000000000000</tspan></text>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="268.63208"
-       y="270.479"
-       id="text6118"><tspan
-         sodipodi:role="line"
-         id="tspan6120"
-         x="268.63208"
-         y="270.479">First parent</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="268.07544"
-       y="364.49615"
-       id="text6122"><tspan
-         sodipodi:role="line"
-         id="tspan6124"
-         x="268.07544"
-         y="364.49615">Second parent</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="248.61746"
-       y="231.36218"
-       id="text6195"><tspan
-         sodipodi:role="line"
-         id="tspan6197"
-         x="248.61746"
-         y="231.36218">Parents of working directory</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
-       d="M 268.82543,318.06163 L 175.02528,336.72225"
-       id="path6266"
-       inkscape:connector-type="polyline"
-       inkscape:connection-end="#g6976"
-       inkscape:connection-start="#g6130" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 665.12232,418.17579 L 665.12232,418.17579"
-       id="path6270"
-       inkscape:connector-type="polyline" />
-  </g>
-</svg>
--- a/en/images/wdir.svg	Fri Mar 20 17:17:55 2009 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,348 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg5971"
-   sodipodi:version="0.32"
-   inkscape:version="0.44.1"
-   sodipodi:docbase="/home/bos/hg/hgbook/en"
-   sodipodi:docname="wdir.svg">
-  <defs
-     id="defs5973">
-    <marker
-       inkscape:stockid="Arrow1Mstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mstart"
-       style="overflow:visible">
-      <path
-         id="path4855"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
-         transform="scale(0.4) translate(10,0)" />
-    </marker>
-    <linearGradient
-       id="linearGradient6049">
-      <stop
-         style="stop-color:#686868;stop-opacity:1;"
-         offset="0"
-         id="stop6051" />
-      <stop
-         style="stop-color:#f0f0f0;stop-opacity:1;"
-         offset="1"
-         id="stop6053" />
-    </linearGradient>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;">
-      <path
-         id="path4852"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6083"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-240.0462,-8.633237e-6)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6142"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-42.00893,-30.49544)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6193"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-240.0462,-8.633237e-6)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6216"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6232"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000473,0,0,0.790947,-11.16012,50.85693)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6049"
-       id="linearGradient6445"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000474,0,0,0.790947,-240.246,50.9948)"
-       x1="333.91171"
-       y1="488.79077"
-       x2="508.94543"
-       y2="263.79077" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     gridtolerance="10000"
-     guidetolerance="10"
-     objecttolerance="10"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.90509668"
-     inkscape:cx="390.0539"
-     inkscape:cy="690.49342"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:window-width="906"
-     inkscape:window-height="620"
-     inkscape:window-x="0"
-     inkscape:window-y="25">
-    <sodipodi:guide
-       orientation="vertical"
-       position="-1.4285714"
-       id="guide6022" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata5976">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <g
-       id="g6431"
-       transform="translate(0,-0.137863)">
-      <rect
-         style="fill:url(#linearGradient6445);fill-opacity:1;stroke:#686868;stroke-width:0.66539276;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect6047"
-         width="174.36833"
-         height="204.51619"
-         x="94.198257"
-         y="246.08011" />
-      <rect
-         y="266.38159"
-         x="114.11369"
-         height="44.537449"
-         width="134.53746"
-         id="rect5996"
-         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text5998"
-         y="292.1423"
-         x="138.7962"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="font-family:Courier"
-           y="292.1423"
-           x="138.7962"
-           id="tspan6000"
-           sodipodi:role="line">e7639888bb2f</tspan></text>
-      <rect
-         y="328.04825"
-         x="114.11369"
-         height="44.537449"
-         width="134.53746"
-         id="rect6004"
-         style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text6006"
-         y="353.80896"
-         x="136.65421"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="font-family:Courier"
-           y="353.80896"
-           x="136.65421"
-           id="tspan6008"
-           sodipodi:role="line">7b064d8bac5e</tspan></text>
-      <path
-         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-         d="M 181.38242,311.29315 L 181.38242,327.67412"
-         id="path6020"
-         inkscape:connector-type="polyline"
-         inkscape:connection-end="#rect6004" />
-      <rect
-         y="389.71487"
-         x="114.11357"
-         height="44.537449"
-         width="134.53746"
-         id="rect6039"
-         style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-      <text
-         id="text6041"
-         y="415.47556"
-         x="138.79707"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           style="fill:#979797;fill-opacity:1;font-family:Courier"
-           y="415.47556"
-           x="138.79707"
-           id="tspan6043"
-           sodipodi:role="line">000000000000</tspan></text>
-      <path
-         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#686868;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
-         d="M 181.38238,372.95981 L 181.38235,389.34087"
-         id="path6045"
-         inkscape:connector-type="polyline"
-         inkscape:connection-end="#rect6039" />
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="93.660484"
-       y="231.36218"
-       id="text6102"><tspan
-         sodipodi:role="line"
-         id="tspan6104"
-         x="93.660484"
-         y="231.36218">History in repository</tspan></text>
-    <g
-       id="g6416">
-      <rect
-         style="fill:url(#linearGradient6232);fill-opacity:1;stroke:#686868;stroke-width:0.66539276;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect6140"
-         width="174.36833"
-         height="204.51619"
-         x="323.28412"
-         y="245.94225" />
-      <g
-         transform="translate(28.32541,24.38544)"
-         id="g6130">
-        <rect
-           y="257.95059"
-           x="314.87415"
-           height="44.537449"
-           width="134.53746"
-           id="rect6106"
-           style="fill:#d4d4d4;fill-opacity:1;stroke:black;stroke-width:0.7482574;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.49651474, 0.74825737;stroke-dashoffset:0;stroke-opacity:1" />
-        <text
-           id="text6108"
-           y="283.7113"
-           x="339.55664"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           xml:space="preserve"><tspan
-             style="font-family:Courier"
-             y="283.7113"
-             x="339.55664"
-             id="tspan6110"
-             sodipodi:role="line">e7639888bb2f</tspan></text>
-      </g>
-      <g
-         transform="translate(29.03958,49.83106)"
-         id="g6135">
-        <rect
-           y="326.52203"
-           x="314.15985"
-           height="44.537449"
-           width="134.53746"
-           id="rect6112"
-           style="fill:#ededed;fill-opacity:1;stroke:#797979;stroke-width:0.74800003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           inkscape:transform-center-x="129.28571"
-           inkscape:transform-center-y="102.85714" />
-        <text
-           id="text6114"
-           y="352.28271"
-           x="338.84335"
-           style="font-size:12px;font-style:normal;font-weight:normal;fill:#979797;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-           xml:space="preserve"
-           inkscape:transform-center-x="128.69672"
-           inkscape:transform-center-y="102.7311"><tspan
-             style="fill:#979797;fill-opacity:1;font-family:Courier"
-             y="352.28271"
-             x="338.84335"
-             id="tspan6116"
-             sodipodi:role="line">000000000000</tspan></text>
-      </g>
-      <text
-         id="text6118"
-         y="270.479"
-         x="342.63208"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           y="270.479"
-           x="342.63208"
-           id="tspan6120"
-           sodipodi:role="line">First parent</tspan></text>
-      <text
-         id="text6122"
-         y="364.49615"
-         x="342.07544"
-         style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-         xml:space="preserve"><tspan
-           y="364.49615"
-           x="342.07544"
-           id="tspan6124"
-           sodipodi:role="line">Second parent</tspan></text>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Times New Roman"
-       x="322.61746"
-       y="231.36218"
-       id="text6195"><tspan
-         sodipodi:role="line"
-         id="tspan6197"
-         x="322.61746"
-         y="231.36218">Parents of working directory</tspan></text>
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
-       d="M 342.82543,299.89384 L 249.02528,293.36123"
-       id="path6266"
-       inkscape:connector-type="polyline"
-       inkscape:connection-start="#g6130"
-       inkscape:connection-end="#rect5996" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 665.12232,418.17579 L 665.12232,418.17579"
-       id="path6270"
-       inkscape:connector-type="polyline" />
-  </g>
-</svg>
--- a/stylesheets/base-html-stylesheet.xsl	Fri Mar 20 17:17:55 2009 +0800
+++ b/stylesheets/base-html-stylesheet.xsl	Mon Mar 30 16:23:33 2009 +0800
@@ -106,7 +106,7 @@
   </xsl:template>
 
   <xsl:template name="user.footer.content">
-    <div class="rwhfooter">
+    <div class="hgfooter">
       <p><img src="/support/figs/rss.png"/> Want to stay up to date? Subscribe to the comment feed for <a id="chapterfeed" class="feed" href="/feeds/comments/">this chapter</a>, or the <a class="feed" href="/feeds/comments/">entire book</a>.</p>
       <p>Copyright 2006, 2007, 2008, 2009 Bryan O'Sullivan.
       Icons by <a href="mailto:mattahan@gmail.com">Paul Davey</a> aka <a href="http://mattahan.deviantart.com/">Mattahan</a>.</p>
--- a/web/README	Fri Mar 20 17:17:55 2009 +0800
+++ b/web/README	Mon Mar 30 16:23:33 2009 +0800
@@ -1,5 +1,5 @@
 This directory contains web-related files.  Surprise!
 
 javascript - files used by the comment system, based on jQuery
-rwh        - Django app that acts as the comment back end
+hgbook     - Django app that acts as the comment back end
 styles.css - style file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/genindex.py	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+
+import glob, os, re
+
+chapter_re = re.compile(r'<(chapter|appendix|preface)\s+id="([^"]+)">')
+filename_re = re.compile(r'<\?dbhtml filename="([^"]+)"\?>')
+title_re = re.compile(r'<title>(.*)</title>')
+
+chapters = glob.glob('../en/ch*.xml') + glob.glob('../en/app*.xml')
+
+fp = open('index-read.html.in', 'w')
+
+print >> fp, '''<!-- -*- html -*- -->
+{% extends "boilerplate.html" %}
+{% block bodycontent %}
+<div class="navheader"><h1 class="booktitle">Mercurial: The Definitive Guide<div class="authors">by Bryan O'Sullivan</div></h1></div>
+<div class="book"><ul class="booktoc">'''
+
+ch = 0
+app = 0
+ab = 0
+for c in chapters:
+    filename = None
+    title = None
+    chapid = None
+    chaptype = None
+    for line in open(c):
+        m = chapter_re.search(line)
+        if m:
+            chaptype, chapid = m.groups()
+        m = filename_re.search(line)
+        if m:
+            filename = m.group(1)
+        m = title_re.search(line)
+        if m:
+            title = m.group(1)
+        if filename and title and chapid:
+            if chaptype == 'appendix':
+                num = chr(ord('A') + app)
+                app += 1
+            else:
+                num = ch
+                ch += 1
+            ab += 1
+            date = os.popen('hg log -l1 --template "{date|isodate}" ' + c).read().split(None, 1)[0]
+            args = {
+                'ab': "ab"[ab % 2],
+                'date': date,
+                'chapid': chapid,
+                'num': num,
+                'filename': filename,
+                'title': title,
+                }
+            print >> fp, '<li class="zebra_%(ab)s"><span class="chapinfo">%(date)s<a href="/feeds/comments/%(chapid)s/"><img src="/support/figs/rss.png"/></a></span>%(num)s. <a href="%(filename)s">%(title)s</a></li>' % args
+            break
+
+print >> fp, '''</ul></div>
+{% endblock %}'''
+
+fp.close()
--- a/web/hgbook.conf	Fri Mar 20 17:17:55 2009 +0800
+++ b/web/hgbook.conf	Mon Mar 30 16:23:33 2009 +0800
@@ -1,7 +1,7 @@
 # -*- apache -*-
 
 <VirtualHost *:80>
-    ServerName www.hgbook.org
+    ServerName hgbook.red-bean.com
     ServerAdmin bos@serpentine.com
     ErrorLog logs/hgbook-error_log
     # Debian:
@@ -12,10 +12,33 @@
     DirectoryIndex index.html.var index.html
     DocumentRoot "/home/bos/hg/hgbook/en/html"
 
+    Redirect permanent /hgbook.html /index.html
+    Redirect permanent /hgbookch1.html /read/preface.html
+    Redirect permanent /hgbookch2.html /read/a-tour-of-mercurial-the-basics.html
+    Redirect permanent /hgbookch3.html /read/a-tour-of-mercurial-merging-work.html
+    Redirect permanent /hgbookch4.html /read/behind-the-scenes.html
+    Redirect permanent /hgbookch5.html /read/mercurial-in-daily-use.html
+    Redirect permanent /hgbookch6.html /read/file-names-and-pattern-matching.html
+    Redirect permanent /hgbookch6.html /read/managing-releases-and-branchy-development.html
+    Redirect permanent /hgbookch7.html /read/finding-and-fixing-mistakes.html
+    Redirect permanent /hgbookch8.html /read/handling-repository-events-with-hooks.html
+    Redirect permanent /hgbookch9.html /read/customizing-the-output-of-mercurial.html
+    Redirect permanent /hgbookch10.html /read/managing-change-with-mercurial-queues.html
+    Redirect permanent /hgbookch11.html /read/advanced-uses-of-mercurial-queues.html
+    Redirect permanent /hgbookch12.html /read/adding-functionality-with-extensions.html
+    Redirect permanent /hgbookap1.html /read/command-reference.html
+    Redirect permanent /hgbookap2.html /read/mercurial-queues-reference.html
+    Redirect permanent /hgbookap3.html /read/installing-mercurial-from-source.html
+    Redirect permanent /hgbookap4.html /read/open-publication-license.html
+    Redirect permanent /hgbookli1.html /read/index.html
+    Redirect permanent /hgbookli2.html /read/index.html
+    Redirect permanent /hgbookli3.html /read/index.html
+    Redirect permanent /hgbookli4.html /read/index.html
+
     # Actively redirect requests via a ServerAlias to the canonical hostname.
     RewriteEngine On
-    RewriteCond %{HTTP_HOST} !=www.hgbook.org
-    RewriteRule ^(.*) http://www.hgbook.org$1 [R]
+    RewriteCond %{HTTP_HOST} !=hgbook.red-bean.com
+    RewriteRule ^(.*) http://hgbook.red-bean.com$1 [R]
 
     <Location "/">
         SetHandler python-program
--- a/web/hgbook/reviewers.py	Fri Mar 20 17:17:55 2009 +0800
+++ b/web/hgbook/reviewers.py	Mon Mar 30 16:23:33 2009 +0800
@@ -52,7 +52,7 @@
 total = 0
 for r in c.fetchall():
     r = r[0].decode('utf-8')
-    if r in ("Bryan O'Sullivan", 'John Goerzen', 'Don Stewart'):
+    if r in ("Bryan O'Sullivan",):
         continue
     total += 1
     m = mappings.get(r.lower())
--- a/web/hgbook/templates/boilerplate.html	Fri Mar 20 17:17:55 2009 +0800
+++ b/web/hgbook/templates/boilerplate.html	Mon Mar 30 16:23:33 2009 +0800
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
   <head>
-    <title>{% block pagetitle %}Real World Haskell{% endblock %}</title>
+    <title>{% block pagetitle %}Mercurial: The Definitive Guide{% endblock %}</title>
     <link rel="stylesheet" href="/support/styles.css" type="text/css"/>
     <link rel="alternate" type="application/atom+xml" title="Comments"
       href="/feeds/comments/"/>
@@ -18,10 +18,8 @@
 	up to date? Subscribe to comment feeds for any chapter, or
 	the <a class="feed"
 	  href="/feeds/comments/">entire book</a>.</p> <p>Copyright
-	2007, 2008 Bryan O'Sullivan, Don Stewart, and John Goerzen. This
-	work is licensed under a <a rel="license" href=
-	  "http://creativecommons.org/licenses/by-nc/3.0/">Creative
-	  Commons Attribution-Noncommercial 3.0 License</a>. Icons by
+	2006, 2007, 2008, 2009 Bryan O'Sullivan.
+	  Icons by
 	  <a href="mailto:mattahan@gmail.com">Paul Davey</a> aka <a
 	  href="http://mattahan.deviantart.com/">Mattahan</a>.</p>
     </div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/index.html.in	Mon Mar 30 16:23:33 2009 +0800
@@ -0,0 +1,65 @@
+<!-- -*- html -*- -->
+{% extends "boilerplate.html" %}
+
+{% block bodycontent %}
+<div class="navheader"><h1 class="booktitle">Mercurial: The Definitive Guide<div class="authors">by Bryan O'Sullivan</div></h1></div>
+
+<div class="book">
+  <h2>Welcome to Mercurial: The Definitive Guide</h2>
+
+  <p>This is the online home of the book &#8220;Mercurial: The
+    Definitive Guide&#8221;.  
+    It will be published in 2009 by O'Reilly Media.</p>
+
+  <p>I make the content <a href="/read/">freely available
+      online</a>.  If you like it, please make a note to buy a copy!</p>
+
+  <p>For news updates, please
+    visit <a href="http://www.serpentine.com/blog/">my blog</a>.</p>
+
+  <h2>You can contribute!</h2>
+
+  <p>I publish the <a href="http://hgbook.red-bean.com/">source
+      code</a> for this book as a Mercurial repository.  Please feel
+    welcome to clone it, make modifications to your copy, and send me
+    changes.</p>
+
+  <p>The online version of the book includes a comment system
+    that you can use to send feedback involving errors, omissions, and
+    suggestions.</p>
+
+  <p>(If you would like to adapt the comment system for a
+    publishing project of your own, the source for the web application
+    is included with the book source at the link above.)</p>
+
+  <h2>What is Mercurial?</h2>
+
+  <p><a href="http://www.selenic.com/mercurial">Mercurial</a> is a
+    fast, lightweight source control management system
+    designed for easy and efficient handling of very large distributed
+    projects.</p>
+
+  <h2>How I help Mercurial and free software, and you can too</h2>
+
+  <p>Mercurial is a member of the <a href="http://conservancy.softwarefreedom.org/">Software Freedom Conservancy</a>, a
+    wonderful non-profit organisation that offers its member projects
+    legal and administrative advice.</p>
+
+  <p>I am donating my royalties from the sales of this book (once it is
+    published) to the Software Freedom Conservancy, and I encourage
+    you to support their work, too.</p>
+
+  <p>The SFC can
+    accept <a href="http://conservancy.softwarefreedom.org/?donate">accept
+    donations</a> (tax-free under IRS 501(c)(3), within the United
+    States) on behalf of its member projects. If you would like to
+    support Mercurial directly, please consider making a donation to
+    the SFC on its behalf.</p>
+
+  <p>If you would like to help free software developers to provide
+    their important public services without being impeded by legal
+    issues, please consider donating to the SFC's sister organisation,
+    the <a href="http://www.softwarefreedom.org/">Software Freedom Law
+    Center</a>.</p>
+</div>
+{% endblock %}
--- a/web/styles.css	Fri Mar 20 17:17:55 2009 +0800
+++ b/web/styles.css	Mon Mar 30 16:23:33 2009 +0800
@@ -269,7 +269,7 @@
   color: darkred;
 }
 
-.rwhfooter {
+.hgfooter {
   width: 60em;
   margin-left: auto;
   margin-right: auto;
@@ -279,14 +279,14 @@
   color: #727272;
 }
 
-.rwhfooter a {
+.hgfooter a {
   color: #5555ff;
 }
 
-.rwhfooter a:visited {
+.hgfooter a:visited {
   opacity: 0.7;
 }
 
-.rwhfooter img {
+.hgfooter img {
   vertical-align: -45%;
 }
--- a/web/texpand.py	Fri Mar 20 17:17:55 2009 +0800
+++ b/web/texpand.py	Mon Mar 30 16:23:33 2009 +0800
@@ -7,7 +7,7 @@
 from django.template import Context, TemplateDoesNotExist
 from django.template.loader import get_template, get_template_from_string
 from django.core.management import setup_environ
-import rwh.settings as settings
+import hgbook.settings as settings
 import sys
 
 setup_environ(settings)