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
 
