diff --git a/BaseLib/CMakeLists.txt b/BaseLib/CMakeLists.txt
index 888f514266674a18ff140f71fc1cc150f0503225..ad1c17ab64a915ebf7c841898e7a8148fd00eef6 100644
--- a/BaseLib/CMakeLists.txt
+++ b/BaseLib/CMakeLists.txt
@@ -2,6 +2,9 @@
 
 GET_SOURCE_FILES(SOURCES)
 
+CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/GitSHA1.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/GitSHA1.cpp" @ONLY)
+LIST(APPEND SOURCES "${CMAKE_CURRENT_BINARY_DIR}/GitSHA1.cpp" GitSHA1.h)
+
 # Create the library
 ADD_LIBRARY( BaseLib STATIC ${SOURCES})
 
@@ -17,4 +20,4 @@ TARGET_LINK_LIBRARIES( BaseLib
 
 IF(WIN32)
 	TARGET_LINK_LIBRARIES( BaseLib WinMM )
-ENDIF()
\ No newline at end of file
+ENDIF()
diff --git a/BaseLib/GitSHA1.cpp.in b/BaseLib/GitSHA1.cpp.in
new file mode 100644
index 0000000000000000000000000000000000000000..7198e7d92ad0c3aa6014fc45e24868228d4853ee
--- /dev/null
+++ b/BaseLib/GitSHA1.cpp.in
@@ -0,0 +1,14 @@
+#include <stdio.h>
+#include "GitSHA1.h"
+
+#define GIT_SHA1 "@GIT_SHA1@"
+const char g_GIT_SHA1[] = GIT_SHA1;
+
+#define GIT_SHA1_SHORT "@GIT_SHA1_SHORT@"
+const char g_GIT_SHA1_SHORT[] = GIT_SHA1_SHORT;
+
+void dummy()
+{
+	printf(g_GIT_SHA1);
+	printf(g_GIT_SHA1_SHORT);
+}
diff --git a/BaseLib/GitSHA1.h b/BaseLib/GitSHA1.h
new file mode 100644
index 0000000000000000000000000000000000000000..599cd7d3417cc86c285053b2cab5858ef29cf718
--- /dev/null
+++ b/BaseLib/GitSHA1.h
@@ -0,0 +1,2 @@
+extern const char g_GIT_SHA1[];
+extern const char g_GIT_SHA1_SHORT[];
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 94621bfc4aebb8ec59a57e29763a699f988c033d..bd2da6b5cb9d20957109b500dff5615ba4c56010 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,7 +14,7 @@ PROJECT( OGS-6 )
 SET (OGS_VERSION_MAJOR 6)
 SET (OGS_VERSION_MINOR 0)
 SET (OGS_VERSION_PATCH "0 Beta")
-SET (OGS_RELEASE_PERSONS "LB/TF/KR")
+SET (OGS_RELEASE_PERSONS "Core developers")
 SET (OGS_VERSION "${OGS_VERSION_MAJOR}.${OGS_VERSION_MINOR}.${OGS_VERSION_PATCH}")
 SET (OGS_VERSION_AND_PERSONS "${OGS_VERSION} (${OGS_RELEASE_PERSONS})")
 SET (OGS_DATE "2012-08-20")
diff --git a/Gui/mainwindow.cpp b/Gui/mainwindow.cpp
index 79c44c1aeba46b64bc2ebeb3bd22f93bdcb2d48e..c16a9ba8f38acb0281498b3093471917cde273c7 100644
--- a/Gui/mainwindow.cpp
+++ b/Gui/mainwindow.cpp
@@ -18,6 +18,8 @@
 // ThirdParty/logog
 #include "logog/include/logog.hpp"
 
+// BaseLib
+#include "GitSHA1.h"
 #include "FileTools.h"
 
 // models
@@ -693,7 +695,7 @@ void MainWindow::loadFile(ImportFileType::type t, const QString &fileName)
 			settings.setValue("lastOpenedTetgenFileDirectory", QFileInfo(fileName).absolutePath());
 			QString element_fname(fi.path() + "/" + fi.completeBaseName() + ".ele");
 
-			if (!fileName.isEmpty()) 
+			if (!fileName.isEmpty())
 			{
 				FileIO::TetGenInterface tetgen;
 				MeshLib::Mesh* mesh (tetgen.readTetGenMesh(fileName.toStdString(), element_fname.toStdString()));
@@ -748,21 +750,12 @@ void MainWindow::about()
 {
 	QString about("<a href='http://www.opengeosys.org'>http://www.opengeosys.org</a><br /><br />");
 	QString ogsVersion = QString(OGS_VERSION_AND_PERSONS);
-	about.append(tr("Built on %1<br />OGS Version: %2<br /><br />").arg(
-		QDate::currentDate().toString(Qt::ISODate)).arg(ogsVersion));
-#ifdef OGS_BUILD_INFO
-#ifdef SVN_REVISION
-	about.append(QString("Svn commit: %1<br />").arg(SVN_REVISION));
-#endif
-#ifdef GIT_COMMIT_INFO
-	QString gitCommit = QString(GIT_COMMIT_INFO);
-	about.append(QString("Git commit: %1<br />").arg(gitCommit.mid(7)));
-#endif // GIT_COMMIT_INFO
-#ifdef GIT_BRANCH_INFO
-	QString gitBranch = QString(GIT_BRANCH_INFO);
-	about.append(QString("Git branch: %1<br />").arg(gitBranch.mid(2)));
-#endif // GIT_BRANCH_INFO
-#endif // OGS_BUILD_INFO
+	about.append(QString("Version: %1<br /><br />").arg(ogsVersion));
+
+	about.append(QString("Git commit: <a href='https://github.com/ufz/ogs/commit/%1'>%1</a><br />")
+		.arg(QString(g_GIT_SHA1_SHORT)));
+	about.append(QString("Built date: %1<br />").arg(QDate::currentDate().toString(Qt::ISODate)));
+
 	QMessageBox::about(this, "About OpenGeoSys 6", about);
 }
 
diff --git a/scripts/cmake/CMakeSetup.cmake b/scripts/cmake/CMakeSetup.cmake
index 3866848e940dc0d40dc6100472a77345c90a59cb..56c037552a98f45e50fa025a665a3fcc867a8678 100644
--- a/scripts/cmake/CMakeSetup.cmake
+++ b/scripts/cmake/CMakeSetup.cmake
@@ -8,10 +8,15 @@ INCLUDE(UseBackportedModules)
 INCLUDE(OptionRequires)
 INCLUDE(CppcheckTargets)
 INCLUDE(GetCompilerInfoString)
+
 INCLUDE(ProcessorCount)
 ProcessorCount(NUM_PROCESSORS)
 SET(NUM_PROCESSORS ${NUM_PROCESSORS} CACHE STRING "Processor count")
 
+INCLUDE(GetGitRevisionDescription)
+GET_GIT_HEAD_REVISION(GIT_REFSPEC GIT_SHA1)
+STRING(SUBSTRING ${GIT_SHA1} 0 8 GIT_SHA1_SHORT)
+
 # Suppress warning on setting policies
 CMAKE_POLICY(SET CMP0011 OLD)
 
diff --git a/scripts/cmake/cmake/GetGitRevisionDescription.cmake b/scripts/cmake/cmake/GetGitRevisionDescription.cmake
index f6f07ca793f6762ac6c8fd33cf7db02b66730383..c8d27f2e8ce494c96404086ce58982239916a44c 100644
--- a/scripts/cmake/cmake/GetGitRevisionDescription.cmake
+++ b/scripts/cmake/cmake/GetGitRevisionDescription.cmake
@@ -3,16 +3,16 @@
 # These functions force a re-configure on each git commit so that you can
 # trust the values of the variables in your build system.
 #
-#  get_git_head_revision(<refspecvar> <hashvar> [<additonal arguments to git describe> ...])
+#  get_git_head_revision(<refspecvar> <hashvar> [<additional arguments to git describe> ...])
 #
 # Returns the refspec and sha hash of the current head revision
 #
-#  git_describe(<var> [<additonal arguments to git describe> ...])
+#  git_describe(<var> [<additional arguments to git describe> ...])
 #
 # Returns the results of git describe on the source tree, and adjusting
 # the output so that it tests false if an error occurs.
 #
-#  git_get_exact_tag(<var> [<additonal arguments to git describe> ...])
+#  git_get_exact_tag(<var> [<additional arguments to git describe> ...])
 #
 # Returns the results of git describe --exact-match on the source tree,
 # and adjusting the output so that it tests false if there was no exact
@@ -40,21 +40,40 @@ set(__get_git_revision_description YES)
 get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
 
 function(get_git_head_revision _refspecvar _hashvar)
-	set(GIT_DIR "${CMAKE_SOURCE_DIR}/.git")
-	if(NOT EXISTS "${GIT_DIR}")
-		# not in git
-		set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
-		set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
-		return()
+	set(GIT_PARENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
+	set(GIT_DIR "${GIT_PARENT_DIR}/.git")
+	while(NOT EXISTS "${GIT_DIR}")	# .git dir not found, search parent directories
+		set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}")
+		get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH)
+		if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT)
+			# We have reached the root directory, we are not in git
+			set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
+			set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
+			return()
+		endif()
+		set(GIT_DIR "${GIT_PARENT_DIR}/.git")
+	endwhile()
+	# check if this is a submodule
+	if(NOT IS_DIRECTORY ${GIT_DIR})
+		file(READ ${GIT_DIR} submodule)
+		string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule})
+		get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
+		get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE)
 	endif()
 	set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
 	if(NOT EXISTS "${GIT_DATA}")
 		file(MAKE_DIRECTORY "${GIT_DATA}")
 	endif()
+
+	if(NOT EXISTS "${GIT_DIR}/HEAD")
+		return()
+	endif()
 	set(HEAD_FILE "${GIT_DATA}/HEAD")
 	configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY)
 
-	configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in" "${GIT_DATA}/grabRef.cmake" @ONLY)
+	configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in"
+		"${GIT_DATA}/grabRef.cmake"
+		@ONLY)
 	include("${GIT_DATA}/grabRef.cmake")
 
 	set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE)
@@ -67,11 +86,11 @@ function(git_describe _var)
 	endif()
 	get_git_head_revision(refspec hash)
 	if(NOT GIT_FOUND)
-		set(${_var} "GIT-NOTFOUND"  PARENT_SCOPE)
+		set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
 		return()
 	endif()
 	if(NOT hash)
-		set(${_var} "HEAD-HASH-NOTFOUND"  PARENT_SCOPE)
+		set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
 		return()
 	endif()
 
@@ -85,10 +104,17 @@ function(git_describe _var)
 
 	#message(STATUS "Arguments to execute_process: ${ARGN}")
 
-	execute_process(COMMAND "${GIT_EXECUTABLE}" describe ${hash} ${ARGN}
-		WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
-		RESULT_VARIABLE res
-		OUTPUT_VARIABLE out
+	execute_process(COMMAND
+		"${GIT_EXECUTABLE}"
+		describe
+		${hash}
+		${ARGN}
+		WORKING_DIRECTORY
+		"${CMAKE_SOURCE_DIR}"
+		RESULT_VARIABLE
+		res
+		OUTPUT_VARIABLE
+		out
 		ERROR_QUIET
 		OUTPUT_STRIP_TRAILING_WHITESPACE)
 	if(NOT res EQUAL 0)
diff --git a/scripts/cmake/cmake/GetGitRevisionDescription.cmake.in b/scripts/cmake/cmake/GetGitRevisionDescription.cmake.in
index 1b057b7056295567f714ead7104771f2d47ec402..6faa374a8d9e618769428179557a206893b5224b 100644
--- a/scripts/cmake/cmake/GetGitRevisionDescription.cmake.in
+++ b/scripts/cmake/cmake/GetGitRevisionDescription.cmake.in
@@ -1,4 +1,4 @@
-# 
+#
 # Internal file for GetGitRevisionDescription.cmake
 #
 # Requires CMake 2.6 or newer (uses the 'function' command)
@@ -22,7 +22,7 @@ if(HEAD_CONTENTS MATCHES "ref")
 	# named branch
 	string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
 	if(EXISTS "@GIT_DIR@/${HEAD_REF}")
-	configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
+		configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
 	elseif(EXISTS "@GIT_DIR@/logs/${HEAD_REF}")
 		configure_file("@GIT_DIR@/logs/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
 		set(HEAD_HASH "${HEAD_REF}")
@@ -33,6 +33,6 @@ else()
 endif()
 
 if(NOT HEAD_HASH)
-file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
-string(STRIP "${HEAD_HASH}" HEAD_HASH)
+	file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
+	string(STRIP "${HEAD_HASH}" HEAD_HASH)
 endif()
diff --git a/scripts/docs/Doxyfile.in b/scripts/docs/Doxyfile.in
index 6aad12c303f1b24871252dab46ad740bfdf4eba2..3c261e5ab8a511550a1fdbb8c6f910d2081d348e 100644
--- a/scripts/docs/Doxyfile.in
+++ b/scripts/docs/Doxyfile.in
@@ -32,13 +32,13 @@ DOXYFILE_ENCODING      = UTF-8
 # title of most generated pages and in a few other places.
 # The default value is: My Project.
 
-PROJECT_NAME           = "OGS"
+PROJECT_NAME           = "OGS ${OGS_VERSION}"
 
 # The PROJECT_NUMBER tag can be used to enter a project or revision number. This
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = ${OGS_VERSION}
+PROJECT_NUMBER         = ${GIT_SHA1_SHORT}
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a