change publish nightly to udpate the latest in a smartest way (by comparing the repository and the filesystem if the latest is still the same)
diff --git a/hudson-scripts/init/2_fun_updateLatestRepository.sh b/hudson-scripts/init/2_fun_updateLatestRepository.sh
new file mode 100644
index 0000000..aa31ba1
--- /dev/null
+++ b/hudson-scripts/init/2_fun_updateLatestRepository.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+# ====================================================================
+# Copyright (c) 2014 Obeo
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#    Obeo - initial API and implementation
+# ====================================================================
+
+updateLatest() {
+	local latestPath=$1
+	local prefix=$2
+	local relpath=$3
+	local latestRepoName=$4
+
+	local currentPwd=$(pwd)
+	cd ${UPDATE_NIGHTLY_HOME}
+	local allFilesWithPrefix=( $(echo "${prefix}"* | tr ' ' '\n' | grep -E '[0-9]+\.[0-9]+\.[0-9]+.*' || true) )    
+	cd ${currentPwd}
+
+	if [ ${#allFilesWithPrefix[@]} -gt 0 ]; then
+		local latestUpdatePath=$( echo ${allFilesWithPrefix[@]} | tr ' ' '\n' | sort | tail -n 1 )
+		if [ ! -z "${latestUpdatePath}" ]; then
+			local latestUpdateSite_onDisk="file:${UPDATE_NIGHTLY_HOME}/${latestUpdatePath}"
+			LSDEBUG "Latest update site on disk is '${latestUpdateSite_onDisk}'"
+			if [ -d "${latestPath}" ]; then
+				local latestUpdateSite_inRepo=( $(composite-repository -location "${latestPath}" -list) )
+				if [ ${#latestUpdateSite_inRepo[@]} -gt 0 ]; then
+					LSDEBUG "Latest update site in '${latestPath}' is '${latestUpdateSite_inRepo[0]}'"
+					if [ "${latestUpdateSite_inRepo[0]}" != "${latestUpdateSite_onDisk}" ]; then
+						LSINFO "Creating redirection from '${latestPath}' to '${latestUpdatePath}'" 
+						createRedirect "${latestPath}" "${relpath}/${latestUpdatePath}" "${latestRepoName}"
+					else
+						LSINFO "'${latestPath}' is already referencing the latest update site. Do nothing"
+					fi
+				else
+					LSDEBUG "Latest update site in '${latestPath}' is empty"
+					LSINFO "Creating redirection from '${latestPath}' to '${latestUpdatePath}'" 
+					createRedirect "${latestPath}" "${relpath}/${latestUpdatePath}" "${latestRepoName}"
+				fi
+			else # folder nightly/latest does not exist
+				LSDEBUG "Folder '${latestPath}' does not exist, it will be created"
+				LSINFO "Creating redirection from '${latestPath}' to '${latestUpdatePath}'" 
+				createRedirect "${latestPath}" "${relpath}/${latestUpdatePath}" "${latestRepoName}"
+			fi
+		else 
+			LSERROR "Some files seems to be update site starting with '${prefix}' but we could not tail the list"
+		fi
+	else
+		LSDEBUG "There is no folder that seem to be an update site in '${UPDATE_NIGHTLY_HOME}'. No one have a name that start with '${prefix}' and that match the regex '[0-9]+\.[0-9]+\.[0-9]+.*'"
+	fi
+}
\ No newline at end of file
diff --git a/hudson-scripts/publish-nightly.sh b/hudson-scripts/publish-nightly.sh
index ee062f5..f048e1a 100755
--- a/hudson-scripts/publish-nightly.sh
+++ b/hudson-scripts/publish-nightly.sh
@@ -10,13 +10,12 @@
 #    Obeo - initial API and implementation
 # ====================================================================
 
-[ -z "${GIT_BRANCH}" -o -z "${UPDATE_SITE__ARTIFACT_URL}" -o -z "${UPDATE_SITE__ARTIFACT_NAME}" -o -z "${UPDATE_SITE__UNQUALIFIED_VERSION}" -o -z "${UPDATE_SITE__QUALIFIED_VERSION}" ] && {
+[ -z "${UPDATE_SITE__ARTIFACT_URL}" -o -z "${UPDATE_SITE__ARTIFACT_NAME}" -o -z "${UPDATE_SITE__UNQUALIFIED_VERSION}" -o -z "${UPDATE_SITE__QUALIFIED_VERSION}" ] && {
      echo "Execution aborted.
 
 One or more of the required variables is not set. They are normally
 provided by the Hudson build.
 
-- GIT_BRANCH: the git branch that has been build. 
 - UPDATE_SITE__ARTIFACT_URL: the URL where the zipped update site to publish can be donwload.
 - UPDATE_SITE__ARTIFACT_NAME: the filename of the zipped update site.
 - UPDATE_SITE__UNQUALIFIED_VERSION: the unqualified version of the update site to publish.
@@ -27,63 +26,67 @@
 
 source "$(dirname "${0}")/init.sh"
 
-LSINFO "Publishing nightly build (${UPDATE_SITE__QUALIFIED_VERSION}) of ${PROJECT_NAME}"
+LSINFO "== Publishing nightly build '${PROJECT_NAME} ${UPDATE_SITE__QUALIFIED_VERSION}' == "
 
 # the update site
 
-for zip in *.zip;
-do
+for zip in *".zip"; do
 	LSDEBUG "Removing previous zipped update site '${zip}'"
 	rm -f ${zip}
 done 
 
+for folder in "${UPDATE_SITE__UNQUALIFIED_VERSION}"*; do
+	LSDEBUG "Removing previous update site folder '${folder}'"
+	rm -rf ${folder}
+done
+
 LSINFO "Downloading '${UPDATE_SITE__ARTIFACT_URL}'"
 wget -q --no-check-certificate ${UPDATE_SITE__ARTIFACT_URL} -O - > ${UPDATE_SITE__ARTIFACT_NAME}
 
 STREAM="$(echo ${UPDATE_SITE__UNQUALIFIED_VERSION} | sed-regex 's/^([0-9]+\.[0-9]+)\.[0-9]+$/\1/').x"
 LSDEBUG "Stream name is '${STREAM}'"
 
-if [ -d ${UPDATE_SITE__QUALIFIED_VERSION} ];then
-	LSDEBUG "Removing folder '${UPDATE_SITE__QUALIFIED_VERSION}'"
+if [ -d "${UPDATE_SITE__QUALIFIED_VERSION}" ];then
+	LSINFO "Removing folder '${UPDATE_SITE__QUALIFIED_VERSION}'"
 	rm -rf ${UPDATE_SITE__QUALIFIED_VERSION}
+else
+	LSDEBUG "Folder '${UPDATE_SITE__QUALIFIED_VERSION}' does not already exist, do nothing"
 fi
-LSDEBUG "Unziping '${UPDATE_SITE__ARTIFACT_NAME}'"
+LSINFO "Unziping '${UPDATE_SITE__ARTIFACT_NAME}'"
 unzip -qq ${UPDATE_SITE__ARTIFACT_NAME} -d ${UPDATE_SITE__QUALIFIED_VERSION}
 
-if [ ! -d ${UPDATE_NIGHTLY_HOME} ]; then
-	LSDEBUG "Creating folder '${UPDATE_NIGHTLY_HOME}'"
+if [ ! -d "${UPDATE_NIGHTLY_HOME}" ]; then
+	LSINFO "Creating folder '${UPDATE_NIGHTLY_HOME}'"
 	mkdir -p ${UPDATE_NIGHTLY_HOME}
+else
+	LSDEBUG "Folder '${UPDATE_NIGHTLY_HOME}' already exists, do nothing"
 fi
 LSINFO "Copying update site to '${UPDATE_NIGHTLY_HOME}'"
 cp -rf ${UPDATE_SITE__QUALIFIED_VERSION} ${UPDATE_NIGHTLY_HOME}
 
 ## stream update
 
-LSINFO "Adding '${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}' to '${UPDATE_NIGHTLY_HOME}/${STREAM}'"
+LSINFO "Adding '../${UPDATE_SITE__QUALIFIED_VERSION}' to '${UPDATE_NIGHTLY_HOME}/${STREAM}'"
 composite-repository \
 	-location "${UPDATE_NIGHTLY_HOME}/${STREAM}" \
-	-add "${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}" \
+	-add "../${UPDATE_SITE__QUALIFIED_VERSION}" \
 	-repositoryName "${PROJECT_NAME} ${STREAM} nightly builds" \
 	-compressed
 createP2Index "${UPDATE_NIGHTLY_HOME}/${STREAM}"
 
-LSINFO "Creating redirection from '${UPDATE_NIGHTLY_HOME}/${STREAM}/latest' to '${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}'"
-createRedirect "${UPDATE_NIGHTLY_HOME}/${STREAM}/latest" "${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}" "${PROJECT_NAME} ${STREAM} latest nightly build"
+updateLatest "${UPDATE_NIGHTLY_HOME}/${STREAM}/latest" "${UPDATE_SITE__UNQUALIFIED_VERSION}" "../.." "${PROJECT_NAME} ${STREAM} latest nightly build"
 
-## all updates
-
-LSINFO "Adding '${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}' to '${UPDATE_NIGHTLY_HOME}'"
+LSINFO "Adding '${UPDATE_SITE__QUALIFIED_VERSION}' to '${UPDATE_NIGHTLY_HOME}'"
 composite-repository \
 	-location "${UPDATE_NIGHTLY_HOME}" \
-	-add "${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}" \
+	-add "${UPDATE_SITE__QUALIFIED_VERSION}" \
 	-repositoryName "${PROJECT_NAME} nightly builds" \
 	-compressed
 createP2Index "${UPDATE_NIGHTLY_HOME}"
 
-if [ ${GIT_BRANCH} = "master" ]; then
-	LSINFO "On master branch, then create redirection from '${UPDATE_NIGHTLY_HOME}/latest' to '${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}'"
-	createRedirect "${UPDATE_NIGHTLY_HOME}/latest" "${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}" "${PROJECT_NAME} latest nightly build"
-fi
+updateLatest "${UPDATE_NIGHTLY_HOME}/latest" "" ".." "${PROJECT_NAME} latest nightly build"
+
+LSINFO "== '${PROJECT_NAME} ${UPDATE_SITE__QUALIFIED_VERSION}' has been published @ '${UPDATE_NIGHTLY_URL}/${UPDATE_SITE__QUALIFIED_VERSION}' == "
 
 # the javadoc