changeset 507:bee5c3240036

Merge branch Faradi-7.1.x
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Fri, 09 Nov 2012 15:07:48 +0400
parents 6bc8a8c4ab2f (diff) 892f95a0f82d (current diff)
children f977639b9a1e
files mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java
diffstat 48 files changed, 1325 insertions(+), 1210 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Fri Nov 09 14:55:58 2012 +0400
+++ b/.hgignore	Fri Nov 09 15:07:48 2012 +0400
@@ -2,4 +2,7 @@
 test-output
 .iws
 dist
-mercurial.properties
\ No newline at end of file
+mercurial.properties
+syntax: glob
+.idea/workspace.xml
+out
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/ant.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AntConfiguration">
+    <defaultAnt bundledAnt="true" />
+    <buildFile url="file://$PROJECT_DIR$/build.xml">
+      <additionalClassPath />
+      <antReference projectDefault="true" />
+      <customJdkName value="" />
+      <maximumHeapSize value="128" />
+      <maximumStackSize value="32" />
+      <properties />
+    </buildFile>
+    <buildFile url="file://$PROJECT_DIR$/build/ant.build.xml">
+      <additionalClassPath />
+      <antReference projectDefault="true" />
+      <customJdkName value="" />
+      <maximumHeapSize value="128" />
+      <maximumStackSize value="2" />
+      <properties />
+    </buildFile>
+  </component>
+</project>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/artifacts/mercurial_agent_jar.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,14 @@
+<component name="ArtifactManager">
+  <artifact type="jar" name="mercurial-agent.jar">
+    <output-path>$PROJECT_DIR$/out/artifacts/mercurial_agent_jar</output-path>
+    <properties id="ant-postprocessing">
+      <options enabled="true">
+        <file>file://$PROJECT_DIR$/build/ant.build.xml</file>
+        <target>replace-tokens-in-teamcity-plugin-xml</target>
+      </options>
+    </properties>
+    <root id="archive" name="mercurial-agent.jar">
+      <element id="module-output" name="mercurial-agent" />
+    </root>
+  </artifact>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/artifacts/mercurial_common_jar.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,8 @@
+<component name="ArtifactManager">
+  <artifact type="jar" name="mercurial-common.jar">
+    <output-path>$PROJECT_DIR$/out/artifacts/mercurial_common_jar</output-path>
+    <root id="archive" name="mercurial-common.jar">
+      <element id="module-output" name="mercurial-common" />
+    </root>
+  </artifact>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/artifacts/mercurial_server_jar.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,8 @@
+<component name="ArtifactManager">
+  <artifact type="jar" name="mercurial-server.jar">
+    <output-path>$PROJECT_DIR$/out/artifacts/mercurial_server_jar</output-path>
+    <root id="archive" name="mercurial-server.jar">
+      <element id="module-output" name="mercurial-server" />
+    </root>
+  </artifact>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/artifacts/mercurial_server_tc_jar.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,8 @@
+<component name="ArtifactManager">
+  <artifact type="jar" name="mercurial-server-tc.jar">
+    <output-path>$PROJECT_DIR$/out/artifacts/mercurial_server_tc_jar</output-path>
+    <root id="archive" name="mercurial-server-tc.jar">
+      <element id="module-output" name="mercurial-server-tc" />
+    </root>
+  </artifact>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/artifacts/plugin.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,29 @@
+<component name="ArtifactManager">
+  <artifact name="plugin">
+    <output-path>$PROJECT_DIR$/out/artifacts/plugin</output-path>
+    <properties id="ant-postprocessing">
+      <options enabled="true">
+        <file>file://$PROJECT_DIR$/build/ant.build.xml</file>
+        <target>replace-tokens-in-teamcity-plugin-xml</target>
+      </options>
+    </properties>
+    <root id="root">
+      <element id="directory" name="server">
+        <element id="artifact" artifact-name="mercurial-server.jar" />
+        <element id="artifact" artifact-name="mercurial-common.jar" />
+        <element id="artifact" artifact-name="mercurial-server-tc.jar" />
+      </element>
+      <element id="directory" name="agent">
+        <element id="archive" name="mercurial.zip">
+          <element id="directory" name="mercurial">
+            <element id="directory" name="lib">
+              <element id="artifact" artifact-name="mercurial-common.jar" />
+              <element id="artifact" artifact-name="mercurial-agent.jar" />
+            </element>
+          </element>
+        </element>
+      </element>
+      <element id="file-copy" path="$PROJECT_DIR$/teamcity-plugin.xml" />
+    </root>
+  </artifact>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/artifacts/zip.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,10 @@
+<component name="ArtifactManager">
+  <artifact name="zip">
+    <output-path>$PROJECT_DIR$/dist</output-path>
+    <root id="root">
+      <element id="archive" name="mercurial.zip">
+        <element id="artifact" artifact-name="plugin" />
+      </element>
+    </root>
+  </artifact>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/compiler.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <option name="DEFAULT_COMPILER" value="Javac" />
+    <resourceExtensions>
+      <entry name=".+\.(properties|xml|html|dtd|tld)" />
+      <entry name=".+\.(gif|png|jpeg|jpg)" />
+    </resourceExtensions>
+    <wildcardResourcePatterns>
+      <entry name="?*.properties" />
+      <entry name="?*.xml" />
+      <entry name="?*.gif" />
+      <entry name="?*.png" />
+      <entry name="?*.jpeg" />
+      <entry name="?*.jpg" />
+      <entry name="?*.html" />
+      <entry name="?*.dtd" />
+      <entry name="?*.tld" />
+      <entry name="?*.jsp" />
+      <entry name="?*.tag" />
+      <entry name="?*.template" />
+    </wildcardResourcePatterns>
+    <annotationProcessing>
+      <profile default="true" name="Default" enabled="false">
+        <processorPath useClasspath="true" />
+      </profile>
+    </annotationProcessing>
+  </component>
+</project>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/copyright/profiles_settings.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,5 @@
+<component name="CopyrightManager">
+  <settings default="">
+    <module2copyright />
+  </settings>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/encodings.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
+</project>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/inspectionProfiles/Project_Default.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,11 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0" is_locked="false">
+    <option name="myName" value="Project Default" />
+    <option name="myLocal" value="false" />
+    <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
+      <option name="processCode" value="true" />
+      <option name="processLiterals" value="true" />
+      <option name="processComments" value="true" />
+    </inspection_tool>
+  </profile>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/inspectionProfiles/profiles_settings.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,15 @@
+<component name="InspectionProjectProfileManager">
+  <settings>
+    <option name="PROJECT_PROFILE" value="Project Default" />
+    <option name="USE_PROJECT_PROFILE" value="true" />
+    <version value="1.0" />
+    <list size="6">
+      <item index="0" class="java.lang.String" itemvalue="TYPO" />
+      <item index="1" class="java.lang.String" itemvalue="WEAK WARNING" />
+      <item index="2" class="java.lang.String" itemvalue="INFO" />
+      <item index="3" class="java.lang.String" itemvalue="WARNING" />
+      <item index="4" class="java.lang.String" itemvalue="ERROR" />
+      <item index="5" class="java.lang.String" itemvalue="SERVER PROBLEM" />
+    </list>
+  </settings>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/libraries/IDEA_openapi.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="IDEA-openapi">
+    <CLASSES>
+      <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/resources_en.jar!/" />
+      <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/util.jar!/" />
+      <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/openapi.jar!/" />
+      <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/annotations.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/libraries/JMock.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,15 @@
+<component name="libraryTable">
+  <library name="JMock">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/hamcrest-library-1.1.jar!/" />
+      <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/hamcrest-core-1.1.jar!/" />
+      <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/jmock-2.5.1.jar!/" />
+      <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/jmock-SNAPSHOT.jar!/" />
+      <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/hamcrest-integration-1.1.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/hamcrest-integration-1.1.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/libraries/JUnit.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="JUnit">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/junit-3.8.1.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/libraries/Log4j.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="Log4j">
+    <CLASSES>
+      <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/log4j-1.2.12.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/libraries/TeamCityAPI_agent.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="TeamCityAPI-agent">
+    <CLASSES>
+      <root url="jar://$TeamCityDistribution$/devPackage/agent-api.jar!/" />
+      <root url="jar://$TeamCityDistribution$/buildAgent/lib/agent.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$TeamCityDistribution$/devPackage/src/openApi-source.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/libraries/TeamCityAPI_common.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="TeamCityAPI-common">
+    <CLASSES>
+      <root url="jar://$TeamCityDistribution$/devPackage/common-api.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$TeamCityDistribution$/devPackage/src/openApi-source.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/libraries/TeamCityAPI_server.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="TeamCityAPI-server">
+    <CLASSES>
+      <root url="jar://$TeamCityDistribution$/devPackage/server-api.jar!/" />
+      <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/server.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$TeamCityDistribution$/devPackage/src/openApi-source.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/libraries/TeamCity_TestsAPI.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,10 @@
+<component name="libraryTable">
+  <library name="TeamCity-TestsAPI">
+    <CLASSES>
+      <root url="jar://$TeamCityDistribution$/devPackage/tests/patches-test.jar!/" />
+      <root url="jar://$TeamCityDistribution$/devPackage/tests/tests-support.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/libraries/TeamCity_Vcs_Api.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="TeamCity Vcs Api">
+    <CLASSES>
+      <root url="jar://$TeamCityDistribution$/devPackage/server-common-api.jar!/" />
+      <root url="jar://$TeamCityDistribution$/devPackage/server-vcs-api.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$TeamCityDistribution$/devPackage/src/openApi-source.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/libraries/TeamCity_impl.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,10 @@
+<component name="libraryTable">
+  <library name="TeamCity-impl">
+    <CLASSES>
+      <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/patches-impl.jar!/" />
+      <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/trove4j.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/libraries/TestNG.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="TestNG">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/testng-5.7-jdk15.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/libraries/jdom.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="jdom">
+    <CLASSES>
+      <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/jdom.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/misc.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="EntryPointsManager">
+    <entry_points version="2.0" />
+  </component>
+  <component name="IdProvider" IDEtalkID="C52C76224CD45BEC1DC62428B699D800" />
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_5" assert-keyword="true" jdk-15="true" project-jdk-name="1.6" project-jdk-type="JavaSDK" />
+</project>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/modules.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/main.iml" filepath="$PROJECT_DIR$/main.iml" />
+      <module fileurl="file://$PROJECT_DIR$/mercurial-agent/mercurial-agent.iml" filepath="$PROJECT_DIR$/mercurial-agent/mercurial-agent.iml" />
+      <module fileurl="file://$PROJECT_DIR$/mercurial-common/mercurial-common.iml" filepath="$PROJECT_DIR$/mercurial-common/mercurial-common.iml" />
+      <module fileurl="file://$PROJECT_DIR$/mercurial-server/mercurial-server.iml" filepath="$PROJECT_DIR$/mercurial-server/mercurial-server.iml" />
+      <module fileurl="file://$PROJECT_DIR$/mercurial-server-tc/mercurial-server-tc.iml" filepath="$PROJECT_DIR$/mercurial-server-tc/mercurial-server-tc.iml" />
+      <module fileurl="file://$PROJECT_DIR$/mercurial-tests/mercurial-tests.iml" filepath="$PROJECT_DIR$/mercurial-tests/mercurial-tests.iml" />
+    </modules>
+  </component>
+</project>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/scopes/scope_settings.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,5 @@
+<component name="DependencyValidationManager">
+  <state>
+    <option name="SKIP_IMPORT_STATEMENTS" value="false" />
+  </state>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/uiDesigner.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.idea/vcs.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="hg4idea" />
+  </component>
+</project>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/ant.build.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,24 @@
+<project name="build hooks" default="replace-tokens-in-teamcity-plugin-xml" basedir=".">
+
+
+  <target name="replace-tokens-in-teamcity-plugin-xml">
+    <property name="home" value="${artifact.output.path}"/>
+
+    <echo message="replacing tokens in teamcity-plugin.xml file under ${home}"/>
+
+    <condition property="build.number" value="snapshot" else="${build.number}">
+      <not>
+        <isset property="build.number"/>
+      </not>
+    </condition>
+
+    <echo message="Setting version to: ${build.number}"/>
+    <!-- update all references in teamcity-plugin.xml files -->
+    <replace dir="${home}" summary="true">
+      <include name="**/teamcity-plugin.xml"/>
+
+      <replacefilter token="@Plugin_Version@" value="${build.number}"/>
+    </replace>
+  </target>
+
+</project>
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CommandUtil.java	Fri Nov 09 14:55:58 2012 +0400
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CommandUtil.java	Fri Nov 09 15:07:48 2012 +0400
@@ -41,7 +41,7 @@
                                    @NotNull final String command,
                                    @NotNull final Set<String> privateData) {
     final long start = System.currentTimeMillis();
-    ExecResult res = SimpleCommandLineProcessRunner.runCommand(cli, null, new SimpleCommandLineProcessRunner.RunCommandEventsAdapter() {
+    ExecResult res = SimpleCommandLineProcessRunner.runCommand(cli, null, new SimpleCommandLineProcessRunner.ProcessRunCallbackAdapter() {
       @Override
       public Integer getOutputIdleSecondsTimeout() {
         return executionTimeout;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial-server-tc/mercurial-server-tc.iml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="false">
+    <output url="file://$MODULE_DIR$/classes" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="TeamCity Vcs Api" level="project" />
+    <orderEntry type="library" name="TeamCityAPI-server" level="project" />
+    <orderEntry type="module" module-name="mercurial-server" />
+    <orderEntry type="library" name="TeamCityAPI-common" level="project" />
+    <orderEntry type="module" module-name="mercurial-common" />
+  </component>
+</module>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial-server-tc/src/META-INF/build-server-plugin-mercurial-tc.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+
+<beans default-autowire="constructor">
+    <bean class="jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialBranchSupport"/>
+</beans>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial-server-tc/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialBranchSupport.java	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,78 @@
+package jetbrains.buildServer.buildTriggers.vcs.mercurial;
+
+import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.ChangeSet;
+import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.HgVcsRoot;
+import jetbrains.buildServer.vcs.*;
+import jetbrains.buildServer.vcs.impl.VcsRootImpl;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class MercurialBranchSupport implements BranchSupport, MercurialServerExtension {
+
+  private HgVcsRootFactory myHgRootFactory;
+  private MercurialVcsSupport myMercurialSupport;
+
+  public MercurialBranchSupport() {
+  }
+
+  public void setMercurialSupport(@NotNull MercurialVcsSupport mercurialSupport) {
+    myMercurialSupport = mercurialSupport;
+  }
+
+  public void setHgRootFactory(@NotNull HgVcsRootFactory hgRootFactory) {
+    myHgRootFactory = hgRootFactory;
+  }
+
+  @NotNull
+  public String getRemoteRunOnBranchPattern() {
+    return "remote-run/*";
+  }
+
+  @NotNull
+  public RepositoryStateData getCurrentState(@NotNull VcsRoot repository) throws VcsException {
+    return myMercurialSupport.getCurrentState(repository);
+  }
+
+  @NotNull
+  public Map<String, String> getBranchRootOptions(@NotNull VcsRoot original, @NotNull String branchName) {
+    final Map<String, String> options = new HashMap<String, String>(original.getProperties());
+    options.put(Constants.BRANCH_NAME_PROP, branchName);
+    return options;
+  }
+
+  @Nullable
+  public PersonalBranchDescription getPersonalBranchDescription(@NotNull VcsRoot original, @NotNull String branchName) throws VcsException {
+    HgVcsRoot hgRoot = myHgRootFactory.createHgRoot(original);
+    VcsRoot branchRoot = createBranchRoot(original, branchName);
+    String baseVersion = myMercurialSupport.getCurrentVersion(original);
+    String branchVersion = myMercurialSupport.getCurrentVersion(branchRoot);
+    String mergeBase = myMercurialSupport.getMergeBase(hgRoot, baseVersion, branchVersion);
+
+    if (mergeBase == null)
+      return null;
+
+    List<ChangeSet> changeSets = myMercurialSupport.createRepo(hgRoot)
+            .log()
+            .fromRevision(mergeBase)
+            .toRevision(branchVersion)
+            .showCommitsFromAllBranches()
+            .call();
+    if (changeSets.size() > 1) {//when branch points to the commit in original branch we get 1 cset
+      String branchId = changeSets.get(1).getId();
+      String username = changeSets.get(changeSets.size() - 1).getUser();
+      return new PersonalBranchDescription(branchId, username);
+    } else {
+      return null;
+    }
+  }
+
+  private VcsRoot createBranchRoot(VcsRoot original, String branchName) {
+    VcsRootImpl result = new VcsRootImpl(original.getId(), original.getProperties());
+    result.addProperty(Constants.BRANCH_NAME_PROP, branchName);
+    return result;
+  }
+}
--- a/mercurial-server/mercurial-server.iml	Fri Nov 09 14:55:58 2012 +0400
+++ b/mercurial-server/mercurial-server.iml	Fri Nov 09 15:07:48 2012 +0400
@@ -19,6 +19,7 @@
     <orderEntry type="library" exported="" name="IDEA-openapi" level="project" />
     <orderEntry type="library" exported="" name="Log4j" level="project" />
     <orderEntry type="module" module-name="mercurial-common" />
+    <orderEntry type="library" name="TeamCity Vcs Api" level="project" />
   </component>
 </module>
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialServerExtension.java	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,4 @@
+package jetbrains.buildServer.buildTriggers.vcs.mercurial;
+
+public interface MercurialServerExtension {
+}
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java	Fri Nov 09 14:55:58 2012 +0400
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java	Fri Nov 09 15:07:48 2012 +0400
@@ -28,7 +28,6 @@
 import jetbrains.buildServer.util.FileUtil;
 import jetbrains.buildServer.util.cache.ResetCacheRegister;
 import jetbrains.buildServer.vcs.*;
-import jetbrains.buildServer.vcs.impl.VcsRootImpl;
 import jetbrains.buildServer.vcs.patches.PatchBuilder;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -52,7 +51,7 @@
  * <p>Working copy of repository is created in the $TEAMCITY_DATA_PATH/system/caches/hg_&lt;hash code> folder.
  * <p>Personal builds (remote runs) are not yet supported, they require corresponding functionality from the IDE.
  */
-public class MercurialVcsSupport extends ServerVcsSupport implements LabelingSupport, VcsFileContentProvider, BranchSupport,
+public class MercurialVcsSupport extends ServerVcsSupport implements LabelingSupport, VcsFileContentProvider,
         CollectChangesBetweenRoots, CollectChangesBetweenRepositories, BuildPatchByCheckoutRules {
   private final VcsManager myVcsManager;
   private final MirrorManager myMirrorManager;
@@ -63,6 +62,7 @@
   private final FileFilter myIgnoreDotHgFilter = new IgnoreDotHgFilter();
   private final FileFilter myAcceptAllFilter = new AcceptAllFilter();
   private final HgTestConnectionSupport myTestConnection;
+  private final Collection<MercurialServerExtension> myExtensions;
 
   public MercurialVcsSupport(@NotNull final VcsManager vcsManager,
                              @NotNull final SBuildServer server,
@@ -73,7 +73,8 @@
                              @NotNull final RepoFactory repoFactory,
                              @NotNull final MirrorManager mirrorManager,
                              @NotNull final HgVcsRootFactory hgVcsRootFactory,
-                             @NotNull final HgTestConnectionSupport testConnection) {
+                             @NotNull final HgTestConnectionSupport testConnection,
+                             @NotNull final Collection<MercurialServerExtension> extensions) {
     myVcsManager = vcsManager;
     myConfig = config;
     myMirrorManager = mirrorManager;
@@ -81,6 +82,7 @@
     myRepoFactory = repoFactory;
     myHgVcsRootFactory = hgVcsRootFactory;
     myTestConnection = testConnection;
+    myExtensions = extensions;
     resetCacheHandlerManager.registerHandler(new MercurialResetCacheHandler(myMirrorManager));
     dispatcher.addListener(new BuildServerAdapter() {
       @Override
@@ -443,12 +445,7 @@
   }
 
   @NotNull
-  public String getRemoteRunOnBranchPattern() {
-    return "remote-run/*";
-  }
-
-  @NotNull
-  public RepositoryState getCurrentState(@NotNull VcsRoot root) throws VcsException {
+  public RepositoryStateData getCurrentState(@NotNull VcsRoot root) throws VcsException {
     HgVcsRoot hgRoot = myHgVcsRootFactory.createHgRoot(root);
     Map<String, String> branchRevisions = getBranchesRevisions(hgRoot);
     String defaultBranchName = hgRoot.getBranchName();
@@ -458,7 +455,7 @@
       e.setRoot(root);
       throw e;
     }
-    return RepositoryStateFactory.createRepositoryState(branchRevisions, defaultBranchName);
+    return RepositoryStateData.createVersionState(defaultBranchName, branchRevisions);
   }
 
   @NotNull
@@ -473,58 +470,18 @@
   }
 
   @NotNull
-  public Map<String, String> getBranchRootOptions(@NotNull VcsRoot root, @NotNull String branchName) {
-    final Map<String, String> options = new HashMap<String, String>(root.getProperties());
-    options.put(Constants.BRANCH_NAME_PROP, branchName);
-    return options;
-  }
-
-
-  @Nullable
-  public PersonalBranchDescription getPersonalBranchDescription(@NotNull VcsRoot root, @NotNull String branchName) throws VcsException {
-    HgVcsRoot hgRoot = myHgVcsRootFactory.createHgRoot(root);
-    VcsRoot branchRoot = createBranchRoot(root, branchName);
-    String baseVersion = getCurrentVersion(root);
-    String branchVersion = getCurrentVersion(branchRoot);
-    String mergeBase = getMergeBase(hgRoot, baseVersion, branchVersion);
-
-    if (mergeBase == null)
-      return null;
-
-    List<ChangeSet> changeSets = createRepo(hgRoot).log()
-            .fromRevision(mergeBase)
-            .toRevision(branchVersion)
-            .showCommitsFromAllBranches()
-            .call();
-    if (changeSets.size() > 1) {//when branch points to the commit in original branch we get 1 cset
-      String branchId = changeSets.get(1).getId();
-      String username = changeSets.get(changeSets.size() - 1).getUser();
-      return new PersonalBranchDescription(branchId, username);
-    } else {
-      return null;
-    }
-  }
-
-
-  private VcsRoot createBranchRoot(VcsRoot original, String branchName) {
-    VcsRootImpl result = new VcsRootImpl(original.getId(), original.getProperties());
-    result.addProperty(Constants.BRANCH_NAME_PROP, branchName);
-    return result;
-  }
-
-  @NotNull
   public List<ModificationData> collectChanges(@NotNull VcsRoot fromRoot,
-                                               @NotNull RepositoryState fromState,
+                                               @NotNull RepositoryStateData fromState,
                                                @NotNull VcsRoot toRoot,
-                                               @NotNull RepositoryState toState,
+                                               @NotNull RepositoryStateData toState,
                                                @NotNull CheckoutRules rules) throws VcsException {
     return collectChanges(toRoot, fromState, toState, rules);
   }
 
   @NotNull
   public List<ModificationData> collectChanges(@NotNull VcsRoot root,
-                                               @NotNull RepositoryState fromState,
-                                               @NotNull RepositoryState toState,
+                                               @NotNull RepositoryStateData fromState,
+                                               @NotNull RepositoryStateData toState,
                                                @NotNull CheckoutRules rules) throws VcsException {
     Set<String> reportedCsetIds = new HashSet<String>();
     List<ModificationData> changes = new ArrayList<ModificationData>();
@@ -560,7 +517,7 @@
 
 
   @Nullable
-  private String getMergeBase(@NotNull HgVcsRoot root, @NotNull String revision1, @NotNull String revision2) throws VcsException {
+  public String getMergeBase(@NotNull HgVcsRoot root, @NotNull String revision1, @NotNull String revision2) throws VcsException {
     String result = createRepo(root).mergeBase()
             .revision1(revision1)
             .revision2(revision2)
@@ -770,7 +727,7 @@
     }
   }
 
-  ServerHgRepo createRepo(@NotNull HgVcsRoot root) throws VcsException {
+  public ServerHgRepo createRepo(@NotNull HgVcsRoot root) throws VcsException {
     return myRepoFactory.create(getWorkingDir(root), myHgPathProvider.getHgPath(root), root.getAuthSettings());
   }
 
@@ -802,4 +759,14 @@
   public ListFilesPolicy getListFilesPolicy() {
     return new ListFilesSupport(this, myHgVcsRootFactory);
   }
+
+
+  @Nullable
+  public <T extends VcsExtension> T getVcsExtension(@NotNull Class<T> klass) {
+    for (MercurialServerExtension e : myExtensions) {
+      if (klass.isInstance(e))
+        return klass.cast(e);
+    }
+    return null;
+  }
 }
--- a/mercurial-tests/mercurial-tests.iml	Fri Nov 09 14:55:58 2012 +0400
+++ b/mercurial-tests/mercurial-tests.iml	Fri Nov 09 15:07:48 2012 +0400
@@ -18,6 +18,8 @@
     <orderEntry type="library" name="TeamCity-TestsAPI" level="project" />
     <orderEntry type="library" name="TeamCity-impl" level="project" />
     <orderEntry type="library" name="TeamCityAPI-agent" level="project" />
+    <orderEntry type="library" name="TeamCity Vcs Api" level="project" />
+    <orderEntry type="module" module-name="mercurial-server-tc" />
   </component>
 </module>
 
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentMirrorCleanerTest.java	Fri Nov 09 14:55:58 2012 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentMirrorCleanerTest.java	Fri Nov 09 15:07:48 2012 +0400
@@ -3,7 +3,6 @@
 import com.intellij.openapi.diagnostic.Logger;
 import jetbrains.buildServer.TempFiles;
 import jetbrains.buildServer.agent.*;
-import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.CommandSettings;
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.TestCommandSettingsFactory;
 import jetbrains.buildServer.log.Log4jFactory;
 import jetbrains.buildServer.vcs.*;
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentSideCheckoutTest.java	Fri Nov 09 14:55:58 2012 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentSideCheckoutTest.java	Fri Nov 09 15:07:48 2012 +0400
@@ -18,7 +18,6 @@
 import jetbrains.buildServer.agent.AgentRunningBuild;
 import jetbrains.buildServer.agent.BuildAgentConfiguration;
 import jetbrains.buildServer.agent.BuildProgressLogger;
-import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.CommandSettings;
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.TestCommandSettingsFactory;
 import jetbrains.buildServer.util.FileUtil;
 import jetbrains.buildServer.util.TestFor;
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentSideCheckoutWithSubreposTest.java	Fri Nov 09 14:55:58 2012 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentSideCheckoutWithSubreposTest.java	Fri Nov 09 15:07:48 2012 +0400
@@ -7,7 +7,6 @@
 import jetbrains.buildServer.agent.BuildProgressLogger;
 import jetbrains.buildServer.agent.vcs.UpdateByIncludeRules2;
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.AuthSettings;
-import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.CommandSettings;
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.TestCommandSettingsFactory;
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.exception.ConnectionRefusedException;
 import jetbrains.buildServer.log.Log4jFactory;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialSupportBuilder.java	Fri Nov 09 15:07:48 2012 +0400
@@ -0,0 +1,81 @@
+package jetbrains.buildServer.buildTriggers.vcs.mercurial;
+
+import jetbrains.buildServer.serverSide.BuildServerListener;
+import jetbrains.buildServer.serverSide.SBuildServer;
+import jetbrains.buildServer.util.EventDispatcher;
+import jetbrains.buildServer.util.cache.ResetCacheHandler;
+import jetbrains.buildServer.util.cache.ResetCacheRegister;
+import jetbrains.buildServer.vcs.VcsManager;
+import org.jetbrains.annotations.NotNull;
+import org.jmock.Expectations;
+import org.jmock.Mockery;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+
+public class MercurialSupportBuilder {
+
+  private Mockery myContext;
+  private ServerPluginConfigBuilder myConfigBuilder;
+  private ServerPluginConfig myConfig;
+  private List<MercurialServerExtension> myExtensions = new ArrayList<MercurialServerExtension>();
+  private HgVcsRootFactory myHgRootFactory;
+
+  public static MercurialSupportBuilder mercurialSupport() {
+    return new MercurialSupportBuilder();
+  }
+
+  @NotNull
+  public MercurialVcsSupport build() throws IOException {
+    if (myContext == null)
+      myContext = new Mockery();
+    VcsManager vcsManager = myContext.mock(VcsManager.class);
+    final SBuildServer server = myContext.mock(SBuildServer.class);
+    final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
+    myContext.checking(new Expectations() {{
+      allowing(server).getExecutor(); will(returnValue(executor));
+    }});
+    EventDispatcher<BuildServerListener> dispatcher = EventDispatcher.create(BuildServerListener.class);
+    if (myConfig == null)
+      myConfig = myConfigBuilder.build();
+    myHgRootFactory = new HgVcsRootFactory(myConfig);
+    MirrorManagerImpl mirrorManager = new MirrorManagerImpl(myConfig);
+    ServerHgPathProvider hgPathProvider = new ServerHgPathProvider(myConfig);
+    RepoFactory repoFactory = new RepoFactory(myConfig, new ServerCommandSettingsFactory());
+    HgTestConnectionSupport testConnection = new HgTestConnectionSupport(myHgRootFactory, repoFactory, mirrorManager, hgPathProvider);
+    final ResetCacheRegister resetCacheManager = myContext.mock(ResetCacheRegister.class);
+    myContext.checking(new Expectations() {{
+      allowing(resetCacheManager).registerHandler(with(any(ResetCacheHandler.class)));
+    }});
+    return new MercurialVcsSupport(vcsManager, server, dispatcher, resetCacheManager, myConfig, hgPathProvider,
+            repoFactory, mirrorManager, myHgRootFactory, testConnection, myExtensions);
+  }
+
+
+  public MercurialSupportBuilder withContext(@NotNull Mockery context) {
+    myContext = context;
+    return this;
+  }
+
+  public MercurialSupportBuilder withConfig(@NotNull ServerPluginConfigBuilder config) {
+    myConfigBuilder = config;
+    return this;
+  }
+
+  public MercurialSupportBuilder withConfig(@NotNull ServerPluginConfig config) {
+    myConfig = config;
+    return this;
+  }
+
+  public MercurialSupportBuilder withExtension(@NotNull MercurialServerExtension extension) {
+    myExtensions.add(extension);
+    return this;
+  }
+
+  public HgVcsRootFactory getHgRootFactory() {
+    return myHgRootFactory;
+  }
+}
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java	Fri Nov 09 14:55:58 2012 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java	Fri Nov 09 15:07:48 2012 +0400
@@ -15,7 +15,6 @@
  */
 package jetbrains.buildServer.buildTriggers.vcs.mercurial;
 
-import com.intellij.execution.configurations.GeneralCommandLine;
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.*;
 import jetbrains.buildServer.util.TestFor;
 import jetbrains.buildServer.vcs.*;
@@ -24,7 +23,6 @@
 import org.hamcrest.Description;
 import org.hamcrest.TypeSafeMatcher;
 import org.jetbrains.annotations.NotNull;
-import org.jmock.Mockery;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
@@ -35,11 +33,11 @@
 import java.util.*;
 
 import static com.intellij.openapi.util.io.FileUtil.*;
+import static jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialSupportBuilder.mercurialSupport;
 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.Util.buildPatch;
 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.Util.copyRepository;
 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.VcsRootBuilder.vcsRoot;
 import static jetbrains.buildServer.util.Util.map;
-import static jetbrains.buildServer.vcs.RepositoryStateFactory.createRepositoryState;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.hasItem;
 
@@ -53,11 +51,10 @@
   @BeforeMethod
   protected void setUp() throws Exception {
     super.setUp();
-    Mockery context = new Mockery();
     myPluginConfig = new ServerPluginConfigBuilder()
             .cachesDir(myTempFiles.createTempDir())
             .build();
-    myVcs = Util.createMercurialServerSupport(context, myPluginConfig);
+    myVcs = mercurialSupport().withConfig(myPluginConfig).build();
   }
 
   protected String getTestDataPath() {
@@ -532,8 +529,13 @@
 
 
   public void test_getPersonalBranchDescription_when_branch_contains_commits() throws Exception {
+    MercurialBranchSupport branchSupport = new MercurialBranchSupport();
+    MercurialSupportBuilder vcsBuilder = new MercurialSupportBuilder();
+    MercurialVcsSupport vcs = vcsBuilder.withConfig(myPluginConfig).withExtension(branchSupport).build();
+    branchSupport.setMercurialSupport(vcs);
+    branchSupport.setHgRootFactory(vcsBuilder.getHgRootFactory());
     VcsRootImpl originalRoot = createVcsRoot(simpleRepo());
-    PersonalBranchDescription description = myVcs.getPersonalBranchDescription(originalRoot, "name with space");
+    PersonalBranchDescription description = vcs.getVcsExtension(BranchSupport.class).getPersonalBranchDescription(originalRoot, "name with space");
     assertNotNull(description);
     assertEquals(description.getBranchId(), "376dcf05cd2a");
     assertEquals(description.getUsername(), "Pavel.Sher");
@@ -541,8 +543,13 @@
 
 
   public void test_getPersonalBranchDescription_when_branch_doesnot_contain_commits() throws Exception {
+    MercurialBranchSupport branchSupport = new MercurialBranchSupport();
+    MercurialSupportBuilder vcsBuilder = new MercurialSupportBuilder();
+    MercurialVcsSupport vcs = vcsBuilder.withConfig(myPluginConfig).withExtension(branchSupport).build();
+    branchSupport.setMercurialSupport(vcs);
+    branchSupport.setHgRootFactory(vcsBuilder.getHgRootFactory());
     VcsRootImpl originalRoot = createVcsRoot(simpleRepo());
-    PersonalBranchDescription description = myVcs.getPersonalBranchDescription(originalRoot, "default");
+    PersonalBranchDescription description = vcs.getVcsExtension(BranchSupport.class).getPersonalBranchDescription(originalRoot, "default");
     assertNull(description);
   }
 
@@ -579,12 +586,11 @@
     assertEquals(russianLocaleVersion, defaultLocaleVersion);
   }
 
-
   public void collect_changes_between_states() throws Exception {
     VcsRootImpl root = createVcsRoot(myRep2Path);
     List<ModificationData> changes = myVcs.collectChanges(root,
-            createRepositoryState(map("default", "1e620196c4b6"), "default"),
-            createRepositoryState(map("default", "505c5b9d01e6", "personal-branch", "96b78d73081d"), "default"),
+            RepositoryStateData.createVersionState("default", map("default", "1e620196c4b6")),
+            RepositoryStateData.createVersionState("default", map("default", "505c5b9d01e6", "personal-branch", "96b78d73081d")),
             CheckoutRules.DEFAULT);
     assertEquals(changes.size(), 4);
     assertThat(changes, hasItem(withVersion("dec47d2d49bf")));
@@ -597,8 +603,8 @@
   public void collect_changes_between_states_does_not_report_duplicate_changes() throws Exception {
     VcsRootImpl root = createVcsRoot(myRep2Path);
     List<ModificationData> changes = myVcs.collectChanges(root,
-            createRepositoryState(map("default", "8c44244d6645"), "default"),
-            createRepositoryState(map("default", "505c5b9d01e6", "personal-branch", "9ec402c74298"), "default"),
+            RepositoryStateData.createVersionState("default", map("default", "8c44244d6645")),
+            RepositoryStateData.createVersionState("default", map("default", "505c5b9d01e6", "personal-branch", "9ec402c74298")),
             CheckoutRules.DEFAULT);
     assertEquals(changes.size(), 8);
     assertThat(changes, hasItem(withVersion("9ec402c74298")));
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/RevisionFormatTest.java	Fri Nov 09 14:55:58 2012 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/RevisionFormatTest.java	Fri Nov 09 15:07:48 2012 +0400
@@ -108,7 +108,7 @@
 
 
   public void should_not_include_revnum_in_current_state() throws VcsException {
-    RepositoryState state = myVcs.getCurrentState(myRoot);
+    RepositoryStateData state = myVcs.getCurrentState(myRoot);
     for (Map.Entry<String, String> entry : state.getBranchRevisions().entrySet()) {
       String branchName = entry.getKey();
       String revision = entry.getKey();
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/Util.java	Fri Nov 09 14:55:58 2012 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/Util.java	Fri Nov 09 15:07:48 2012 +0400
@@ -1,12 +1,12 @@
 package jetbrains.buildServer.buildTriggers.vcs.mercurial;
 
 import jetbrains.buildServer.TempFiles;
-import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.CommandSettings;
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.TestCommandSettingsFactory;
 import jetbrains.buildServer.serverSide.BuildServerListener;
 import jetbrains.buildServer.serverSide.SBuildServer;
 import jetbrains.buildServer.util.EventDispatcher;
 import jetbrains.buildServer.util.FileUtil;
+import jetbrains.buildServer.util.cache.ResetCacheHandler;
 import jetbrains.buildServer.util.cache.ResetCacheRegister;
 import jetbrains.buildServer.vcs.CheckoutRules;
 import jetbrains.buildServer.vcs.VcsException;
@@ -21,6 +21,7 @@
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
+import java.util.Collections;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 
@@ -58,8 +59,12 @@
     MirrorManagerImpl mirrorManager = new MirrorManagerImpl(config);
     ServerHgPathProvider hgPathProvider = new ServerHgPathProvider(config);
     HgTestConnectionSupport testConnection = new HgTestConnectionSupport(hgVcsRootFactory, repoFactory, mirrorManager, hgPathProvider);
-    return new MercurialVcsSupport(vcsManager, server, dispatcher, new ResetCacheRegister(), config, hgPathProvider,
-            repoFactory, mirrorManager, hgVcsRootFactory, testConnection);
+    final ResetCacheRegister resetCacheManager = context.mock(ResetCacheRegister.class);
+    context.checking(new Expectations() {{
+      allowing(resetCacheManager).registerHandler(with(any(ResetCacheHandler.class)));
+    }});
+    return new MercurialVcsSupport(vcsManager, server, dispatcher, resetCacheManager, config, hgPathProvider,
+            repoFactory, mirrorManager, hgVcsRootFactory, testConnection, Collections.<MercurialServerExtension>emptyList());
   }
 
 
--- a/mercurial.ipr	Fri Nov 09 14:55:58 2012 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,490 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="AntConfiguration">
-    <defaultAnt bundledAnt="true" />
-    <buildFile url="file://$PROJECT_DIR$/build.xml">
-      <additionalClassPath />
-      <antReference projectDefault="true" />
-      <customJdkName value="" />
-      <maximumHeapSize value="128" />
-      <maximumStackSize value="32" />
-      <properties />
-    </buildFile>
-  </component>
-  <component name="BuildJarProjectSettings">
-    <option name="BUILD_JARS_ON_MAKE" value="false" />
-  </component>
-  <component name="ChangeBrowserSettings">
-    <option name="MAIN_SPLITTER_PROPORTION" value="0.3" />
-    <option name="MESSAGES_SPLITTER_PROPORTION" value="0.8" />
-    <option name="USE_DATE_BEFORE_FILTER" value="false" />
-    <option name="USE_DATE_AFTER_FILTER" value="false" />
-    <option name="USE_CHANGE_BEFORE_FILTER" value="false" />
-    <option name="USE_CHANGE_AFTER_FILTER" value="false" />
-    <option name="DATE_BEFORE" value="" />
-    <option name="DATE_AFTER" value="" />
-    <option name="CHANGE_BEFORE" value="" />
-    <option name="CHANGE_AFTER" value="" />
-    <option name="USE_USER_FILTER" value="false" />
-    <option name="USER" value="" />
-  </component>
-  <component name="ClearCaseSharedConfig">
-    <option name="myUseUcmModel" value="true" />
-  </component>
-  <component name="CodeStyleProjectProfileManger">
-    <option name="PROJECT_PROFILE" />
-    <option name="USE_PROJECT_LEVEL_SETTINGS" value="false" />
-  </component>
-  <component name="CompilerConfiguration">
-    <option name="DEFAULT_COMPILER" value="Javac" />
-    <resourceExtensions>
-      <entry name=".+\.(properties|xml|html|dtd|tld)" />
-      <entry name=".+\.(gif|png|jpeg|jpg)" />
-    </resourceExtensions>
-    <wildcardResourcePatterns>
-      <entry name="?*.properties" />
-      <entry name="?*.xml" />
-      <entry name="?*.gif" />
-      <entry name="?*.png" />
-      <entry name="?*.jpeg" />
-      <entry name="?*.jpg" />
-      <entry name="?*.html" />
-      <entry name="?*.dtd" />
-      <entry name="?*.tld" />
-      <entry name="?*.jsp" />
-      <entry name="?*.tag" />
-      <entry name="?*.template" />
-    </wildcardResourcePatterns>
-    <annotationProcessing>
-      <profile default="true" name="Default" enabled="false">
-        <processorPath useClasspath="true" />
-      </profile>
-    </annotationProcessing>
-  </component>
-  <component name="CopyrightManager" default="">
-    <module2copyright />
-  </component>
-  <component name="DependenciesAnalyzeManager">
-    <option name="myForwardDirection" value="false" />
-  </component>
-  <component name="DependencyValidationManager">
-    <option name="SKIP_IMPORT_STATEMENTS" value="false" />
-  </component>
-  <component name="EclipseCompilerSettings">
-    <option name="GENERATE_NO_WARNINGS" value="true" />
-    <option name="DEPRECATION" value="false" />
-  </component>
-  <component name="EclipseEmbeddedCompilerSettings">
-    <option name="DEBUGGING_INFO" value="true" />
-    <option name="GENERATE_NO_WARNINGS" value="true" />
-    <option name="DEPRECATION" value="false" />
-    <option name="ADDITIONAL_OPTIONS_STRING" value="" />
-    <option name="MAXIMUM_HEAP_SIZE" value="128" />
-  </component>
-  <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
-  <component name="EntryPointsManager">
-    <entry_points version="2.0" />
-  </component>
-  <component name="ErrorOptionsConfigurable.UI">
-    <option name="proportions">
-      <SplitterProportionsDataImpl />
-    </option>
-  </component>
-  <component name="ExportToHTMLSettings">
-    <option name="PRINT_LINE_NUMBERS" value="false" />
-    <option name="OPEN_IN_BROWSER" value="false" />
-    <option name="OUTPUT_DIRECTORY" />
-  </component>
-  <component name="GlobalLibrariesConfigurable.UI">
-    <option name="proportions">
-      <SplitterProportionsDataImpl />
-    </option>
-  </component>
-  <component name="IdProvider" IDEtalkID="317BB29ECB7DA19EFFA340ECF52563C6" />
-  <component name="InspectionProjectProfileManager">
-    <profiles>
-      <profile version="1.0" is_locked="false">
-        <option name="myName" value="Project Default" />
-        <option name="myLocal" value="false" />
-        <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
-          <option name="processCode" value="true" />
-          <option name="processLiterals" value="true" />
-          <option name="processComments" value="true" />
-        </inspection_tool>
-      </profile>
-    </profiles>
-    <option name="PROJECT_PROFILE" value="Project Default" />
-    <option name="USE_PROJECT_PROFILE" value="true" />
-    <version value="1.0" />
-    <list size="6">
-      <item index="0" class="java.lang.String" itemvalue="TYPO" />
-      <item index="1" class="java.lang.String" itemvalue="WEAK WARNING" />
-      <item index="2" class="java.lang.String" itemvalue="INFO" />
-      <item index="3" class="java.lang.String" itemvalue="WARNING" />
-      <item index="4" class="java.lang.String" itemvalue="ERROR" />
-      <item index="5" class="java.lang.String" itemvalue="SERVER PROBLEM" />
-    </list>
-  </component>
-  <component name="JavadocGenerationManager">
-    <option name="OUTPUT_DIRECTORY" />
-    <option name="OPTION_SCOPE" value="protected" />
-    <option name="OPTION_HIERARCHY" value="true" />
-    <option name="OPTION_NAVIGATOR" value="true" />
-    <option name="OPTION_INDEX" value="true" />
-    <option name="OPTION_SEPARATE_INDEX" value="true" />
-    <option name="OPTION_DOCUMENT_TAG_USE" value="false" />
-    <option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false" />
-    <option name="OPTION_DOCUMENT_TAG_VERSION" value="false" />
-    <option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="true" />
-    <option name="OPTION_DEPRECATED_LIST" value="true" />
-    <option name="OTHER_OPTIONS" value="" />
-    <option name="HEAP_SIZE" />
-    <option name="LOCALE" />
-    <option name="OPEN_IN_BROWSER" value="true" />
-  </component>
-  <component name="JdkListConfigurable.UI">
-    <option name="proportions">
-      <SplitterProportionsDataImpl />
-    </option>
-  </component>
-  <component name="LogConsolePreferences">
-    <option name="FILTER_ERRORS" value="false" />
-    <option name="FILTER_WARNINGS" value="false" />
-    <option name="FILTER_INFO" value="true" />
-    <option name="CUSTOM_FILTER" />
-  </component>
-  <component name="ModuleStructureConfigurable.UI">
-    <option name="proportions">
-      <SplitterProportionsDataImpl />
-    </option>
-  </component>
-  <component name="Palette2">
-    <group name="Swing">
-      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
-      </item>
-      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
-      </item>
-      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
-      </item>
-      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
-        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
-      </item>
-      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
-        <initial-values>
-          <property name="text" value="Button" />
-        </initial-values>
-      </item>
-      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
-        <initial-values>
-          <property name="text" value="RadioButton" />
-        </initial-values>
-      </item>
-      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
-        <initial-values>
-          <property name="text" value="CheckBox" />
-        </initial-values>
-      </item>
-      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
-        <initial-values>
-          <property name="text" value="Label" />
-        </initial-values>
-      </item>
-      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
-          <preferred-size width="150" height="-1" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
-          <preferred-size width="150" height="-1" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
-          <preferred-size width="150" height="-1" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
-      </item>
-      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
-          <preferred-size width="200" height="200" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
-          <preferred-size width="200" height="200" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
-      </item>
-      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
-      </item>
-      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
-      </item>
-      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
-      </item>
-      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
-          <preferred-size width="-1" height="20" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
-      </item>
-      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
-      </item>
-    </group>
-  </component>
-  <component name="PerforceChangeBrowserSettings">
-    <option name="USE_CLIENT_FILTER" value="true" />
-    <option name="CLIENT" value="" />
-  </component>
-  <component name="ProjectDetails">
-    <option name="projectName" value="mercurial" />
-  </component>
-  <component name="ProjectDictionaryState">
-    <dictionary name="Pavel.Sher" />
-  </component>
-  <component name="ProjectKey">
-    <option name="state" value="project://C:\Work\mercurial\mercurial.ipr" />
-  </component>
-  <component name="ProjectLibrariesConfigurable.UI">
-    <option name="proportions">
-      <SplitterProportionsDataImpl />
-    </option>
-  </component>
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/main.iml" filepath="$PROJECT_DIR$/main.iml" />
-      <module fileurl="file://$PROJECT_DIR$/mercurial-agent/mercurial-agent.iml" filepath="$PROJECT_DIR$/mercurial-agent/mercurial-agent.iml" />
-      <module fileurl="file://$PROJECT_DIR$/mercurial-common/mercurial-common.iml" filepath="$PROJECT_DIR$/mercurial-common/mercurial-common.iml" />
-      <module fileurl="file://$PROJECT_DIR$/mercurial-server/mercurial-server.iml" filepath="$PROJECT_DIR$/mercurial-server/mercurial-server.iml" />
-      <module fileurl="file://$PROJECT_DIR$/mercurial-tests/mercurial-tests.iml" filepath="$PROJECT_DIR$/mercurial-tests/mercurial-tests.iml" />
-    </modules>
-  </component>
-  <component name="ProjectResources">
-    <default-html-doctype>http://www.w3.org/1999/xhtml</default-html-doctype>
-  </component>
-  <component name="ProjectRootConfigurable.UI">
-    <option name="proportions">
-      <SplitterProportionsDataImpl />
-    </option>
-  </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_5" assert-keyword="true" jdk-15="true" project-jdk-name="1.6" project-jdk-type="JavaSDK" />
-  <component name="ResourceManagerContainer">
-    <option name="myResourceBundles">
-      <value>
-        <list size="0" />
-      </value>
-    </option>
-  </component>
-  <component name="ScopeChooserConfigurable.UI">
-    <option name="proportions">
-      <SplitterProportionsDataImpl />
-    </option>
-  </component>
-  <component name="Struts Assistant">
-    <option name="showInputs" value="true" />
-    <option name="resources">
-      <value>
-        <option name="strutsPath" />
-        <option name="strutsHelp" />
-      </value>
-    </option>
-    <option name="selectedTaglibs" />
-    <option name="selectedTaglibs" />
-    <option name="myStrutsValidationEnabled" value="true" />
-    <option name="myTilesValidationEnabled" value="true" />
-    <option name="myValidatorValidationEnabled" value="true" />
-    <option name="myReportErrorsAsWarnings" value="true" />
-  </component>
-  <component name="SvnBranchConfigurationManager">
-    <option name="myVersion" value="123" />
-    <option name="mySupportsUserInfoFilter" value="true" />
-  </component>
-  <component name="SvnChangesBrowserSettings">
-    <option name="USE_AUTHOR_FIELD" value="true" />
-    <option name="AUTHOR" value="" />
-    <option name="LOCATION" value="" />
-    <option name="USE_PROJECT_SETTINGS" value="true" />
-    <option name="USE_ALTERNATE_LOCATION" value="false" />
-  </component>
-  <component name="TeamCityRootDirectoryHolder">
-    <option name="myRelativeRootDirectory" />
-  </component>
-  <component name="VCS.FileViewConfiguration">
-    <option name="SELECTED_STATUSES" value="DEFAULT" />
-    <option name="SELECTED_COLUMNS" value="DEFAULT" />
-    <option name="SHOW_FILTERS" value="true" />
-    <option name="CUSTOMIZE_VIEW" value="true" />
-    <option name="SHOW_FILE_HISTORY_AS_TREE" value="true" />
-  </component>
-  <component name="VcsDirectoryMappings">
-    <mapping directory="" vcs="hg4idea" />
-  </component>
-  <component name="WebServicesPlugin" addRequiredLibraries="true" />
-  <component name="com.intellij.ide.util.scopeChooser.ScopeChooserConfigurable" proportions="" version="1">
-    <option name="myLastEditedConfigurable" />
-  </component>
-  <component name="com.intellij.jsf.UserDefinedFacesConfigs">
-    <option name="USER_DEFINED_CONFIGS">
-      <value>
-        <list size="0" />
-      </value>
-    </option>
-  </component>
-  <component name="com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectRootMasterDetailsConfigurable" proportions="" version="1">
-    <option name="myPlainMode" value="false" />
-    <option name="myLastEditedConfigurable" />
-  </component>
-  <component name="com.intellij.profile.ui.ErrorOptionsConfigurable" proportions="" version="1">
-    <option name="myLastEditedConfigurable" />
-  </component>
-  <component name="libraryTable">
-    <library name="IDEA-openapi">
-      <CLASSES>
-        <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/resources_en.jar!/" />
-        <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/util.jar!/" />
-        <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/openapi.jar!/" />
-        <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/annotations.jar!/" />
-      </CLASSES>
-      <JAVADOC />
-      <SOURCES />
-    </library>
-    <library name="jdom">
-      <CLASSES>
-        <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/jdom.jar!/" />
-      </CLASSES>
-      <JAVADOC />
-      <SOURCES />
-    </library>
-    <library name="JMock">
-      <CLASSES>
-        <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/hamcrest-library-1.1.jar!/" />
-        <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/hamcrest-core-1.1.jar!/" />
-        <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/jmock-2.5.1.jar!/" />
-        <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/jmock-SNAPSHOT.jar!/" />
-        <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/hamcrest-integration-1.1.jar!/" />
-      </CLASSES>
-      <JAVADOC />
-      <SOURCES>
-        <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/hamcrest-integration-1.1.jar!/" />
-      </SOURCES>
-    </library>
-    <library name="JUnit">
-      <CLASSES>
-        <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/junit-3.8.1.jar!/" />
-      </CLASSES>
-      <JAVADOC />
-      <SOURCES />
-    </library>
-    <library name="Log4j">
-      <CLASSES>
-        <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/log4j-1.2.12.jar!/" />
-      </CLASSES>
-      <JAVADOC />
-      <SOURCES />
-    </library>
-    <library name="TeamCity-impl">
-      <CLASSES>
-        <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/patches-impl.jar!/" />
-        <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/trove4j.jar!/" />
-      </CLASSES>
-      <JAVADOC />
-      <SOURCES />
-    </library>
-    <library name="TeamCity-TestsAPI">
-      <CLASSES>
-        <root url="jar://$TeamCityDistribution$/devPackage/tests/patches-test.jar!/" />
-        <root url="jar://$TeamCityDistribution$/devPackage/tests/tests-support.jar!/" />
-      </CLASSES>
-      <JAVADOC />
-      <SOURCES />
-    </library>
-    <library name="TeamCityAPI-agent">
-      <CLASSES>
-        <root url="jar://$TeamCityDistribution$/devPackage/agent-api.jar!/" />
-        <root url="jar://$TeamCityDistribution$/buildAgent/lib/agent.jar!/" />
-      </CLASSES>
-      <JAVADOC />
-      <SOURCES>
-        <root url="jar://$TeamCityDistribution$/devPackage/src/openApi-source.jar!/" />
-      </SOURCES>
-    </library>
-    <library name="TeamCityAPI-common">
-      <CLASSES>
-        <root url="jar://$TeamCityDistribution$/devPackage/common-api.jar!/" />
-      </CLASSES>
-      <JAVADOC />
-      <SOURCES>
-        <root url="jar://$TeamCityDistribution$/devPackage/src/openApi-source.jar!/" />
-      </SOURCES>
-    </library>
-    <library name="TeamCityAPI-server">
-      <CLASSES>
-        <root url="jar://$TeamCityDistribution$/devPackage/server-api.jar!/" />
-        <root url="jar://$TeamCityDistribution$/webapps/ROOT/WEB-INF/lib/server.jar!/" />
-      </CLASSES>
-      <JAVADOC />
-      <SOURCES>
-        <root url="jar://$TeamCityDistribution$/devPackage/src/openApi-source.jar!/" />
-      </SOURCES>
-    </library>
-    <library name="TestNG">
-      <CLASSES>
-        <root url="jar://$PROJECT_DIR$/mercurial-tests/lib/testng-5.7-jdk15.jar!/" />
-      </CLASSES>
-      <JAVADOC />
-      <SOURCES />
-    </library>
-  </component>
-  <component name="testng.defaultConfiguration">
-    <outputDirectory />
-    <properties />
-  </component>
-</project>
-
--- a/mercurial.xml	Fri Nov 09 14:55:58 2012 +0400
+++ b/mercurial.xml	Fri Nov 09 15:07:48 2012 +0400
@@ -1,644 +1,601 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="mercurial" default="all">
-  
-  
-  <property file="mercurial.properties"/>
-  <!-- Uncomment the following property if no tests compilation is needed -->
-  <!-- 
-  <property name="skip.tests" value="true"/>
-   -->
-  
-  <!-- Compiler options -->
-  
-  <property name="compiler.debug" value="on"/>
-  <property name="compiler.generate.no.warnings" value="off"/>
-  <property name="compiler.args" value=""/>
-  <property name="compiler.max.memory" value="128m"/>
-  <patternset id="ignored.files">
-    <exclude name="**/CVS/**"/>
-    <exclude name="**/SCCS/**"/>
-    <exclude name="**/RCS/**"/>
-    <exclude name="**/rcs/**"/>
-    <exclude name="**/.DS_Store/**"/>
-    <exclude name="**/.svn/**"/>
-    <exclude name="**/.pyc/**"/>
-    <exclude name="**/.pyo/**"/>
-    <exclude name="**/*.pyc/**"/>
-    <exclude name="**/*.pyo/**"/>
-    <exclude name="**/.git/**"/>
-    <exclude name="**/*.hprof/**"/>
-    <exclude name="**/_svn/**"/>
-    <exclude name="**/.hg/**"/>
-    <exclude name="**/.sbas/**"/>
-    <exclude name="**/.IJI.*/**"/>
-    <exclude name="**/vssver.scc/**"/>
-    <exclude name="**/vssver2.scc/**"/>
-    <exclude name="**/*.orig/**"/>
-    <exclude name="**/*.lib/**"/>
-    <exclude name="**/*~/**"/>
-    <exclude name="**/__pycache__/**"/>
-    <exclude name="**/.bundle/**"/>
-    <exclude name="**/*.rbc/**"/>
-  </patternset>
-  <patternset id="library.patterns">
-    <include name="*.war"/>
-    <include name="*.ear"/>
-    <include name="*.apk"/>
-    <include name="*.zip"/>
-    <include name="*.swc"/>
-    <include name="*.egg"/>
-    <include name="*.jar"/>
-  </patternset>
-  <patternset id="compiler.resources">
-    <include name="**/?*.properties"/>
-    <include name="**/?*.xml"/>
-    <include name="**/?*.gif"/>
-    <include name="**/?*.png"/>
-    <include name="**/?*.jpeg"/>
-    <include name="**/?*.jpg"/>
-    <include name="**/?*.html"/>
-    <include name="**/?*.dtd"/>
-    <include name="**/?*.tld"/>
-    <include name="**/?*.jsp"/>
-    <include name="**/?*.tag"/>
-    <include name="**/?*.template"/>
-  </patternset>
-  
-  <!-- JDK definitions -->
-  
-  <property name="jdk.bin.1.5" value="${jdk.home.1.5}/bin"/>
-  <path id="jdk.classpath.1.5">
-    <fileset dir="${jdk.home.1.5}">
-      <include name="jre/lib/rt.jar"/>
-      <include name="jre/lib/jce.jar"/>
-      <include name="jre/lib/deploy.jar"/>
-      <include name="jre/lib/javaws.jar"/>
-      <include name="jre/lib/jsse.jar"/>
-      <include name="jre/lib/charsets.jar"/>
-      <include name="jre/lib/plugin.jar"/>
-      <include name="jre/lib/ext/localedata.jar"/>
-      <include name="jre/lib/ext/sunpkcs11.jar"/>
-      <include name="jre/lib/ext/sunjce_provider.jar"/>
-      <include name="jre/lib/ext/dnsns.jar"/>
-    </fileset>
-  </path>
-  
-  <property name="project.jdk.home" value="${jdk.home.1.5}"/>
-  <property name="project.jdk.bin" value="${jdk.bin.1.5}"/>
-  <property name="project.jdk.classpath" value="jdk.classpath.1.5"/>
-  
-  
-  <!-- Project Libraries -->
-  
-  <path id="library.idea-openapi.classpath">
-    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/annotations.jar"/>
-    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/openapi.jar"/>
-    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/resources_en.jar"/>
-    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/util.jar"/>
-  </path>
-  
-  <path id="library.jdom.classpath">
-    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/jdom.jar"/>
-  </path>
-  
-  <path id="library.jmock.classpath">
-    <pathelement location="${basedir}/mercurial-tests/lib/hamcrest-core-1.1.jar"/>
-    <pathelement location="${basedir}/mercurial-tests/lib/hamcrest-integration-1.1.jar"/>
-    <pathelement location="${basedir}/mercurial-tests/lib/hamcrest-library-1.1.jar"/>
-    <pathelement location="${basedir}/mercurial-tests/lib/jmock-2.5.1.jar"/>
-    <pathelement location="${basedir}/mercurial-tests/lib/jmock-SNAPSHOT.jar"/>
-  </path>
-  
-  <path id="library.junit.classpath">
-    <pathelement location="${basedir}/mercurial-tests/lib/junit-3.8.1.jar"/>
-  </path>
-  
-  <path id="library.log4j.classpath">
-    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/log4j-1.2.12.jar"/>
-  </path>
-  
-  <path id="library.teamcity-impl.classpath">
-    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/patches-impl.jar"/>
-    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/trove4j.jar"/>
-  </path>
-  
-  <path id="library.teamcity-testsapi.classpath">
-    <pathelement location="${path.variable.teamcitydistribution}/devPackage/tests/patches-test.jar"/>
-    <pathelement location="${path.variable.teamcitydistribution}/devPackage/tests/tests-support.jar"/>
-  </path>
-  
-  <path id="library.teamcityapi-agent.classpath">
-    <pathelement location="${path.variable.teamcitydistribution}/buildAgent/lib/agent.jar"/>
-    <pathelement location="${path.variable.teamcitydistribution}/devPackage/agent-api.jar"/>
-  </path>
-  
-  <path id="library.teamcityapi-common.classpath">
-    <pathelement location="${path.variable.teamcitydistribution}/devPackage/common-api.jar"/>
-  </path>
-  
-  <path id="library.teamcityapi-server.classpath">
-    <pathelement location="${path.variable.teamcitydistribution}/devPackage/server-api.jar"/>
-    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/server.jar"/>
-  </path>
-  
-  <path id="library.testng.classpath">
-    <pathelement location="${basedir}/mercurial-tests/lib/testng-5.7-jdk15.jar"/>
-  </path>
-  
-  
-  <!-- Global Libraries -->
-  
-  
-  <!-- Application Server Libraries -->
-  
-  <!-- Modules -->
-  
-  
-  <!-- Module main -->
-  
-  <dirname property="module.main.basedir" file="${ant.file}"/>
-  
-  
-  <property name="module.jdk.home.main" value="${project.jdk.home}"/>
-  <property name="module.jdk.bin.main" value="${project.jdk.bin}"/>
-  <property name="module.jdk.classpath.main" value="${project.jdk.classpath}"/>
-  
-  <property name="compiler.args.main" value="${compiler.args}"/>
-  
-  <property name="main.output.dir" value="undefined"/>
-  <property name="main.testoutput.dir" value="undefined"/>
-  
-  <path id="main.module.bootclasspath">
-    <!-- Paths to be included in compilation bootclasspath -->
-  </path>
-  
-  <path id="main.module.production.classpath">
-    <path refid="${module.jdk.classpath.main}"/>
-  </path>
-  
-  <path id="main.runtime.production.module.classpath"/>
-  
-  <path id="main.module.classpath">
-    <path refid="${module.jdk.classpath.main}"/>
-  </path>
-  
-  <path id="main.runtime.module.classpath"/>
-  
-  
-  <patternset id="excluded.from.module.main">
-    <patternset refid="ignored.files"/>
-  </patternset>
-  
-  <patternset id="excluded.from.compilation.main">
-    <patternset refid="excluded.from.module.main"/>
-  </patternset>
-  
-  
-  <target name="compile.module.main" depends="compile.module.main.production,compile.module.main.tests" description="Compile module main"/>
-  
-  <target name="compile.module.main.production" description="Compile module main; production classes"/>
-  
-  <target name="compile.module.main.tests" depends="compile.module.main.production" description="compile module main; test classes" unless="skip.tests"/>
-  
-  <target name="clean.module.main" description="cleanup module">
-    <delete dir="${main.output.dir}"/>
-    <delete dir="${main.testoutput.dir}"/>
-  </target>
-  
-  
-  <!-- Module mercurial-common -->
-  
-  <dirname property="module.mercurial-common.basedir" file="${ant.file}"/>
-  
-  
-  <property name="module.jdk.home.mercurial-common" value="${project.jdk.home}"/>
-  <property name="module.jdk.bin.mercurial-common" value="${project.jdk.bin}"/>
-  <property name="module.jdk.classpath.mercurial-common" value="${project.jdk.classpath}"/>
-  
-  <property name="compiler.args.mercurial-common" value="${compiler.args}"/>
-  
-  <property name="mercurial-common.output.dir" value="${module.mercurial-common.basedir}/mercurial-common/classes"/>
-  <property name="mercurial-common.testoutput.dir" value="${module.mercurial-common.basedir}/mercurial-common/classes"/>
-  
-  <path id="mercurial-common.module.bootclasspath">
-    <!-- Paths to be included in compilation bootclasspath -->
-  </path>
-  
-  <path id="mercurial-common.module.production.classpath">
-    <path refid="${module.jdk.classpath.mercurial-common}"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-    <path refid="library.jdom.classpath"/>
-  </path>
-  
-  <path id="mercurial-common.runtime.production.module.classpath">
-    <pathelement location="${mercurial-common.output.dir}"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-    <path refid="library.jdom.classpath"/>
-  </path>
-  
-  <path id="mercurial-common.module.classpath">
-    <path refid="${module.jdk.classpath.mercurial-common}"/>
-    <pathelement location="${mercurial-common.output.dir}"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-    <path refid="library.jdom.classpath"/>
-  </path>
-  
-  <path id="mercurial-common.runtime.module.classpath">
-    <pathelement location="${mercurial-common.output.dir}"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-    <path refid="library.jdom.classpath"/>
-  </path>
-  
-  
-  <patternset id="excluded.from.module.mercurial-common">
-    <patternset refid="ignored.files"/>
-  </patternset>
-  
-  <patternset id="excluded.from.compilation.mercurial-common">
-    <patternset refid="excluded.from.module.mercurial-common"/>
-  </patternset>
-  
-  <path id="mercurial-common.module.sourcepath">
-    <dirset dir="${module.mercurial-common.basedir}/mercurial-common">
-      <include name="src"/>
-    </dirset>
-  </path>
-  
-  
-  <target name="compile.module.mercurial-common" depends="compile.module.mercurial-common.production,compile.module.mercurial-common.tests" description="Compile module mercurial-common"/>
-  
-  <target name="compile.module.mercurial-common.production" description="Compile module mercurial-common; production classes">
-    <mkdir dir="${mercurial-common.output.dir}"/>
-    <javac destdir="${mercurial-common.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.mercurial-common}/javac">
-      <compilerarg line="${compiler.args.mercurial-common}"/>
-      <bootclasspath refid="mercurial-common.module.bootclasspath"/>
-      <classpath refid="mercurial-common.module.production.classpath"/>
-      <src refid="mercurial-common.module.sourcepath"/>
-      <patternset refid="excluded.from.compilation.mercurial-common"/>
-    </javac>
-    
-    <copy todir="${mercurial-common.output.dir}">
-      <fileset dir="${module.mercurial-common.basedir}/mercurial-common/src">
-        <patternset refid="compiler.resources"/>
-        <type type="file"/>
-      </fileset>
-    </copy>
-  </target>
-  
-  <target name="compile.module.mercurial-common.tests" depends="compile.module.mercurial-common.production" description="compile module mercurial-common; test classes" unless="skip.tests"/>
-  
-  <target name="clean.module.mercurial-common" description="cleanup module">
-    <delete dir="${mercurial-common.output.dir}"/>
-    <delete dir="${mercurial-common.testoutput.dir}"/>
-  </target>
-  
-  
-  <!-- Module mercurial-agent -->
-  
-  <dirname property="module.mercurial-agent.basedir" file="${ant.file}"/>
-  
-  
-  <property name="module.jdk.home.mercurial-agent" value="${project.jdk.home}"/>
-  <property name="module.jdk.bin.mercurial-agent" value="${project.jdk.bin}"/>
-  <property name="module.jdk.classpath.mercurial-agent" value="${project.jdk.classpath}"/>
-  
-  <property name="compiler.args.mercurial-agent" value="${compiler.args}"/>
-  
-  <property name="mercurial-agent.output.dir" value="${module.mercurial-agent.basedir}/mercurial-agent/classes"/>
-  <property name="mercurial-agent.testoutput.dir" value="${module.mercurial-agent.basedir}/mercurial-agent/classes"/>
-  
-  <path id="mercurial-agent.module.bootclasspath">
-    <!-- Paths to be included in compilation bootclasspath -->
-  </path>
-  
-  <path id="mercurial-agent.module.production.classpath">
-    <path refid="${module.jdk.classpath.mercurial-agent}"/>
-    <path refid="library.teamcityapi-agent.classpath"/>
-    <pathelement location="${mercurial-common.output.dir}"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-  </path>
-  
-  <path id="mercurial-agent.runtime.production.module.classpath">
-    <pathelement location="${mercurial-agent.output.dir}"/>
-    <path refid="library.teamcityapi-agent.classpath"/>
-    <pathelement location="${mercurial-common.output.dir}"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-    <path refid="library.jdom.classpath"/>
-  </path>
-  
-  <path id="mercurial-agent.module.classpath">
-    <path refid="${module.jdk.classpath.mercurial-agent}"/>
-    <pathelement location="${mercurial-agent.output.dir}"/>
-    <path refid="library.teamcityapi-agent.classpath"/>
-    <pathelement location="${mercurial-common.output.dir}"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-  </path>
-  
-  <path id="mercurial-agent.runtime.module.classpath">
-    <pathelement location="${mercurial-agent.output.dir}"/>
-    <path refid="library.teamcityapi-agent.classpath"/>
-    <pathelement location="${mercurial-common.output.dir}"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-    <path refid="library.jdom.classpath"/>
-  </path>
-  
-  
-  <patternset id="excluded.from.module.mercurial-agent">
-    <patternset refid="ignored.files"/>
-  </patternset>
-  
-  <patternset id="excluded.from.compilation.mercurial-agent">
-    <patternset refid="excluded.from.module.mercurial-agent"/>
-  </patternset>
-  
-  <path id="mercurial-agent.module.sourcepath">
-    <dirset dir="${module.mercurial-agent.basedir}/mercurial-agent">
-      <include name="src"/>
-    </dirset>
-  </path>
-  
-  
-  <target name="compile.module.mercurial-agent" depends="compile.module.mercurial-agent.production,compile.module.mercurial-agent.tests" description="Compile module mercurial-agent"/>
-  
-  <target name="compile.module.mercurial-agent.production" depends="compile.module.mercurial-common" description="Compile module mercurial-agent; production classes">
-    <mkdir dir="${mercurial-agent.output.dir}"/>
-    <javac destdir="${mercurial-agent.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.mercurial-agent}/javac">
-      <compilerarg line="${compiler.args.mercurial-agent}"/>
-      <bootclasspath refid="mercurial-agent.module.bootclasspath"/>
-      <classpath refid="mercurial-agent.module.production.classpath"/>
-      <src refid="mercurial-agent.module.sourcepath"/>
-      <patternset refid="excluded.from.compilation.mercurial-agent"/>
-    </javac>
-    
-    <copy todir="${mercurial-agent.output.dir}">
-      <fileset dir="${module.mercurial-agent.basedir}/mercurial-agent/src">
-        <patternset refid="compiler.resources"/>
-        <type type="file"/>
-      </fileset>
-    </copy>
-  </target>
-  
-  <target name="compile.module.mercurial-agent.tests" depends="compile.module.mercurial-agent.production" description="compile module mercurial-agent; test classes" unless="skip.tests"/>
-  
-  <target name="clean.module.mercurial-agent" description="cleanup module">
-    <delete dir="${mercurial-agent.output.dir}"/>
-    <delete dir="${mercurial-agent.testoutput.dir}"/>
-  </target>
-  
-  
-  <!-- Module mercurial-server -->
-  
-  <dirname property="module.mercurial-server.basedir" file="${ant.file}"/>
-  
-  
-  <property name="module.jdk.home.mercurial-server" value="${project.jdk.home}"/>
-  <property name="module.jdk.bin.mercurial-server" value="${project.jdk.bin}"/>
-  <property name="module.jdk.classpath.mercurial-server" value="${project.jdk.classpath}"/>
-  
-  <property name="compiler.args.mercurial-server" value="${compiler.args}"/>
-  
-  <property name="mercurial-server.output.dir" value="${module.mercurial-server.basedir}/mercurial-server/classes"/>
-  <property name="mercurial-server.testoutput.dir" value="${module.mercurial-server.basedir}/mercurial-server/classes"/>
-  
-  <path id="mercurial-server.module.bootclasspath">
-    <!-- Paths to be included in compilation bootclasspath -->
-  </path>
-  
-  <path id="mercurial-server.module.production.classpath">
-    <path refid="${module.jdk.classpath.mercurial-server}"/>
-    <path refid="library.teamcityapi-server.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-    <path refid="library.log4j.classpath"/>
-    <pathelement location="${mercurial-common.output.dir}"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-  </path>
-  
-  <path id="mercurial-server.runtime.production.module.classpath">
-    <pathelement location="${mercurial-server.output.dir}"/>
-    <path refid="library.teamcityapi-server.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-    <path refid="library.log4j.classpath"/>
-    <pathelement location="${mercurial-common.output.dir}"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-    <path refid="library.jdom.classpath"/>
-  </path>
-  
-  <path id="mercurial-server.module.classpath">
-    <path refid="${module.jdk.classpath.mercurial-server}"/>
-    <pathelement location="${mercurial-server.output.dir}"/>
-    <path refid="library.teamcityapi-server.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-    <path refid="library.log4j.classpath"/>
-    <pathelement location="${mercurial-common.output.dir}"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-  </path>
-  
-  <path id="mercurial-server.runtime.module.classpath">
-    <pathelement location="${mercurial-server.output.dir}"/>
-    <path refid="library.teamcityapi-server.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-    <path refid="library.log4j.classpath"/>
-    <pathelement location="${mercurial-common.output.dir}"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-    <path refid="library.jdom.classpath"/>
-  </path>
-  
-  
-  <patternset id="excluded.from.module.mercurial-server">
-    <patternset refid="ignored.files"/>
-  </patternset>
-  
-  <patternset id="excluded.from.compilation.mercurial-server">
-    <patternset refid="excluded.from.module.mercurial-server"/>
-  </patternset>
-  
-  <path id="mercurial-server.module.sourcepath">
-    <dirset dir="${module.mercurial-server.basedir}/mercurial-server">
-      <include name="resources"/>
-      <include name="src"/>
-    </dirset>
-  </path>
-  
-  
-  <target name="compile.module.mercurial-server" depends="compile.module.mercurial-server.production,compile.module.mercurial-server.tests" description="Compile module mercurial-server"/>
-  
-  <target name="compile.module.mercurial-server.production" depends="compile.module.mercurial-common" description="Compile module mercurial-server; production classes">
-    <mkdir dir="${mercurial-server.output.dir}"/>
-    <javac destdir="${mercurial-server.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.mercurial-server}/javac">
-      <compilerarg line="${compiler.args.mercurial-server}"/>
-      <bootclasspath refid="mercurial-server.module.bootclasspath"/>
-      <classpath refid="mercurial-server.module.production.classpath"/>
-      <src refid="mercurial-server.module.sourcepath"/>
-      <patternset refid="excluded.from.compilation.mercurial-server"/>
-    </javac>
-    
-    <copy todir="${mercurial-server.output.dir}">
-      <fileset dir="${module.mercurial-server.basedir}/mercurial-server/resources">
-        <patternset refid="compiler.resources"/>
-        <type type="file"/>
-      </fileset>
-      <fileset dir="${module.mercurial-server.basedir}/mercurial-server/src">
-        <patternset refid="compiler.resources"/>
-        <type type="file"/>
-      </fileset>
-    </copy>
-  </target>
-  
-  <target name="compile.module.mercurial-server.tests" depends="compile.module.mercurial-server.production" description="compile module mercurial-server; test classes" unless="skip.tests"/>
-  
-  <target name="clean.module.mercurial-server" description="cleanup module">
-    <delete dir="${mercurial-server.output.dir}"/>
-    <delete dir="${mercurial-server.testoutput.dir}"/>
-  </target>
-  
-  
-  <!-- Module mercurial-tests -->
-  
-  <dirname property="module.mercurial-tests.basedir" file="${ant.file}"/>
-  
-  
-  <property name="module.jdk.home.mercurial-tests" value="${project.jdk.home}"/>
-  <property name="module.jdk.bin.mercurial-tests" value="${project.jdk.bin}"/>
-  <property name="module.jdk.classpath.mercurial-tests" value="${project.jdk.classpath}"/>
-  
-  <property name="compiler.args.mercurial-tests" value="${compiler.args}"/>
-  
-  <property name="mercurial-tests.output.dir" value="${module.mercurial-tests.basedir}/mercurial-tests/classes"/>
-  <property name="mercurial-tests.testoutput.dir" value="${module.mercurial-tests.basedir}/mercurial-tests/classes"/>
-  
-  <path id="mercurial-tests.module.bootclasspath">
-    <!-- Paths to be included in compilation bootclasspath -->
-  </path>
-  
-  <path id="mercurial-tests.module.production.classpath">
-    <path refid="${module.jdk.classpath.mercurial-tests}"/>
-    <pathelement location="${mercurial-server.output.dir}"/>
-    <path refid="library.teamcityapi-server.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-    <path refid="library.log4j.classpath"/>
-    <path refid="library.junit.classpath"/>
-    <path refid="library.testng.classpath"/>
-    <path refid="library.jmock.classpath"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-    <pathelement location="${mercurial-common.output.dir}"/>
-    <pathelement location="${mercurial-agent.output.dir}"/>
-    <path refid="library.teamcity-testsapi.classpath"/>
-    <path refid="library.teamcity-impl.classpath"/>
-    <path refid="library.teamcityapi-agent.classpath"/>
-  </path>
-  
-  <path id="mercurial-tests.runtime.production.module.classpath">
-    <pathelement location="${mercurial-tests.output.dir}"/>
-    <pathelement location="${mercurial-server.output.dir}"/>
-    <path refid="library.teamcityapi-server.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-    <path refid="library.log4j.classpath"/>
-    <pathelement location="${mercurial-common.output.dir}"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-    <path refid="library.jdom.classpath"/>
-    <path refid="library.junit.classpath"/>
-    <path refid="library.testng.classpath"/>
-    <path refid="library.jmock.classpath"/>
-    <pathelement location="${mercurial-agent.output.dir}"/>
-    <path refid="library.teamcityapi-agent.classpath"/>
-    <path refid="library.teamcity-testsapi.classpath"/>
-    <path refid="library.teamcity-impl.classpath"/>
-  </path>
-  
-  <path id="mercurial-tests.module.classpath">
-    <path refid="${module.jdk.classpath.mercurial-tests}"/>
-    <pathelement location="${mercurial-tests.output.dir}"/>
-    <pathelement location="${mercurial-server.output.dir}"/>
-    <path refid="library.teamcityapi-server.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-    <path refid="library.log4j.classpath"/>
-    <path refid="library.junit.classpath"/>
-    <path refid="library.testng.classpath"/>
-    <path refid="library.jmock.classpath"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-    <pathelement location="${mercurial-common.output.dir}"/>
-    <pathelement location="${mercurial-agent.output.dir}"/>
-    <path refid="library.teamcity-testsapi.classpath"/>
-    <path refid="library.teamcity-impl.classpath"/>
-    <path refid="library.teamcityapi-agent.classpath"/>
-  </path>
-  
-  <path id="mercurial-tests.runtime.module.classpath">
-    <pathelement location="${mercurial-tests.output.dir}"/>
-    <pathelement location="${mercurial-server.output.dir}"/>
-    <path refid="library.teamcityapi-server.classpath"/>
-    <path refid="library.idea-openapi.classpath"/>
-    <path refid="library.log4j.classpath"/>
-    <pathelement location="${mercurial-common.output.dir}"/>
-    <path refid="library.teamcityapi-common.classpath"/>
-    <path refid="library.jdom.classpath"/>
-    <path refid="library.junit.classpath"/>
-    <path refid="library.testng.classpath"/>
-    <path refid="library.jmock.classpath"/>
-    <pathelement location="${mercurial-agent.output.dir}"/>
-    <path refid="library.teamcityapi-agent.classpath"/>
-    <path refid="library.teamcity-testsapi.classpath"/>
-    <path refid="library.teamcity-impl.classpath"/>
-  </path>
-  
-  
-  <patternset id="excluded.from.module.mercurial-tests">
-    <patternset refid="ignored.files"/>
-  </patternset>
-  
-  <patternset id="excluded.from.compilation.mercurial-tests">
-    <patternset refid="excluded.from.module.mercurial-tests"/>
-  </patternset>
-  
-  <path id="mercurial-tests.module.test.sourcepath">
-    <dirset dir="${module.mercurial-tests.basedir}/mercurial-tests">
-      <include name="src"/>
-    </dirset>
-  </path>
-  
-  
-  <target name="compile.module.mercurial-tests" depends="compile.module.mercurial-tests.production,compile.module.mercurial-tests.tests" description="Compile module mercurial-tests"/>
-  
-  <target name="compile.module.mercurial-tests.production" depends="compile.module.mercurial-server,compile.module.mercurial-common,compile.module.mercurial-agent" description="Compile module mercurial-tests; production classes"/>
-  
-  <target name="compile.module.mercurial-tests.tests" depends="compile.module.mercurial-tests.production" description="compile module mercurial-tests; test classes" unless="skip.tests">
-    <mkdir dir="${mercurial-tests.testoutput.dir}"/>
-    <javac destdir="${mercurial-tests.testoutput.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.mercurial-tests}/javac">
-      <compilerarg line="${compiler.args.mercurial-tests}"/>
-      <bootclasspath refid="mercurial-tests.module.bootclasspath"/>
-      <classpath refid="mercurial-tests.module.classpath"/>
-      <src refid="mercurial-tests.module.test.sourcepath"/>
-      <patternset refid="excluded.from.compilation.mercurial-tests"/>
-    </javac>
-    
-    <copy todir="${mercurial-tests.testoutput.dir}">
-      <fileset dir="${module.mercurial-tests.basedir}/mercurial-tests/src">
-        <patternset refid="compiler.resources"/>
-        <type type="file"/>
-      </fileset>
-    </copy>
-  </target>
-  
-  <target name="clean.module.mercurial-tests" description="cleanup module">
-    <delete dir="${mercurial-tests.output.dir}"/>
-    <delete dir="${mercurial-tests.testoutput.dir}"/>
-  </target>
-  
-  <target name="init" description="Build initialization">
-    <!-- Perform any build initialization in this target -->
-  </target>
-  
-  <target name="clean" depends="clean.module.main, clean.module.mercurial-common, clean.module.mercurial-agent, clean.module.mercurial-server, clean.module.mercurial-tests" description="cleanup all"/>
-  
-  <target name="build.modules" depends="init, clean, compile.module.main, compile.module.mercurial-common, compile.module.mercurial-agent, compile.module.mercurial-server, compile.module.mercurial-tests" description="build all modules"/>
-  
-  <target name="all" depends="build.modules" description="build all"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="mercurial" default="all">
+  
+  
+  <property file="mercurial.properties"/>
+  <!-- Uncomment the following property if no tests compilation is needed -->
+  <!-- 
+  <property name="skip.tests" value="true"/>
+   -->
+  
+  <!-- Compiler options -->
+  
+  <property name="compiler.debug" value="on"/>
+  <property name="compiler.generate.no.warnings" value="off"/>
+  <property name="compiler.args" value=""/>
+  <property name="compiler.max.memory" value="128m"/>
+  <patternset id="ignored.files">
+    <exclude name="**/CVS/**"/>
+    <exclude name="**/SCCS/**"/>
+    <exclude name="**/RCS/**"/>
+    <exclude name="**/rcs/**"/>
+    <exclude name="**/.DS_Store/**"/>
+    <exclude name="**/.svn/**"/>
+    <exclude name="**/.pyc/**"/>
+    <exclude name="**/.pyo/**"/>
+    <exclude name="**/*.pyc/**"/>
+    <exclude name="**/*.pyo/**"/>
+    <exclude name="**/.git/**"/>
+    <exclude name="**/*.hprof/**"/>
+    <exclude name="**/_svn/**"/>
+    <exclude name="**/.hg/**"/>
+    <exclude name="**/*.lib/**"/>
+    <exclude name="**/*~/**"/>
+    <exclude name="**/__pycache__/**"/>
+    <exclude name="**/.bundle/**"/>
+    <exclude name="**/*.rbc/**"/>
+    <exclude name="**/*.orig/**"/>
+  </patternset>
+  <patternset id="library.patterns">
+    <include name="*.zip"/>
+    <include name="*.apk"/>
+    <include name="*.war"/>
+    <include name="*.egg"/>
+    <include name="*.ear"/>
+    <include name="*.ane"/>
+    <include name="*.swc"/>
+    <include name="*.jar"/>
+  </patternset>
+  <patternset id="compiler.resources">
+    <include name="**/?*.properties"/>
+    <include name="**/?*.xml"/>
+    <include name="**/?*.gif"/>
+    <include name="**/?*.png"/>
+    <include name="**/?*.jpeg"/>
+    <include name="**/?*.jpg"/>
+    <include name="**/?*.html"/>
+    <include name="**/?*.dtd"/>
+    <include name="**/?*.tld"/>
+    <include name="**/?*.jsp"/>
+    <include name="**/?*.tag"/>
+    <include name="**/?*.template"/>
+  </patternset>
+  
+  
+  <!-- Project Libraries -->
+  
+  <path id="library.idea-openapi.classpath">
+    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/annotations.jar"/>
+    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/openapi.jar"/>
+    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/resources_en.jar"/>
+    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/util.jar"/>
+  </path>
+  
+  <path id="library.jdom.classpath">
+    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/jdom.jar"/>
+  </path>
+  
+  <path id="library.jmock.classpath">
+    <pathelement location="${basedir}/mercurial-tests/lib/hamcrest-core-1.1.jar"/>
+    <pathelement location="${basedir}/mercurial-tests/lib/hamcrest-integration-1.1.jar"/>
+    <pathelement location="${basedir}/mercurial-tests/lib/hamcrest-library-1.1.jar"/>
+    <pathelement location="${basedir}/mercurial-tests/lib/jmock-2.5.1.jar"/>
+    <pathelement location="${basedir}/mercurial-tests/lib/jmock-SNAPSHOT.jar"/>
+  </path>
+  
+  <path id="library.junit.classpath">
+    <pathelement location="${basedir}/mercurial-tests/lib/junit-3.8.1.jar"/>
+  </path>
+  
+  <path id="library.log4j.classpath">
+    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/log4j-1.2.12.jar"/>
+  </path>
+  
+  <path id="library.teamcity-impl.classpath">
+    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/patches-impl.jar"/>
+    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/trove4j.jar"/>
+  </path>
+  
+  <path id="library.teamcity-testsapi.classpath">
+    <pathelement location="${path.variable.teamcitydistribution}/devPackage/tests/patches-test.jar"/>
+    <pathelement location="${path.variable.teamcitydistribution}/devPackage/tests/tests-support.jar"/>
+  </path>
+  
+  <path id="library.teamcity_vcs_api.classpath">
+    <pathelement location="${path.variable.teamcitydistribution}/devPackage/server-common-api.jar"/>
+    <pathelement location="${path.variable.teamcitydistribution}/devPackage/server-vcs-api.jar"/>
+  </path>
+  
+  <path id="library.teamcityapi-agent.classpath">
+    <pathelement location="${path.variable.teamcitydistribution}/buildAgent/lib/agent.jar"/>
+    <pathelement location="${path.variable.teamcitydistribution}/devPackage/agent-api.jar"/>
+  </path>
+  
+  <path id="library.teamcityapi-common.classpath">
+    <pathelement location="${path.variable.teamcitydistribution}/devPackage/common-api.jar"/>
+  </path>
+  
+  <path id="library.teamcityapi-server.classpath">
+    <pathelement location="${path.variable.teamcitydistribution}/devPackage/server-api.jar"/>
+    <pathelement location="${path.variable.teamcitydistribution}/webapps/ROOT/WEB-INF/lib/server.jar"/>
+  </path>
+  
+  <path id="library.testng.classpath">
+    <pathelement location="${basedir}/mercurial-tests/lib/testng-5.7-jdk15.jar"/>
+  </path>
+  
+  
+  <!-- Application Server Libraries -->
+  
+  <!-- Modules -->
+  
+  
+  <!-- Module main -->
+  
+  <dirname property="module.main.basedir" file="${ant.file}"/>
+  
+  
+  
+  <property name="compiler.args.main" value="${compiler.args}"/>
+  
+  <property name="main.output.dir" value="undefined"/>
+  <property name="main.testoutput.dir" value="undefined"/>
+  
+  <path id="main.module.bootclasspath">
+    <!-- Paths to be included in compilation bootclasspath -->
+  </path>
+  
+  <path id="main.module.production.classpath"/>
+  
+  <path id="main.runtime.production.module.classpath"/>
+  
+  <path id="main.module.classpath"/>
+  
+  <path id="main.runtime.module.classpath"/>
+  
+  
+  <patternset id="excluded.from.module.main">
+    <patternset refid="ignored.files"/>
+  </patternset>
+  
+  <patternset id="excluded.from.compilation.main">
+    <patternset refid="excluded.from.module.main"/>
+  </patternset>
+  
+  
+  <target name="compile.module.main" depends="compile.module.main.production,compile.module.main.tests" description="Compile module main"/>
+  
+  <target name="compile.module.main.production" description="Compile module main; production classes"/>
+  
+  <target name="compile.module.main.tests" depends="compile.module.main.production" description="compile module main; test classes" unless="skip.tests"/>
+  
+  <target name="clean.module.main" description="cleanup module">
+    <delete dir="${main.output.dir}"/>
+    <delete dir="${main.testoutput.dir}"/>
+  </target>
+  
+  
+  <!-- Module mercurial-common -->
+  
+  <dirname property="module.mercurial-common.basedir" file="${ant.file}"/>
+  
+  
+  
+  <property name="compiler.args.mercurial-common" value="${compiler.args}"/>
+  
+  <property name="mercurial-common.output.dir" value="${module.mercurial-common.basedir}/mercurial-common/classes"/>
+  <property name="mercurial-common.testoutput.dir" value="${module.mercurial-common.basedir}/mercurial-common/classes"/>
+  
+  <path id="mercurial-common.module.bootclasspath">
+    <!-- Paths to be included in compilation bootclasspath -->
+  </path>
+  
+  <path id="mercurial-common.module.production.classpath">
+    <path refid="library.teamcityapi-common.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+    <path refid="library.jdom.classpath"/>
+  </path>
+  
+  <path id="mercurial-common.runtime.production.module.classpath">
+    <pathelement location="${mercurial-common.output.dir}"/>
+    <path refid="library.teamcityapi-common.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+    <path refid="library.jdom.classpath"/>
+  </path>
+  
+  <path id="mercurial-common.module.classpath">
+    <pathelement location="${mercurial-common.output.dir}"/>
+    <path refid="library.teamcityapi-common.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+    <path refid="library.jdom.classpath"/>
+  </path>
+  
+  <path id="mercurial-common.runtime.module.classpath">
+    <pathelement location="${mercurial-common.output.dir}"/>
+    <path refid="library.teamcityapi-common.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+    <path refid="library.jdom.classpath"/>
+  </path>
+  
+  
+  <patternset id="excluded.from.module.mercurial-common">
+    <patternset refid="ignored.files"/>
+  </patternset>
+  
+  <patternset id="excluded.from.compilation.mercurial-common">
+    <patternset refid="excluded.from.module.mercurial-common"/>
+  </patternset>
+  
+  <path id="mercurial-common.module.sourcepath">
+    <dirset dir="${module.mercurial-common.basedir}/mercurial-common">
+      <include name="src"/>
+    </dirset>
+  </path>
+  
+  
+  <target name="compile.module.mercurial-common" depends="compile.module.mercurial-common.production,compile.module.mercurial-common.tests" description="Compile module mercurial-common"/>
+  
+  <target name="compile.module.mercurial-common.production" description="Compile module mercurial-common; production classes">
+    <mkdir dir="${mercurial-common.output.dir}"/>
+    <javac destdir="${mercurial-common.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true">
+      <compilerarg line="${compiler.args.mercurial-common}"/>
+      <bootclasspath refid="mercurial-common.module.bootclasspath"/>
+      <classpath refid="mercurial-common.module.production.classpath"/>
+      <src refid="mercurial-common.module.sourcepath"/>
+      <patternset refid="excluded.from.compilation.mercurial-common"/>
+    </javac>
+    
+    <copy todir="${mercurial-common.output.dir}">
+      <fileset dir="${module.mercurial-common.basedir}/mercurial-common/src">
+        <patternset refid="compiler.resources"/>
+        <type type="file"/>
+      </fileset>
+    </copy>
+  </target>
+  
+  <target name="compile.module.mercurial-common.tests" depends="compile.module.mercurial-common.production" description="compile module mercurial-common; test classes" unless="skip.tests"/>
+  
+  <target name="clean.module.mercurial-common" description="cleanup module">
+    <delete dir="${mercurial-common.output.dir}"/>
+    <delete dir="${mercurial-common.testoutput.dir}"/>
+  </target>
+  
+  
+  <!-- Module mercurial-agent -->
+  
+  <dirname property="module.mercurial-agent.basedir" file="${ant.file}"/>
+  
+  
+  
+  <property name="compiler.args.mercurial-agent" value="${compiler.args}"/>
+  
+  <property name="mercurial-agent.output.dir" value="${module.mercurial-agent.basedir}/mercurial-agent/classes"/>
+  <property name="mercurial-agent.testoutput.dir" value="${module.mercurial-agent.basedir}/mercurial-agent/classes"/>
+  
+  <path id="mercurial-agent.module.bootclasspath">
+    <!-- Paths to be included in compilation bootclasspath -->
+  </path>
+  
+  <path id="mercurial-agent.module.production.classpath">
+    <path refid="library.teamcityapi-agent.classpath"/>
+    <pathelement location="${mercurial-common.output.dir}"/>
+    <path refid="library.teamcityapi-common.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+  </path>
+  
+  <path id="mercurial-agent.runtime.production.module.classpath">
+    <pathelement location="${mercurial-agent.output.dir}"/>
+    <path refid="library.teamcityapi-agent.classpath"/>
+    <pathelement location="${mercurial-common.output.dir}"/>
+    <path refid="library.teamcityapi-common.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+    <path refid="library.jdom.classpath"/>
+  </path>
+  
+  <path id="mercurial-agent.module.classpath">
+    <pathelement location="${mercurial-agent.output.dir}"/>
+    <path refid="library.teamcityapi-agent.classpath"/>
+    <pathelement location="${mercurial-common.output.dir}"/>
+    <path refid="library.teamcityapi-common.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+  </path>
+  
+  <path id="mercurial-agent.runtime.module.classpath">
+    <pathelement location="${mercurial-agent.output.dir}"/>
+    <path refid="library.teamcityapi-agent.classpath"/>
+    <pathelement location="${mercurial-common.output.dir}"/>
+    <path refid="library.teamcityapi-common.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+    <path refid="library.jdom.classpath"/>
+  </path>
+  
+  
+  <patternset id="excluded.from.module.mercurial-agent">
+    <patternset refid="ignored.files"/>
+  </patternset>
+  
+  <patternset id="excluded.from.compilation.mercurial-agent">
+    <patternset refid="excluded.from.module.mercurial-agent"/>
+  </patternset>
+  
+  <path id="mercurial-agent.module.sourcepath">
+    <dirset dir="${module.mercurial-agent.basedir}/mercurial-agent">
+      <include name="src"/>
+    </dirset>
+  </path>
+  
+  
+  <target name="compile.module.mercurial-agent" depends="compile.module.mercurial-agent.production,compile.module.mercurial-agent.tests" description="Compile module mercurial-agent"/>
+  
+  <target name="compile.module.mercurial-agent.production" depends="compile.module.mercurial-common" description="Compile module mercurial-agent; production classes">
+    <mkdir dir="${mercurial-agent.output.dir}"/>
+    <javac destdir="${mercurial-agent.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true">
+      <compilerarg line="${compiler.args.mercurial-agent}"/>
+      <bootclasspath refid="mercurial-agent.module.bootclasspath"/>
+      <classpath refid="mercurial-agent.module.production.classpath"/>
+      <src refid="mercurial-agent.module.sourcepath"/>
+      <patternset refid="excluded.from.compilation.mercurial-agent"/>
+    </javac>
+    
+    <copy todir="${mercurial-agent.output.dir}">
+      <fileset dir="${module.mercurial-agent.basedir}/mercurial-agent/src">
+        <patternset refid="compiler.resources"/>
+        <type type="file"/>
+      </fileset>
+    </copy>
+  </target>
+  
+  <target name="compile.module.mercurial-agent.tests" depends="compile.module.mercurial-agent.production" description="compile module mercurial-agent; test classes" unless="skip.tests"/>
+  
+  <target name="clean.module.mercurial-agent" description="cleanup module">
+    <delete dir="${mercurial-agent.output.dir}"/>
+    <delete dir="${mercurial-agent.testoutput.dir}"/>
+  </target>
+  
+  
+  <!-- Module mercurial-server -->
+  
+  <dirname property="module.mercurial-server.basedir" file="${ant.file}"/>
+  
+  
+  
+  <property name="compiler.args.mercurial-server" value="${compiler.args}"/>
+  
+  <property name="mercurial-server.output.dir" value="${module.mercurial-server.basedir}/mercurial-server/classes"/>
+  <property name="mercurial-server.testoutput.dir" value="${module.mercurial-server.basedir}/mercurial-server/classes"/>
+  
+  <path id="mercurial-server.module.bootclasspath">
+    <!-- Paths to be included in compilation bootclasspath -->
+  </path>
+  
+  <path id="mercurial-server.module.production.classpath">
+    <path refid="library.teamcityapi-server.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+    <path refid="library.log4j.classpath"/>
+    <pathelement location="${mercurial-common.output.dir}"/>
+    <path refid="library.teamcityapi-common.classpath"/>
+    <path refid="library.teamcity_vcs_api.classpath"/>
+  </path>
+  
+  <path id="mercurial-server.runtime.production.module.classpath">
+    <pathelement location="${mercurial-server.output.dir}"/>
+    <path refid="library.teamcityapi-server.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+    <path refid="library.log4j.classpath"/>
+    <pathelement location="${mercurial-common.output.dir}"/>
+    <path refid="library.teamcityapi-common.classpath"/>
+    <path refid="library.jdom.classpath"/>
+    <path refid="library.teamcity_vcs_api.classpath"/>
+  </path>
+  
+  <path id="mercurial-server.module.classpath">
+    <pathelement location="${mercurial-server.output.dir}"/>
+    <path refid="library.teamcityapi-server.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+    <path refid="library.log4j.classpath"/>
+    <pathelement location="${mercurial-common.output.dir}"/>
+    <path refid="library.teamcityapi-common.classpath"/>
+    <path refid="library.teamcity_vcs_api.classpath"/>
+  </path>
+  
+  <path id="mercurial-server.runtime.module.classpath">
+    <pathelement location="${mercurial-server.output.dir}"/>
+    <path refid="library.teamcityapi-server.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+    <path refid="library.log4j.classpath"/>
+    <pathelement location="${mercurial-common.output.dir}"/>
+    <path refid="library.teamcityapi-common.classpath"/>
+    <path refid="library.jdom.classpath"/>
+    <path refid="library.teamcity_vcs_api.classpath"/>
+  </path>
+  
+  
+  <patternset id="excluded.from.module.mercurial-server">
+    <patternset refid="ignored.files"/>
+  </patternset>
+  
+  <patternset id="excluded.from.compilation.mercurial-server">
+    <patternset refid="excluded.from.module.mercurial-server"/>
+  </patternset>
+  
+  <path id="mercurial-server.module.sourcepath">
+    <dirset dir="${module.mercurial-server.basedir}/mercurial-server">
+      <include name="resources"/>
+      <include name="src"/>
+    </dirset>
+  </path>
+  
+  
+  <target name="compile.module.mercurial-server" depends="compile.module.mercurial-server.production,compile.module.mercurial-server.tests" description="Compile module mercurial-server"/>
+  
+  <target name="compile.module.mercurial-server.production" depends="compile.module.mercurial-common" description="Compile module mercurial-server; production classes">
+    <mkdir dir="${mercurial-server.output.dir}"/>
+    <javac destdir="${mercurial-server.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true">
+      <compilerarg line="${compiler.args.mercurial-server}"/>
+      <bootclasspath refid="mercurial-server.module.bootclasspath"/>
+      <classpath refid="mercurial-server.module.production.classpath"/>
+      <src refid="mercurial-server.module.sourcepath"/>
+      <patternset refid="excluded.from.compilation.mercurial-server"/>
+    </javac>
+    
+    <copy todir="${mercurial-server.output.dir}">
+      <fileset dir="${module.mercurial-server.basedir}/mercurial-server/resources">
+        <patternset refid="compiler.resources"/>
+        <type type="file"/>
+      </fileset>
+      <fileset dir="${module.mercurial-server.basedir}/mercurial-server/src">
+        <patternset refid="compiler.resources"/>
+        <type type="file"/>
+      </fileset>
+    </copy>
+  </target>
+  
+  <target name="compile.module.mercurial-server.tests" depends="compile.module.mercurial-server.production" description="compile module mercurial-server; test classes" unless="skip.tests"/>
+  
+  <target name="clean.module.mercurial-server" description="cleanup module">
+    <delete dir="${mercurial-server.output.dir}"/>
+    <delete dir="${mercurial-server.testoutput.dir}"/>
+  </target>
+  
+  
+  <!-- Module mercurial-tests -->
+  
+  <dirname property="module.mercurial-tests.basedir" file="${ant.file}"/>
+  
+  
+  
+  <property name="compiler.args.mercurial-tests" value="${compiler.args}"/>
+  
+  <property name="mercurial-tests.output.dir" value="${module.mercurial-tests.basedir}/mercurial-tests/classes"/>
+  <property name="mercurial-tests.testoutput.dir" value="${module.mercurial-tests.basedir}/mercurial-tests/classes"/>
+  
+  <path id="mercurial-tests.module.bootclasspath">
+    <!-- Paths to be included in compilation bootclasspath -->
+  </path>
+  
+  <path id="mercurial-tests.module.production.classpath">
+    <pathelement location="${mercurial-server.output.dir}"/>
+    <path refid="library.teamcityapi-server.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+    <path refid="library.log4j.classpath"/>
+    <path refid="library.junit.classpath"/>
+    <path refid="library.testng.classpath"/>
+    <path refid="library.jmock.classpath"/>
+    <path refid="library.teamcityapi-common.classpath"/>
+    <pathelement location="${mercurial-common.output.dir}"/>
+    <pathelement location="${mercurial-agent.output.dir}"/>
+    <path refid="library.teamcity-testsapi.classpath"/>
+    <path refid="library.teamcity-impl.classpath"/>
+    <path refid="library.teamcityapi-agent.classpath"/>
+    <path refid="library.teamcity_vcs_api.classpath"/>
+  </path>
+  
+  <path id="mercurial-tests.runtime.production.module.classpath">
+    <pathelement location="${mercurial-tests.output.dir}"/>
+    <pathelement location="${mercurial-server.output.dir}"/>
+    <path refid="library.teamcityapi-server.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+    <path refid="library.log4j.classpath"/>
+    <pathelement location="${mercurial-common.output.dir}"/>
+    <path refid="library.teamcityapi-common.classpath"/>
+    <path refid="library.jdom.classpath"/>
+    <path refid="library.teamcity_vcs_api.classpath"/>
+    <path refid="library.junit.classpath"/>
+    <path refid="library.testng.classpath"/>
+    <path refid="library.jmock.classpath"/>
+    <pathelement location="${mercurial-agent.output.dir}"/>
+    <path refid="library.teamcityapi-agent.classpath"/>
+    <path refid="library.teamcity-testsapi.classpath"/>
+    <path refid="library.teamcity-impl.classpath"/>
+  </path>
+  
+  <path id="mercurial-tests.module.classpath">
+    <pathelement location="${mercurial-tests.output.dir}"/>
+    <pathelement location="${mercurial-server.output.dir}"/>
+    <path refid="library.teamcityapi-server.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+    <path refid="library.log4j.classpath"/>
+    <path refid="library.junit.classpath"/>
+    <path refid="library.testng.classpath"/>
+    <path refid="library.jmock.classpath"/>
+    <path refid="library.teamcityapi-common.classpath"/>
+    <pathelement location="${mercurial-common.output.dir}"/>
+    <pathelement location="${mercurial-agent.output.dir}"/>
+    <path refid="library.teamcity-testsapi.classpath"/>
+    <path refid="library.teamcity-impl.classpath"/>
+    <path refid="library.teamcityapi-agent.classpath"/>
+    <path refid="library.teamcity_vcs_api.classpath"/>
+  </path>
+  
+  <path id="mercurial-tests.runtime.module.classpath">
+    <pathelement location="${mercurial-tests.output.dir}"/>
+    <pathelement location="${mercurial-server.output.dir}"/>
+    <path refid="library.teamcityapi-server.classpath"/>
+    <path refid="library.idea-openapi.classpath"/>
+    <path refid="library.log4j.classpath"/>
+    <pathelement location="${mercurial-common.output.dir}"/>
+    <path refid="library.teamcityapi-common.classpath"/>
+    <path refid="library.jdom.classpath"/>
+    <path refid="library.teamcity_vcs_api.classpath"/>
+    <path refid="library.junit.classpath"/>
+    <path refid="library.testng.classpath"/>
+    <path refid="library.jmock.classpath"/>
+    <pathelement location="${mercurial-agent.output.dir}"/>
+    <path refid="library.teamcityapi-agent.classpath"/>
+    <path refid="library.teamcity-testsapi.classpath"/>
+    <path refid="library.teamcity-impl.classpath"/>
+  </path>
+  
+  
+  <patternset id="excluded.from.module.mercurial-tests">
+    <patternset refid="ignored.files"/>
+  </patternset>
+  
+  <patternset id="excluded.from.compilation.mercurial-tests">
+    <patternset refid="excluded.from.module.mercurial-tests"/>
+  </patternset>
+  
+  <path id="mercurial-tests.module.test.sourcepath">
+    <dirset dir="${module.mercurial-tests.basedir}/mercurial-tests">
+      <include name="src"/>
+    </dirset>
+  </path>
+  
+  
+  <target name="compile.module.mercurial-tests" depends="compile.module.mercurial-tests.production,compile.module.mercurial-tests.tests" description="Compile module mercurial-tests"/>
+  
+  <target name="compile.module.mercurial-tests.production" depends="compile.module.mercurial-server,compile.module.mercurial-common,compile.module.mercurial-agent" description="Compile module mercurial-tests; production classes"/>
+  
+  <target name="compile.module.mercurial-tests.tests" depends="compile.module.mercurial-tests.production" description="compile module mercurial-tests; test classes" unless="skip.tests">
+    <mkdir dir="${mercurial-tests.testoutput.dir}"/>
+    <javac destdir="${mercurial-tests.testoutput.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true">
+      <compilerarg line="${compiler.args.mercurial-tests}"/>
+      <bootclasspath refid="mercurial-tests.module.bootclasspath"/>
+      <classpath refid="mercurial-tests.module.classpath"/>
+      <src refid="mercurial-tests.module.test.sourcepath"/>
+      <patternset refid="excluded.from.compilation.mercurial-tests"/>
+    </javac>
+    
+    <copy todir="${mercurial-tests.testoutput.dir}">
+      <fileset dir="${module.mercurial-tests.basedir}/mercurial-tests/src">
+        <patternset refid="compiler.resources"/>
+        <type type="file"/>
+      </fileset>
+    </copy>
+  </target>
+  
+  <target name="clean.module.mercurial-tests" description="cleanup module">
+    <delete dir="${mercurial-tests.output.dir}"/>
+    <delete dir="${mercurial-tests.testoutput.dir}"/>
+  </target>
+  
+  <target name="init" description="Build initialization">
+    <!-- Perform any build initialization in this target -->
+  </target>
+  
+  <target name="clean" depends="clean.module.main, clean.module.mercurial-common, clean.module.mercurial-agent, clean.module.mercurial-server, clean.module.mercurial-tests" description="cleanup all"/>
+  
+  <target name="build.modules" depends="init, clean, compile.module.main, compile.module.mercurial-common, compile.module.mercurial-agent, compile.module.mercurial-server, compile.module.mercurial-tests" description="build all modules"/>
+  
+  <target name="all" depends="build.modules" description="build all"/>
 </project>
\ No newline at end of file