From 1e1b85270f93b3bca624c99b478f3a9a23be2395 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sat, 29 Sep 2012 23:40:46 -0400
Subject: [PATCH] Preliminary implementation of server-side forking (issue 137)

---
 build.xml |  121 ++++++++++++++++++++++++++++++++++------
 1 files changed, 103 insertions(+), 18 deletions(-)

diff --git a/build.xml b/build.xml
index 8daebf1..6ad0e46 100644
--- a/build.xml
+++ b/build.xml
@@ -117,12 +117,21 @@
 
 		<delete dir="${project.build.dir}" />
 		<mkdir dir="${project.build.dir}" />
-		<javac debug="true" srcdir="${basedir}/src" destdir="${project.build.dir}">
+		<javac debug="true" srcdir="${basedir}/src" destdir="${project.build.dir}" includeantruntime="false">
 			<include name="com/gitblit/build/Build.java" />			
 			<include name="com/gitblit/Constants.java" />
 			<include name="com/gitblit/utils/StringUtils.java" />			
 		</javac>
-		<java classpath="${project.build.dir}" classname="com.gitblit.build.Build" />
+
+		<java classpath="${project.build.dir}" classname="com.gitblit.build.Build">
+			<syspropertyset id="proxy.properties">
+				<propertyref prefix="java.net.useSystemProxies"/>
+				<propertyref prefix="http."/>
+				<propertyref prefix="https."/>
+				<propertyref prefix="ftp."/>
+				<propertyref prefix="socksProxy"/>
+			</syspropertyset>
+		</java>
 
 		<!-- Compile Project -->
 		<path id="master-classpath">
@@ -131,7 +140,7 @@
 			</fileset>
 			<pathelement path="${project.build.dir}" />				
 		</path>
-		<javac debug="true" destdir="${project.build.dir}" failonerror="false">
+		<javac debug="true" destdir="${project.build.dir}" failonerror="false" includeantruntime="false">
 			<src path="${basedir}/src" />
 			<classpath refid="master-classpath" />
 		</javac>
@@ -181,11 +190,34 @@
 			</manifest>
 		</jar>
 
+		<!-- Gitblit library dependencies -->
+		<mkdir dir="${project.deploy.dir}/ext"/>
+		<copy todir="${project.deploy.dir}/ext">
+			<fileset dir="${basedir}/ext">
+				<exclude name="junit*.jar" />
+				<exclude name="hamcrest*.jar" />
+				<exclude name="commons-net*.jar" />
+				<exclude name="*-sources.jar" />
+				<exclude name="*-javadoc.jar" />
+			</fileset>
+		</copy>
+		
 		<!-- Build the docs for the deploy -->
 		<antcall target="buildDocs" inheritall="true" inheritrefs="true">
 			<param name="docs.output.dir" value="${project.deploy.dir}/docs" />
 		</antcall>
 		
+		<!-- Copy the supported Groovy hook scripts -->
+		<mkdir dir="${project.deploy.dir}/groovy" />
+		<copy todir="${project.deploy.dir}/groovy">
+			<fileset dir="${basedir}/groovy">
+				<include name="sendmail.groovy" />
+				<include name="jenkins.groovy" />
+				<include name="protect-refs.groovy" />
+				<include name="localclone.groovy" />
+			</fileset>
+		</copy>
+	
 		<!-- Create Zip deployment -->		
 		<zip destfile="${distribution.zipfile}">
 			<fileset dir="${project.deploy.dir}">
@@ -207,9 +239,8 @@
 			<copy todir="${docs.output.dir}">
 				<!-- Copy selected Gitblit resources -->
 				<fileset dir="${project.resources.dir}">
-					<include name="bootstrap.140.css" />
-					<include name="bootstrap.gb.css" />
-					<include name="markdown.css" />
+					<include name="bootstrap/**/*" />
+					<include name="gitblit.css" />
 					<include name="gitblt_25_white.png" />
 					<include name="gitblt-favicon.png" />
 					<include name="lock_go_16x16.png" />
@@ -226,6 +257,7 @@
 				<!-- Copy Doc images -->
 				<fileset dir="${basedir}/docs">
 					<include name="*.png" />
+					<include name="*.gif" />
 				</fileset>
 			</copy>
 
@@ -343,7 +375,18 @@
 		<antcall target="buildDocs" inheritall="true" inheritrefs="true">
 			<param name="docs.output.dir" value="${project.war.dir}/WEB-INF/docs" />
 		</antcall>
-		
+
+		<!-- Copy the supported Groovy hook scripts -->
+		<mkdir dir="${project.war.dir}/WEB-INF/groovy" />
+		<copy todir="${project.war.dir}/WEB-INF/groovy">
+			<fileset dir="${basedir}/groovy">
+				<include name="sendmail.groovy" />
+				<include name="jenkins.groovy" />
+				<include name="protect-refs.groovy" />
+				<include name="localclone.groovy" />
+			</fileset>
+		</copy>
+
 		<!-- Build the WAR web.xml from the prototype web.xml and gitblit.properties --> 
 		<java classpath="${project.build.dir}" classname="com.gitblit.build.BuildWebXml">
 			<classpath refid="master-classpath" />
@@ -374,7 +417,9 @@
 				<exclude name="jcommander*.jar" />
 				<exclude name="jetty*.jar" />
 				<exclude name="junit*.jar" />
+				<exclude name="hamcrest*.jar" />
 				<exclude name="servlet*.jar" />
+				<exclude name="javax.servlet*.jar" />
 			</fileset>
 		</copy>
 
@@ -386,6 +431,7 @@
 				<exclude name="com/gitblit/tests/" />
 				<exclude name="com/gitblit/build/**" />
 				<exclude name="com/gitblit/client/**" />
+				<exclude name="com/gitblit/AddIndexedBranch*.class" />
 				<exclude name="com/gitblit/GitBlitServer*.class" />
 				<exclude name="com/gitblit/Launcher*.class" />
 				<exclude name="com/gitblit/MakeCertificate*.class" />
@@ -415,6 +461,7 @@
 				<exclude name="org.slf4j." />
 				<exclude name="com.beust." />
 				<exclude name="com.google." />
+				<exclude name="com.unboundid." />
 			</classfilter>
 			<classpath refid="master-classpath" />
 			<manifest>
@@ -443,7 +490,7 @@
 		Build a Gitblit filesystem for deployment to RedHat OpenShif Expresst
 		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 	-->
-	<target name="buildOpenShift" depends="compile" description="Build exploded WAR file suitable for deployment to OpenShift Express">
+	<target name="buildExpress" depends="compile" description="Build exploded WAR file suitable for deployment to OpenShift Express">
 		<echo>Building Gitblit Express for RedHat OpenShift ${gb.version}</echo>
 		
 		<delete dir="${project.express.dir}" />
@@ -469,6 +516,16 @@
 		<copy tofile="${deployments.root}/WEB-INF/reference.properties" 
 			file="${basedir}/distrib/gitblit.properties"/>
 
+		<!-- Copy the supported Groovy hook scripts -->
+		<mkdir dir="${deployments.root}/WEB-INF/groovy" />
+		<copy todir="${deployments.root}/WEB-INF/groovy">
+			<fileset dir="${basedir}/groovy">
+				<include name="sendmail.groovy" />
+				<include name="jenkins.groovy" />
+				<include name="protect-refs.groovy" />
+			</fileset>
+		</copy>
+					
 		<!-- Build the WAR web.xml from the prototype web.xml and gitblit.properties -->
 		<!-- THIS FILE IS NOT OVERRIDDEN ONCE IT IS BUILT!!! -->
 		<java classpath="${project.build.dir}" classname="com.gitblit.build.BuildWebXml">
@@ -500,13 +557,14 @@
 				<exclude name="jcommander*.jar" />
 				<exclude name="jetty*.jar" />
 				<exclude name="junit*.jar" />
+				<exclude name="hamcrest*.jar" />
 				<exclude name="servlet*.jar" />
+				<exclude name="javax.servlet*.jar" />
 			</fileset>
 		</copy>
 
 		<!-- Gitblit classes -->
-		<mkdir dir="${deployments.root}/WEB-INF/classes"/>
-		<copy todir="${deployments.root}/WEB-INF/classes">
+		<jar destfile="${deployments.root}/WEB-INF/lib/gitblit-${gb.version}.jar">
 			<fileset dir="${project.build.dir}">
 				<exclude name="WEB-INF/" />
 				<exclude name="com/gitblit/tests/" />
@@ -516,7 +574,7 @@
 				<exclude name="com/gitblit/Launcher*.class" />
 				<exclude name="com/gitblit/MakeCertificate*.class" />
 			</fileset>
-		</copy>
+		</jar>
 
 		<!-- Build Express Zip file -->
 		<zip destfile="${express.zipfile}">
@@ -538,7 +596,9 @@
 			<resource file="${basedir}/src/com/gitblit/client/splash.png" />
 			<resource file="${basedir}/resources/gitblt-favicon.png" />
 			<resource file="${basedir}/resources/gitweb-favicon.png" />
+			<resource file="${basedir}/resources/git-orange-16x16.png" />
 			<resource file="${basedir}/resources/user_16x16.png" />
+			<resource file="${basedir}/resources/users_16x16.png" />
 			<resource file="${basedir}/resources/settings_16x16.png" />
 			<resource file="${basedir}/resources/lock_go_16x16.png" />
 			<resource file="${basedir}/resources/lock_pull_16x16.png" />
@@ -555,6 +615,7 @@
 			<resource file="${basedir}/resources/commit_merge_16x16.png" />
 			<resource file="${basedir}/resources/blank.png" />
 			<resource file="${basedir}/src/com/gitblit/wicket/GitBlitWebApp.properties" />
+			<resource file="${basedir}/src/com/gitblit/wicket/GitBlitWebApp_ja.properties" />
 
 			<class name="com.gitblit.client.GitblitManagerLauncher" />
 			<classfilter>
@@ -564,6 +625,7 @@
 				<exclude name="org.slf4j." />
 				<exclude name="com.beust." />
 				<exclude name="com.google." />
+				<exclude name="com.unboundid." />
 			</classfilter>
 			<classpath refid="master-classpath" />
 			<manifest>
@@ -650,6 +712,9 @@
 					<include name="rome*.jar" />
 					<exclude name="rome*-sources.jar" />
 					<exclude name="rome*-javadoc.jar" />
+					<include name="jdom*.jar" />
+					<exclude name="jdom*-sources.jar" />
+					<exclude name="jdom*-javadoc.jar" />
 				</fileset>
 			</zip>
 		</target>
@@ -670,9 +735,8 @@
 		<copy todir="${project.site.dir}">
 			<!-- Copy selected Gitblit resources -->
 			<fileset dir="${project.resources.dir}">
-				<include name="bootstrap.140.css" />
-				<include name="bootstrap.gb.css" />
-				<include name="markdown.css" />
+				<include name="bootstrap/**/*" />
+				<include name="gitblit.css" />
 				<include name="gitblt_25_white.png" />
 				<include name="gitblt-favicon.png" />
 				<include name="lock_go_16x16.png" />
@@ -689,6 +753,7 @@
 			<!-- Copy Doc images -->
 			<fileset dir="${basedir}/docs">
 				<include name="*.png" />
+				<include name="*.gif" />
 				<include name="*.js" />
 			</fileset>
 		</copy>
@@ -809,7 +874,7 @@
 		Compile from source, publish binaries, and build & deploy site
 		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 	-->
-	<target name="buildAll" depends="buildGO,buildWAR,buildOpenShift,buildFederationClient,buildManager,buildApiLibrary,buildSite">		
+	<target name="buildAll" depends="buildGO,buildWAR,buildExpress,buildFederationClient,buildManager,buildApiLibrary,buildSite">		
 		<!-- Cleanup -->
 		<delete dir="${project.build.dir}" />
 		<delete dir="${project.war.dir}" />
@@ -817,13 +882,33 @@
 		<delete dir="${project.express.dir}" />
 	</target>
 
+	
+	<!--
+		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+		Update the gh-pages branch with the current site
+		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	-->
+	<target name="updateGhPages" depends="buildSite">
+		<!-- Build gh-pages branch -->
+		<java classpath="${project.build.dir}" classname="com.gitblit.build.BuildGhPages">
+			<classpath refid="master-classpath" />
+			<arg value="--sourceFolder" />
+			<arg value="${basedir}/site" />
+
+			<arg value="--repository" />
+			<arg value="${basedir}" />
+			
+			<arg value="--obliterate" />
+		</java>
+	</target>
+	
 
 	<!-- 
 		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		Publish binaries to Google Code
 		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 	-->
-	<target name="publishBinaries" depends="buildGO,buildWAR,buildOpenShift,buildFederationClient,buildManager" description="Publish the Gitblit binaries to Google Code">
+	<target name="publishBinaries" depends="buildGO,buildWAR,buildExpress,buildFederationClient,buildManager,buildApiLibrary" description="Publish the Gitblit binaries to Google Code">
 
 		<echo>Uploading Gitblit ${gb.version} binaries</echo>
 
@@ -896,7 +981,7 @@
 		You must add ext/commons-net-1.4.0.jar to your ANT classpath.
 		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 	-->
-	<target name="publishSite" depends="buildSite" description="Publish the Gitblit site to a webserver (requires ext/commons-net-1.4.0.jar)" >
+	<target name="publishSite" depends="buildSite,updateGhPages" description="Publish the Gitblit site to a webserver (requires ext/commons-net-1.4.0.jar)" >
 
 		<echo>Uploading Gitblit ${gb.version} website</echo>
 
@@ -922,4 +1007,4 @@
 		<delete dir="${project.war.dir}" />
 		<delete dir="${project.deploy.dir}" />
 	</target>
-</project>
+</project>

--
Gitblit v1.9.1